diff --git a/src/handlers/installationHandlers.js b/src/handlers/installationHandlers.js index 2a85638..9aad90a 100644 --- a/src/handlers/installationHandlers.js +++ b/src/handlers/installationHandlers.js @@ -7,8 +7,9 @@ import fs from 'fs'; import { createSpinner } from 'nanospinner'; import { runCommand } from '../utils/command.js'; import { showErrorMessage, showInfoMessage, showSuccessMessage } from '../utils/messages.js'; -import { checkDependencies, isCodexInstalled } from '../services/nodeService.js'; +import { checkDependencies } from '../services/nodeService.js'; import { saveConfig } from '../services/config.js'; +import { getCodexInstallPath } from '../utils/appdata.js'; const platform = os.platform(); @@ -101,6 +102,9 @@ export async function installCodex(config, showNavigationMenu) { return; } + const installPath = getCodexInstallPath(); + console.log(showInfoMessage("Install location: " + installPath)); + const spinner = createSpinner('Installing Codex...').start(); try { @@ -114,9 +118,9 @@ export async function installCodex(config, showNavigationMenu) { } await runCommand('curl -LO --ssl-no-revoke https://get.codex.storage/install.cmd'); - await runCommand(`"${process.cwd()}\\install.cmd"`); + await runCommand(`set "INSTALL_DIR=${installPath}" && "${process.cwd()}\\install.cmd"`); - await saveCodexExePathToConfig(config, path.join(process.env.LOCALAPPDATA, "Codex", "codex.exe")); + await saveCodexExePathToConfig(config, path.join(installPath, "codex.exe")); try { await runCommand('del /f install.cmd'); @@ -148,18 +152,17 @@ export async function installCodex(config, showNavigationMenu) { eval { local $SIG{ALRM} = sub { die "timeout\\n" }; alarm(120); - system("bash install.sh"); + system("INSTALL_DIR="${installPath}" bash install.sh"); alarm(0); }; die if $@; '`; await runCommand(timeoutCommand); } else { - await runCommand('timeout 120 bash install.sh'); + await runCommand(`INSTALL_DIR="${installPath}" timeout 120 bash install.sh`); } - const codexExePath = (await runCommand("which codex")).replace("\n", ""); - await saveCodexExePathToConfig(config, codexExePath); + await saveCodexExePathToConfig(config, path.join(installPath, "codex")); } catch (error) { if (error.message.includes('ECONNREFUSED') || error.message.includes('ETIMEDOUT')) { diff --git a/src/utils/appdata.js b/src/utils/appdata.js index 14dbcb5..b277ac6 100644 --- a/src/utils/appdata.js +++ b/src/utils/appdata.js @@ -2,7 +2,15 @@ import path from 'path'; import fs from 'fs'; export function getAppDataDir() { - const dir = appData("codex-cli"); + return getExists("codex-cli"); +} + +export function getCodexInstallPath() { + return getExists("codex"); +} + +function getExists(appName) { + const dir = appData(appName); if (!fs.existsSync(dir)) { fs.mkdirSync(dir); }