@eve-tools/cli
Version:
Everest cli to speed up project start-up and standardized frontend , backend architecture
59 lines (58 loc) • 2.32 kB
JavaScript
import chalk from 'chalk';
import { exec } from 'child_process';
import ora from 'ora';
import semver from 'semver';
import { promisify } from 'util';
import { getEveCliVersion, logger, printTextIntoBox, } from '../../utils/index.js';
const execAsync = promisify(exec);
const PACKAGE_NAME = '@eve-tools/cli';
async function getLatestVersion(isSilent) {
const spinner = isSilent
? undefined
: ora(`Fetching latest version for ${PACKAGE_NAME}...`).start();
try {
const { stdout } = await execAsync(`npm view ${PACKAGE_NAME} version`);
spinner?.succeed(`Fetched latest version for ${PACKAGE_NAME}`);
return stdout.trim();
}
catch (error) {
spinner?.fail(`Failed to fetch latest version for ${PACKAGE_NAME}`);
logger.error('Error fetching latest version:');
process.exit(1);
}
}
export async function checkAndUpdateCli(isSilent = true) {
const currentVersion = getEveCliVersion();
const latestVersion = await getLatestVersion(isSilent);
if (semver.lt(currentVersion, latestVersion)) {
printTextIntoBox([
chalk.yellow('Update available! '),
chalk.dim(`(${currentVersion} -> ${latestVersion})\n`),
chalk.gray('Run '),
chalk.cyan(`eve upgrade or npm install -g ${PACKAGE_NAME}@latest`),
chalk.gray(' to update.'),
]);
}
else {
logger.success('Eve CLI is up to date.');
}
}
export async function upgradeCli() {
const currentVersion = getEveCliVersion();
const latestVersion = await getLatestVersion();
if (semver.gte(currentVersion, latestVersion)) {
logger.success(`You already have the latest version (${currentVersion}).`);
return;
}
const spinner = ora(`Upgrading ${PACKAGE_NAME} from ${currentVersion} to ${latestVersion}...`).start();
try {
await execAsync(`npm install -g ${PACKAGE_NAME}@latest`);
spinner.succeed(`Successfully upgraded ${PACKAGE_NAME} to ${latestVersion}`);
logger.info("\nPlease restart your terminal or run 'rehash' (if using zsh) for changes to take effect.");
}
catch (error) {
spinner.fail(`Failed to upgrade ${PACKAGE_NAME}`);
logger.error(`Error during upgrade: ${error?.message}`);
process.exit(1);
}
}