Files
SecScore/scripts/ci/apply-version.mjs
T
Fox_block 73db5778f1 添加 Android 打包工作流并实现响应式设计
- 在 GitHub Actions 中添加 Android 打包工作流,支持 ARM64、ARMv7 和 x86_64 架构
- 创建 CI 脚本用于解析提交信息和应用版本号
- 移除标题栏的旋转屏幕按钮,简化窗口控制
- 创建响应式设计 hooks (useResponsive) 用于检测屏幕尺寸
- 更新 StudentManager 组件以支持移动端响应式布局
- 在移动设备上自动调整表格列宽、按钮大小和字体大小
- 移动端隐藏标签列以节省空间
- 按钮在移动端使用垂直布局和更小的尺寸
2026-03-20 21:02:52 +08:00

73 lines
1.7 KiB
JavaScript

import fs from "fs"
import path from "path"
const rawVersion = String(process.argv[2] || "")
.trim()
.replace(/^v/i, "")
if (!rawVersion) {
process.stderr.write("缺少版本号参数,例如:node scripts/ci/apply-version.mjs 1.2.3\n")
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 pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"))
pkg.version = version
fs.writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\n`, "utf-8")