UNPKG

@puls-atlas/cli

Version:

The Puls Atlas CLI tool for managing Atlas projects

40 lines 1.51 kB
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.`); } } };