|
@@ -1,157 +0,0 @@
|
|
-import dayjs from 'dayjs'
|
|
|
|
-import { exec } from 'child_process'
|
|
|
|
-import semver from 'semver'
|
|
|
|
-
|
|
|
|
-import { readFileSync, writeFileSync } from 'fs'
|
|
|
|
-
|
|
|
|
-// 初始化数据
|
|
|
|
-// const packageFile = './package.json'
|
|
|
|
-// const versionFile = './public/version.json'
|
|
|
|
-
|
|
|
|
-// 获取执行的参数
|
|
|
|
-const args = process.argv.slice(2)
|
|
|
|
-// console.log(args)
|
|
|
|
-
|
|
|
|
-// 暂停使用,禁止自动打tag
|
|
|
|
-// switch (args[0]) {
|
|
|
|
-// case '--patch':
|
|
|
|
-// autoTagVersion('patch')
|
|
|
|
-// break
|
|
|
|
-// case '--minor':
|
|
|
|
-// autoTagVersion('minor')
|
|
|
|
-// break
|
|
|
|
-// case '--major':
|
|
|
|
-// autoTagVersion('major')
|
|
|
|
-// break
|
|
|
|
-// default:
|
|
|
|
-// autoTagVersion('patch')
|
|
|
|
-// break
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
-/**
|
|
|
|
- * 自动打标签
|
|
|
|
- */
|
|
|
|
-// autoTagVersion()
|
|
|
|
-/**
|
|
|
|
- * 撤销标签
|
|
|
|
- */
|
|
|
|
-// revertTag('v1.6.1')
|
|
|
|
-
|
|
|
|
-/**
|
|
|
|
- * 获取最近的标签
|
|
|
|
- */
|
|
|
|
-// getLatestVersion()
|
|
|
|
-
|
|
|
|
-/**
|
|
|
|
- * 写入json文件
|
|
|
|
- * @param {*} version
|
|
|
|
- * @param {*} fileDirName
|
|
|
|
- */
|
|
|
|
-function writeJson(version, fileDirName) {
|
|
|
|
- try {
|
|
|
|
- writeFileSync(fileDirName, JSON.stringify(version, null, 2), { flag: 'w+', encoding: 'utf-8' })
|
|
|
|
- console.log(`-> 写入 ${fileDirName} 成功`)
|
|
|
|
- } catch (err) {
|
|
|
|
- console.error(`-> 写入 ${fileDirName} 失败: `)
|
|
|
|
- console.error(err)
|
|
|
|
- throw err
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-/**
|
|
|
|
- * 获取最新的版本号
|
|
|
|
- * @returns
|
|
|
|
- */
|
|
|
|
-function getLatestVersion() {
|
|
|
|
- return new Promise((resolve, reject) => {
|
|
|
|
- return exec('git describe --abbrev=0 --tags', (err, stdout, stderr) => {
|
|
|
|
- if (err) {
|
|
|
|
- reject()
|
|
|
|
- console.error('获取版本号失败:', err)
|
|
|
|
- } else {
|
|
|
|
- console.log('最新版本号:', stdout)
|
|
|
|
- resolve(stdout.trim())
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
- })
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-/**
|
|
|
|
- * 根据最新版本号来推荐下一个版本号
|
|
|
|
- * @param {*} latestVersion
|
|
|
|
- * @returns
|
|
|
|
- */
|
|
|
|
-function suggestNextVersion(latestVersion, type = 'patch') {
|
|
|
|
- const cleanVersion = semver.clean(latestVersion)
|
|
|
|
- if (cleanVersion) {
|
|
|
|
- return semver.inc(cleanVersion, type) // 或者 'minor' 或者 'major' 根据需要
|
|
|
|
- }
|
|
|
|
- return '1.0.0'
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-/**
|
|
|
|
- * 打上新的版本号 tag
|
|
|
|
- * @param {*} version
|
|
|
|
- */
|
|
|
|
-function createNewTag(version) {
|
|
|
|
- exec(`git tag -a ${version} -m "Release version ${version}" && git push origin ${version}`, (err) => {
|
|
|
|
- if (err) {
|
|
|
|
- return console.error(err)
|
|
|
|
- }
|
|
|
|
- console.log(`Tag ${version} 创建成功`)
|
|
|
|
- getLatestVersion()
|
|
|
|
- })
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-/**
|
|
|
|
- * 撤销某一个版本号的打版本号操作
|
|
|
|
- * @param {*} version
|
|
|
|
- */
|
|
|
|
-function revertTag(version) {
|
|
|
|
- exec(`git tag -d ${version} && git push origin --delete ${version}`, (err) => {
|
|
|
|
- if (err) {
|
|
|
|
- console.error(err)
|
|
|
|
- } else {
|
|
|
|
- console.log(`Tag ${version} reverted successfully.`)
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-// 主函数
|
|
|
|
-function autoTagVersion(type = 'patch') {
|
|
|
|
- getLatestVersion().then((latestVersion) => {
|
|
|
|
- const nextVersion = 'v' + suggestNextVersion(latestVersion, type)
|
|
|
|
- // 设置tag
|
|
|
|
- createNewTag(nextVersion)
|
|
|
|
- })
|
|
|
|
-}
|
|
|
|
-// // 主函数
|
|
|
|
-// function autoTagVersion(type = 'patch') {
|
|
|
|
-// getLatestVersion().then((latestVersion) => {
|
|
|
|
-// const nextVersion = 'v' + suggestNextVersion(latestVersion, type)
|
|
|
|
-// const content = readFileSync(packageFile, 'utf-8')
|
|
|
|
-// const packageInfo = JSON.parse(content)
|
|
|
|
-// packageInfo['version'] = nextVersion
|
|
|
|
-// packageInfo['updateTime'] = dayjs().format('YYYY-MM-DD HH:mm:ss')
|
|
|
|
-// // 写入文件
|
|
|
|
-// writeJson(packageInfo, packageFile)
|
|
|
|
-// writeJson(
|
|
|
|
-// {
|
|
|
|
-// version: nextVersion,
|
|
|
|
-// updateTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
|
|
|
-// },
|
|
|
|
-// versionFile
|
|
|
|
-// )
|
|
|
|
-// // 提交代码
|
|
|
|
-// exec(`git add . && git commit -m "setTag ${nextVersion}" && git push`, (err, stdout, stderr) => {
|
|
|
|
-// if (err) {
|
|
|
|
-// console.error('代码提交失败')
|
|
|
|
-// console.error(err)
|
|
|
|
-// return
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
-// // 设置tag
|
|
|
|
-// createNewTag(nextVersion)
|
|
|
|
-// })
|
|
|
|
-// })
|
|
|
|
-// }
|
|
|