From 68636182a416af30e24eb979820c00f6eed30bdd Mon Sep 17 00:00:00 2001 From: Corey Butler <770982+coreybutler@users.noreply.github.com> Date: Mon, 30 Dec 2024 16:24:29 -0600 Subject: [PATCH] add a local build tool --- build.js | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 build.js diff --git a/build.js b/build.js new file mode 100644 index 00000000..13a65bf1 --- /dev/null +++ b/build.js @@ -0,0 +1,48 @@ +// This is a deno helper script to locally build the installer using Inno Setup +// Yeah, I know it's not Node, but we need to compile this and Node SEAs on Win32 are a PITA. +const content = await Deno.readTextFile('./nvm.iss') +const data = JSON.parse(await Deno.readTextFile('./src/manifest.json')) +const {version} = data +const output = content.replaceAll('{{VERSION}}', version) +await Deno.writeTextFile('./.tmp.iss', output) + +console.log('Viewing /.tmp.iss') +output.split("\n").forEach((line, num) => { + let n = `${num+1}` + while (n.length < 3) { + n = ' ' + n + } + + console.log(`${n} | ${line}`) +}) + +const command = await new Deno.Command('.\\assets\\buildtools\\iscc.exe', { + args: ['.\\.tmp.iss'], + stdout: 'piped', + stderr: 'piped', +}) + +const process = command.spawn(); + +// Stream stdout +(async () => { + const decoder = new TextDecoder(); + for await (const chunk of process.stdout) { + console.log(decoder.decode(chunk)); + } +})(); + +// Stream stderr +(async () => { + const decoder = new TextDecoder(); + for await (const chunk of process.stderr) { + console.error(decoder.decode(chunk)); + } +})(); + +// Wait for completion +const status = await process.status; +Deno.remove('.\\.tmp.iss'); +if (!status.success) { + Deno.exit(status.code); +}