From 219d0146e00f219d188e659e55ad23cf8fe5d7fb Mon Sep 17 00:00:00 2001 From: fofolee Date: Mon, 25 Apr 2022 08:27:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9enterData=E7=9A=84=E8=B5=8B?= =?UTF-8?q?=E5=80=BC=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin/preload.js | 38 +++++++++++++++++------------ src/App.vue | 4 +-- src/components/CommandRunResult.vue | 5 +--- 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/plugin/preload.js b/plugin/preload.js index cda48c2..9b96eda 100644 --- a/plugin/preload.js +++ b/plugin/preload.js @@ -212,22 +212,22 @@ if (process.platform !== 'linux') quickcommand.runInTerminal = function(cmdline, } let getCommandToLaunchTerminal = (cmdline, dir) => { - let cd = '' - if (utools.isWindows()) { - let appPath = path.join(utools.getPath('home'), '/AppData/Local/Microsoft/WindowsApps/') - // 直接 existsSync wt.exe 无效 - if (fs.existsSync(appPath) && fs.readdirSync(appPath).includes('wt.exe')) { - cmdline = cmdline.replace(/"/g, `\\"`) - if (dir) cd = `-d "${dir.replace(/\\/g, '/')}"` - command = `${appPath}wt.exe ${cd} cmd /k "${cmdline}"` - } else { - cmdline = cmdline.replace(/"/g, `^"`) - if (dir) cd = `cd /d "${dir.replace(/\\/g, '/')}" &&` - command = `${cd} start "" cmd /k "${cmdline}"` - } - } else { + let cd = '' + if (utools.isWindows()) { + let appPath = path.join(utools.getPath('home'), '/AppData/Local/Microsoft/WindowsApps/') + // 直接 existsSync wt.exe 无效 + if (fs.existsSync(appPath) && fs.readdirSync(appPath).includes('wt.exe')) { cmdline = cmdline.replace(/"/g, `\\"`) - if (dir) cd = `cd ${dir.replace(/ /g, `\\\\ `)} &&` + if (dir) cd = `-d "${dir.replace(/\\/g, '/')}"` + command = `${appPath}wt.exe ${cd} cmd /k "${cmdline}"` + } else { + cmdline = cmdline.replace(/"/g, `^"`) + if (dir) cd = `cd /d "${dir.replace(/\\/g, '/')}" &&` + command = `${cd} start "" cmd /k "${cmdline}"` + } + } else { + cmdline = cmdline.replace(/"/g, `\\"`) + if (dir) cd = `cd ${dir.replace(/ /g, `\\\\ `)} &&` if (fs.existsSync('/Applications/iTerm.app')) { command = `osascript -e 'tell application "iTerm" create window with default profile @@ -504,6 +504,7 @@ utools.isDev() && (window.godMode = code => eval(code)) // vm 模块将无法在渲染进程中使用,改用 ses 来执行代码 window.evalCodeInSandbox = (code, addVars = {}) => { let sandboxWithAD = Object.assign(addVars, getSandboxFuns()) + sandboxWithAD.quickcommand = _.cloneDeep(quickcommand) try { return new Compartment(sandboxWithAD).evaluate(code); } catch (error) { @@ -524,6 +525,11 @@ window.runCodeInSandbox = (code, callback, addVars = {}) => { } } let sandboxWithAD = Object.assign(addVars, sandbox) + sandboxWithAD.quickcommand = _.cloneDeep(quickcommand) + if (addVars.enterData) { + sandboxWithAD.quickcommand.enterData = addVars.enterData + sandboxWithAD.quickcommand.payload = addVars.enterData.payload + } try { new Compartment(sandboxWithAD).evaluate(code) } catch (e) { @@ -628,7 +634,7 @@ window.quickcommandHttpServer = () => { // 错误返回 500 if (stderr) return httpResponse(res, 500, stderr) return httpResponse(res, 200, stdout) - }, Object.assign(userVars, _.cloneDeep(quickcommand))) + }) } httpServer = http.createServer() httpServer.on('request', (req, res) => { diff --git a/src/App.vue b/src/App.vue index 12c22da..efc6f9d 100644 --- a/src/App.vue +++ b/src/App.vue @@ -105,9 +105,7 @@ export default defineComponent({ runCommandSilently(featureCode) { let command = this.utools.getDB(this.utools.DBPRE.QC + featureCode); if (command.program === "quickcommand") { - window.runCodeInSandbox(command.cmd, () => {}, { - quickcommand: _.cloneDeep(quickcommand), - }); + window.runCodeInSandbox(command.cmd, () => {}); } else { let option = command.program === "custom" diff --git a/src/components/CommandRunResult.vue b/src/components/CommandRunResult.vue index fb61c52..92a8f10 100644 --- a/src/components/CommandRunResult.vue +++ b/src/components/CommandRunResult.vue @@ -113,9 +113,6 @@ export default { utools.outPlugin(); }, 500); if (currentCommand.program === "quickcommand") { - let qc = _.cloneDeep(quickcommand); - qc.enterData = this.$root.enterData; - qc.type = this.$root.enterData.type; window.runCodeInSandbox( currentCommand.cmd, (stdout, stderr) => { @@ -126,7 +123,7 @@ export default { } !outPlugin && this.showRunResult(stdout, true, action); }, - { quickcommand: qc } + { enterData: this.$root.enterData } ); } else if (currentCommand.program === "html") { this.showRunResult(currentCommand.cmd, true, action);