From 6d25af7e427bdd74c81c923ea2de9a1dca1ad91c Mon Sep 17 00:00:00 2001 From: Ryan McHale Date: Sun, 22 May 2022 13:13:52 -0500 Subject: [PATCH] fix: write to tempdir --- main.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/main.ts b/main.ts index 078ca297..d67b30e0 100644 --- a/main.ts +++ b/main.ts @@ -1,5 +1,6 @@ -import {Notice, Plugin} from 'obsidian'; +import {normalizePath, Notice, Plugin} from 'obsidian'; import * as fs from "fs"; +import * as os from "os" import * as child_process from "child_process"; import {Outputter} from "./Outputter"; import {SettingsTab, ExecutorSettings} from "./SettingsTab"; @@ -25,6 +26,8 @@ const DEFAULT_SETTINGS: ExecutorSettings = { maxPrologAnswers: 15, } + + export default class ExecuteCodePlugin extends Plugin { settings: ExecutorSettings; @@ -145,16 +148,22 @@ export default class ExecuteCodePlugin extends Plugin { console.log("Unloaded plugin: Execute Code"); } + private getTempFile(ext: string) { + return `${os.tmpdir()}/temp_${Date.now()}.${ext}` + } + private runJavaScript(codeBlockContent: string, outputter: Outputter, button: HTMLButtonElement) { new Notice("Running..."); - const tempFileName = `temp_${Date.now()}.js`; - console.log(tempFileName); + const tempFileName = this.getTempFile('js') + console.log(`${tempFileName}`); fs.promises.writeFile(tempFileName, codeBlockContent) .then(() => { console.log(`Execute ${this.settings.nodePath} ${tempFileName}`); const args = this.settings.nodeArgs ? this.settings.nodeArgs.split(" ") : []; args.push(tempFileName); + console.log(this.settings.nodePath) + console.log(args) const child = child_process.spawn(this.settings.nodePath, args); this.handleChildOutput(child, outputter, button, tempFileName); @@ -181,7 +190,7 @@ export default class ExecuteCodePlugin extends Plugin { private runPython(codeBlockContent: string, outputter: Outputter, button: HTMLButtonElement) { new Notice("Running..."); - const tempFileName = `temp_${Date.now()}.py`; + const tempFileName = this.getTempFile('js') fs.promises.writeFile(tempFileName, codeBlockContent) .then(() => {