003480881b
I think the problem is that when a proxy is not in use proxy-agent returns the global agent...which is itself since we set it globally, causing the loop. VS Code already covers proxies meaning we only need to do it in our own requests so to fix this pass in the agent in the version fetch request instead of overidding globally. Also avoid proxy-from-env and pass in the proxy URI instead as both http_proxy and https_proxy can be used for either http or https requests but it does not allow that.
73 lines
2.3 KiB
TypeScript
73 lines
2.3 KiB
TypeScript
import { logger } from "@coder/logger"
|
|
import { optionDescriptions, parse, readConfigFile, setDefaults, shouldOpenInExistingInstance } from "./cli"
|
|
import { commit, version } from "./constants"
|
|
import { openInExistingInstance, runCodeServer, runVsCodeCli, shouldSpawnCliProcess } from "./main"
|
|
import { isChild, wrapper } from "./wrapper"
|
|
|
|
async function entry(): Promise<void> {
|
|
// There's no need to check flags like --help or to spawn in an existing
|
|
// instance for the child process because these would have already happened in
|
|
// the parent and the child wouldn't have been spawned. We also get the
|
|
// arguments from the parent so we don't have to parse twice and to account
|
|
// for environment manipulation (like how PASSWORD gets removed to avoid
|
|
// leaking to child processes).
|
|
if (isChild(wrapper)) {
|
|
const args = await wrapper.handshake()
|
|
wrapper.preventExit()
|
|
const server = await runCodeServer(args)
|
|
wrapper.onDispose(() => server.dispose())
|
|
return
|
|
}
|
|
|
|
const cliArgs = parse(process.argv.slice(2))
|
|
const configArgs = await readConfigFile(cliArgs.config)
|
|
const args = await setDefaults(cliArgs, configArgs)
|
|
|
|
if (args.help) {
|
|
console.log("code-server", version, commit)
|
|
console.log("")
|
|
console.log(`Usage: code-server [options] [path]`)
|
|
console.log(` - Opening a directory: code-server ./path/to/your/project`)
|
|
console.log(` - Opening a saved workspace: code-server ./path/to/your/project.code-workspace`)
|
|
console.log("")
|
|
console.log("Options")
|
|
optionDescriptions().forEach((description) => {
|
|
console.log("", description)
|
|
})
|
|
return
|
|
}
|
|
|
|
if (args.version) {
|
|
if (args.json) {
|
|
console.log(
|
|
JSON.stringify({
|
|
codeServer: version,
|
|
commit,
|
|
vscode: require("../../vendor/modules/code-oss-dev/package.json").version,
|
|
}),
|
|
)
|
|
} else {
|
|
console.log(version, commit)
|
|
}
|
|
return
|
|
}
|
|
|
|
if (shouldSpawnCliProcess(args)) {
|
|
logger.debug("Found VS Code arguments; spawning VS Code CLI")
|
|
return runVsCodeCli(args)
|
|
}
|
|
|
|
const socketPath = await shouldOpenInExistingInstance(cliArgs)
|
|
if (socketPath) {
|
|
logger.debug("Trying to open in existing instance")
|
|
return openInExistingInstance(args, socketPath)
|
|
}
|
|
|
|
return wrapper.start(args)
|
|
}
|
|
|
|
entry().catch((error) => {
|
|
logger.error(error.message)
|
|
wrapper.exit(error)
|
|
})
|