repo_description: A node.js version management utility for Windows. Ironically written in Go.
repo_topics: go management node node-version-manager nodejs nvm switch version version-manager versioning windows
code: // 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);
  }
  