123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import dayjs from 'dayjs'
- import { exec } from 'child_process'
- import { readFileSync, writeFileSync } from 'fs'
- const versionFile = './sagoo-iot/versionInfo.json'
- main()
- /**
- * 写入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) => {
- exec('git describe --abbrev=0 --tags', (err, version) => {
- if (err) {
- resolve({ version: '获取失败', hash: '获取失败' })
- } else {
- if (!version) return resolve({ version: '获取失败', hash: '获取失败' })
- exec('git rev-parse HEAD', (err, hash) => {
- if (err) {
- resolve({ version: version.trim(), hash: '获取失败' })
- } else {
- resolve({ version: version.trim(), hash: hash.trim() })
- }
- })
- }
- })
- })
- }
- // 主函数
- function main() {
- 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')
- writeJson(packageInfo, versionFile)
- })
- .catch(() => {})
- }
|