Roo-Code/scripts/install-vsix.js
davincidreams 272a6acfed fix(pr4-review): address PR review issues and fix nightly build
- Fix HTTP-Referer URLs to point to DavinciDreams/Morse-Code
- Update src/package.json repository and homepage URLs
- Replace WeakRef<any>/setProvider(any) with typed TelemetryPropertiesProvider interface
- Remove dead AbortController boilerplate from RetryQueue.retryRequest
- Fix WebAuthService.initialize() to emit auth-state-changed event (fixes webview spinner)
- Fix nightly esbuild PKG_NAME to match stable so commands resolve correctly
- Fix .gitignore corruption (remove backtick-nnul, add proper 'nul' entry)
- Update .roo-hooks.json.example branding to Morse Code
- Update all stale test assertions (HTTP-Referer, X-Title, User-Agent)
- Add docs/cloud-backend.md — implementation plan for future cloud feature branch
- Add scripts/build-pr.js — PR test build tool with nightly slot support
- Update scripts/install-vsix.js branding

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-27 03:36:20 -04:00

109 lines
3.3 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const { execSync } = require("child_process")
const fs = require("fs")
const readline = require("readline")
// detect "yes" flags
const autoYes = process.argv.includes("-y")
// detect nightly flag
const isNightly = process.argv.includes("--nightly")
// detect editor command from args or default to "code"
const editorArg = process.argv.find((arg) => arg.startsWith("--editor="))
const defaultEditor = editorArg ? editorArg.split("=")[1] : "code"
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
})
const askQuestion = (question) => {
return new Promise((resolve) => {
rl.question(question, (answer) => {
resolve(answer)
})
})
}
async function main() {
try {
let name, version, publisher
if (isNightly) {
// For nightly, read the nightly-specific package.json and get publisher from src
const nightlyPackageJson = JSON.parse(
fs.readFileSync("./apps/vscode-nightly/package.nightly.json", "utf-8"),
)
const srcPackageJson = JSON.parse(fs.readFileSync("./src/package.json", "utf-8"))
name = nightlyPackageJson.name
version = nightlyPackageJson.version
publisher = srcPackageJson.publisher
} else {
const packageJson = JSON.parse(fs.readFileSync("./src/package.json", "utf-8"))
name = packageJson.name
version = packageJson.version
publisher = packageJson.publisher
}
const vsixFileName = `./bin/${name}-${version}.vsix`
const extensionId = `${publisher}.${name}`
const buildType = isNightly ? "Nightly" : "Regular"
console.log(`\n🚀 Morse Code VSIX Installer (${buildType})`)
console.log("========================")
console.log("\nThis script will:")
console.log("1. Uninstall any existing version of the Morse Code extension")
console.log("2. Install the newly built VSIX package")
console.log(`\nExtension: ${extensionId}`)
console.log(`VSIX file: ${vsixFileName}`)
// Ask for editor command if not provided
let editorCommand = defaultEditor
if (!editorArg && !autoYes) {
const editorAnswer = await askQuestion(
"\nWhich editor command to use? (code/cursor/code-insiders) [default: code]: ",
)
if (editorAnswer.trim()) {
editorCommand = editorAnswer.trim()
}
}
// skip prompt if auto-yes
const answer = autoYes ? "y" : await askQuestion("\nDo you wish to continue? (y/n): ")
if (answer.toLowerCase() !== "y") {
console.log("Installation cancelled.")
rl.close()
process.exit(0)
}
console.log(`\nProceeding with installation using '${editorCommand}' command...`)
try {
execSync(`${editorCommand} --uninstall-extension ${extensionId}`, { stdio: "inherit" })
} catch (e) {
console.log("Extension not installed, skipping uninstall step")
}
if (!fs.existsSync(vsixFileName)) {
console.error(`\n❌ VSIX file not found: ${vsixFileName}`)
console.error("Make sure the build completed successfully")
rl.close()
process.exit(1)
}
execSync(`${editorCommand} --install-extension ${vsixFileName}`, { stdio: "inherit" })
console.log(`\n✅ Successfully installed extension from ${vsixFileName}`)
console.log("\n⚠️ IMPORTANT: You need to restart VS Code for the changes to take effect.")
console.log(" Please close and reopen VS Code to use the updated extension.\n")
rl.close()
} catch (error) {
console.error("\n❌ Failed to install extension:", error.message)
rl.close()
process.exit(1)
}
}
main()