@lark-project/cli
Version:
飞书项目插件开发工具
48 lines (47 loc) • 2.18 kB
JavaScript
;
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;