UNPKG

@lark-project/cli

Version:

飞书项目插件开发工具

48 lines (47 loc) 2.18 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkLatestVersion = void 0; const semver_1 = __importDefault(require("semver")); const execa_1 = __importDefault(require("execa")); const env_1 = require("./env"); const logger_1 = require("./logger"); const with_loading_spinner_1 = require("./with-loading-spinner"); const shelljs_1 = __importDefault(require("shelljs")); async function checkLatestVersion() { if (env_1.env.skipLatestValid) { logger_1.logger.info('The Lark Project CLI latest version check skipped'); return; } const packageJson = require('../../package.json'); const { name, version } = packageJson; try { const { stdout: latestVersion } = await (0, with_loading_spinner_1.withLoadingSpinner)(execa_1.default, 'Check whether the cli version is the latest...', 'npm', ['view', name, 'version']); const fallback = () => { logger_1.logger.error(`Your Lark Project CLI version ${version} is out of date.\r\nWe recommend you update to the latest version ${latestVersion} to get the latest features and bug fixes.`); }; if (semver_1.default.gt(latestVersion, version)) { logger_1.logger.info('try to fetch the latest version...'); try { const result = shelljs_1.default.exec('npm install -g @lark-project/cli@latest'); if (result.code !== 0) { fallback(); } else { logger_1.logger.info(`We have helped you update to the latest version ${latestVersion} to get the latest features and bug fixes.\r\nYou can restart the command`); } } catch (e) { // 理论不会走到这里的异常 fallback(); } process.exit(1); } } catch (e) { logger_1.logger.warn('The Lark Project CLI latest version check failed.', e); } } exports.checkLatestVersion = checkLatestVersion;