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