@puls-atlas/cli
Version:
The Puls Atlas CLI tool for managing Atlas projects
40 lines • 1.51 kB
JavaScript
import inquirer from 'inquirer';
import { execSync, logger, config } from './../utils/index.js';
const LAST_VERSION_CHECK_ON = 'lastVersionCheckOn';
export default async options => {
const now = Date.now();
const lastCheck = config.get(LAST_VERSION_CHECK_ON) ?? 0;
if (options?.force || lastCheck === 0 || now - lastCheck > 1000 * 60 * 60 * 24) {
const spinner = logger.spinner('Checking for updates...');
const npm = execSync('npm list -g @puls-atlas/cli --json', {
stdio: 'pipe'
}).toString();
const latest = execSync('npm view @puls-atlas/cli dist-tags.latest', {
stdio: 'pipe'
}).toString();
const current = JSON.parse(npm).dependencies['@puls-atlas/cli'].version;
config.set(LAST_VERSION_CHECK_ON, now);
if (current.trim() !== latest.trim()) {
spinner.fail(`Atlas CLI v${current} is outdated. Latest is v${latest}.`);
logger.break();
logger.log(chalk => chalk.bgGreenBright.underline('Update instructions:'));
logger.log('Run the following command:');
logger.break();
logger.log(chalk => chalk.italic('npm i -g @puls-atlas/cli'));
logger.break();
const {
isConfirmed
} = await inquirer.prompt([{
type: 'confirm',
name: 'isConfirmed',
default: true,
message: 'Do you want to continue without updating first?'
}]);
if (!isConfirmed) {
process.exit(0);
}
} else {
spinner.succeed(`Atlas CLI v${current} is up-to-date.`);
}
}
};