t-comm
Version:
专业、稳定、纯粹的工具库
109 lines (106 loc) • 3.34 kB
JavaScript
import 'fs';
import { execCommand } from '../node/node-command.mjs';
import 'path';
import { getGitLastTag, getGitTagTime, getGitCommitsBeforeTag } from '../git/git.mjs';
import { timeStampFormat } from '../time/time.mjs';
import { TAG_MAP } from './config.mjs';
import '@babel/runtime/helpers/typeof';
import '../tslib.es6-096fffdd.js';
/* eslint-disable @typescript-eslint/no-require-imports */
function getTimeStampFromDate(date) {
return new Date(date).getTime();
}
function doRelease(_a) {
var isFirstRelease = _a.isFirstRelease,
root = _a.root;
console.log('[GEN VERSION] Doing standard-version ...');
if (isFirstRelease) {
execCommand('npx standard-version --first-release', root);
} else {
execCommand('npx standard-version --release-as patch', root);
}
console.log('[GEN VERSION] Done standard-version.');
}
/**
* 是否应该执行 standard-version
* 返回0,不执行
* 返回1,执行--first-release
* 返回2,执行--release-as patch
* @private
* @param {string} [] 命令执行目录
* @returns {number} 是否应该执行 standard-version
*/
function shouldGenVersion(root, forceGenVersion) {
var path = require('path');
var fs = require('fs');
if (!root) {
console.log('[GEN VERSION] ERROR: Please input root. Such as process.cwd()');
return TAG_MAP.NO_TAG;
}
var INTERVAL_TIME = 24 * 60 * 60 * 1000;
var gitPath = path.resolve(root, '.git');
console.log('[GEN VERSION] GitPath: ', gitPath);
if (!fs.existsSync(gitPath)) {
console.log("[GEN VERSION] ERROR: NOT FOUND .git of ".concat(gitPath));
return TAG_MAP.NO_TAG;
}
var tag = getGitLastTag(root);
console.log("[GEN VERSION] Tag: ".concat(tag));
if (!tag) {
return TAG_MAP.FIRST_TAG;
}
if (forceGenVersion) {
return TAG_MAP.MORE_TAG;
}
var tagDate = getGitTagTime(tag, root);
console.log("[GEN VERSION] Tag Date: ".concat(tagDate));
var commits = getGitCommitsBeforeTag(tag, root);
console.log("[GEN VERSION] Commit number: ".concat(commits));
if (Number(commits) < 1) {
console.log('[GEN VERSION] ERROR: commit number less than 1');
return TAG_MAP.NO_TAG;
}
var tagTimeStamp = getTimeStampFromDate(tagDate);
var dateStr = timeStampFormat(tagTimeStamp, 'yyyy-MM-dd hh:mm:ss');
console.log("[GEN VERSION] Tag TimeStamp: ".concat(dateStr));
if (Date.now() - tagTimeStamp < INTERVAL_TIME) {
console.log("[GEN VERSION] ERROR: \u95F4\u9694\u5C0F\u4E8E".concat(INTERVAL_TIME));
return TAG_MAP.NO_TAG;
}
return TAG_MAP.MORE_TAG;
}
/**
* 自动生成version,核心是利用 standard-version 命令
* @param {object} config 配置信息
* @param {string} config.root 项目根路径
* @returns {boolean} 是否执行了 standard-version
* @example
*
* genVersion({
* root: process.cwd()
* })
*
*/
function genVersion(_a) {
var root = _a.root,
_b = _a.forceGenVersion,
forceGenVersion = _b === void 0 ? false : _b;
var genType = shouldGenVersion(root, forceGenVersion);
if (!genType) return false;
if (genType === TAG_MAP.FIRST_TAG) {
doRelease({
isFirstRelease: true,
root: root
});
return true;
}
if (genType === TAG_MAP.MORE_TAG) {
doRelease({
isFirstRelease: false,
root: root
});
return true;
}
return false;
}
export { genVersion, shouldGenVersion };