mirror of
https://github.com/SECTL/SecScore.git
synced 2026-07-19 19:04:23 +08:00
改改改
This commit is contained in:
@@ -1,14 +1,71 @@
|
|||||||
import fs from 'fs'
|
import fs from 'fs'
|
||||||
import path from 'path'
|
import path from 'path'
|
||||||
|
|
||||||
const version = String(process.argv[2] || '')
|
const rawVersion = String(process.argv[2] || '')
|
||||||
.trim()
|
.trim()
|
||||||
.replace(/^v/i, '')
|
.replace(/^v/i, '')
|
||||||
if (!version) {
|
if (!rawVersion) {
|
||||||
process.stderr.write('缺少版本号参数,例如:node scripts/ci/apply-version.mjs 1.2.3\n')
|
process.stderr.write('缺少版本号参数,例如:node scripts/ci/apply-version.mjs 1.2.3\n')
|
||||||
process.exit(1)
|
process.exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const semverRe = /^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+([0-9A-Za-z.-]+))?$/
|
||||||
|
|
||||||
|
function toSemver(version) {
|
||||||
|
if (semverRe.test(version)) {
|
||||||
|
return version
|
||||||
|
}
|
||||||
|
|
||||||
|
const parts = version.split(/[._-]/)
|
||||||
|
const nums = parts.filter((p) => /^\d+$/.test(p))
|
||||||
|
const nonNums = parts.filter((p) => !/^\d+$/.test(p) && p.length > 0)
|
||||||
|
|
||||||
|
let major = '0',
|
||||||
|
minor = '0',
|
||||||
|
patch = '0'
|
||||||
|
let prerelease = ''
|
||||||
|
let buildMeta = ''
|
||||||
|
|
||||||
|
if (nums.length >= 3) {
|
||||||
|
major = nums[0]
|
||||||
|
minor = nums[1]
|
||||||
|
patch = nums[2]
|
||||||
|
if (nums.length > 3) {
|
||||||
|
buildMeta = nums.slice(3).join('.')
|
||||||
|
}
|
||||||
|
} else if (nums.length === 2) {
|
||||||
|
major = nums[0]
|
||||||
|
minor = nums[1]
|
||||||
|
patch = '0'
|
||||||
|
} else if (nums.length === 1) {
|
||||||
|
major = nums[0]
|
||||||
|
minor = '0'
|
||||||
|
patch = '0'
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nonNums.length > 0) {
|
||||||
|
if (prerelease) {
|
||||||
|
prerelease += '.' + nonNums.join('.')
|
||||||
|
} else {
|
||||||
|
prerelease = nonNums.join('.')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let result = `${major}.${minor}.${patch}`
|
||||||
|
if (prerelease) {
|
||||||
|
result += `-${prerelease}`
|
||||||
|
}
|
||||||
|
if (buildMeta) {
|
||||||
|
result += `+${buildMeta}`
|
||||||
|
}
|
||||||
|
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
const version = toSemver(rawVersion)
|
||||||
|
|
||||||
|
process.stdout.write(`版本号转换: "${rawVersion}" -> "${version}"\n`)
|
||||||
|
|
||||||
const pkgPath = path.join(process.cwd(), 'package.json')
|
const pkgPath = path.join(process.cwd(), 'package.json')
|
||||||
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'))
|
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'))
|
||||||
pkg.version = version
|
pkg.version = version
|
||||||
|
|||||||
Reference in New Issue
Block a user