diff --git a/package.json b/package.json index 7013f47c..8604a6cd 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "license": "MIT", "scripts": { "dev": "node ./scripts/dev-web-hmr.mjs", - "oc-dev": "bun scripts/oc-dev.mjs", + "oc-dev": "node scripts/oc-dev.mjs", "build": "bun run --filter '*' build", "build:web": "bun run --cwd packages/web build", "build:ui": "bun run --cwd packages/ui build", diff --git a/scripts/oc-dev.mjs b/scripts/oc-dev.mjs index b6c46dba..94170fd2 100755 --- a/scripts/oc-dev.mjs +++ b/scripts/oc-dev.mjs @@ -44,7 +44,7 @@ const isMac = process.platform === 'darwin'; function printHelp() { console.log(`Usage: bun run oc-dev [action] [options] - bun scripts/oc-dev.mjs [action] [options] + node scripts/oc-dev.mjs [action] [options] Actions: build-deploy-web Build web package and deploy @@ -493,19 +493,27 @@ function startVsCodeExtension() { } async function installVsCodeExtensionLocal(options) { - const cleanup = await chooseValue(options.vsixCleanup, [ - { value: 'delete', label: 'Delete VSIX after install' }, - { value: 'keep', label: 'Keep VSIX after install' }, - ], 'Select VSIX cleanup mode'); + let cleanup = options.vsixCleanup; + if (!cleanup && isTty) { + cleanup = await chooseValue('', [ + { value: 'delete', label: 'Delete VSIX after install' }, + { value: 'keep', label: 'Keep VSIX after install' }, + ], 'Select VSIX cleanup mode'); + } + cleanup ||= 'delete'; + if (!['delete', 'keep'].includes(cleanup)) throw new Error('Invalid --vsix-cleanup. Use delete or keep.'); + const vscodeDir = path.join(repoRoot, 'packages/vscode'); step('Building VS Code extension', () => run('bun', ['run', '--cwd', 'packages/vscode', 'build'])); - removeFilesByPrefixSuffix(vscodeDir, 'openchamber-', '.vsix'); + step('Removing found VSIX package(s) before install flow', () => removeFilesByPrefixSuffix(vscodeDir, 'openchamber-', '.vsix')); step('Packaging VSIX', () => run('bunx', ['vsce', 'package', '--no-dependencies'], { cwd: vscodeDir })); - run('code', ['--uninstall-extension', 'fedaykindev.openchamber'], { label: 'uninstall old extension', allowFail: true }); - const vsix = latestFileByExtensions(vscodeDir, ['.vsix']); - if (!vsix) throw new Error('VSIX package was not created.'); - step('Installing VSIX locally', () => run('code', ['--install-extension', vsix])); - if (cleanup === 'delete') removeFilesByPrefixSuffix(vscodeDir, 'openchamber-', '.vsix'); + step('Installing VSIX locally', () => { + run('code', ['--uninstall-extension', 'fedaykindev.openchamber'], { label: 'uninstall old extension', allowFail: true }); + run('code --install-extension packages/vscode/openchamber-*.vsix', [], { shell: true, label: 'install VSIX' }); + }); + if (cleanup === 'delete') { + step('Removing local VSIX package(s) after install', () => removeFilesByPrefixSuffix(vscodeDir, 'openchamber-', '.vsix')); + } } async function createRelease(options) {