Răsfoiți Sursa

feat: 获取版本号脚本兼容没有 git 权限的报错情况

yanglzh 1 an în urmă
părinte
comite
5d07d8f5b2
2 a modificat fișierele cu 15 adăugiri și 175 ștergeri
  1. 15 18
      getVersion.mjs
  2. 0 157
      updateVersion.mjs

+ 15 - 18
getVersion.mjs

@@ -28,21 +28,16 @@ function writeJson(version, fileDirName) {
  * @returns
  */
 function getLatestVersion() {
-	return new Promise((resolve, reject) => {
-		return exec('git describe --abbrev=0 --tags', (err, version) => {
+	return new Promise((resolve) => {
+		exec('git describe --abbrev=0 --tags', (err, version) => {
 			if (err) {
-				reject()
-				// console.error('获取版本号失败:', err)
-				console.error('获取版本号失败')
+				resolve({ version: '获取失败', hash: '获取失败' })
 			} else {
-				console.log('最新版本号:', version)
+				if (!version) return resolve({ version: '获取失败', hash: '获取失败' })
 				exec('git rev-parse HEAD', (err, hash) => {
 					if (err) {
-						reject()
-						// console.error('获取版本号失败:', err)
-						console.error('获取版本号失败')
+						resolve({ version: version.trim(), hash: '获取失败' })
 					} else {
-						console.log('最新HASH:', hash)
 						resolve({ version: version.trim(), hash: hash.trim() })
 					}
 				})
@@ -53,14 +48,16 @@ function getLatestVersion() {
 
 // 主函数
 function main() {
-	getLatestVersion().then(({ version, hash }) => {
-		const content = readFileSync(versionFile, 'utf-8')
-		const packageInfo = JSON.parse(content)
+	getLatestVersion()
+		.then(({ version, hash }) => {
+			const content = readFileSync(versionFile, 'utf-8')
+			const packageInfo = JSON.parse(content)
 
-		packageInfo.version = version
-		packageInfo.hash = hash
-		packageInfo.updateTime = dayjs().format('YYYY-MM-DD HH:mm:ss')
+			packageInfo.version = version
+			packageInfo.hash = hash
+			packageInfo.updateTime = dayjs().format('YYYY-MM-DD HH:mm:ss')
 
-		writeJson(packageInfo, versionFile)
-	})
+			writeJson(packageInfo, versionFile)
+		})
+		.catch(() => {})
 }

+ 0 - 157
updateVersion.mjs

@@ -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)
-// 		})
-// 	})
-// }