Minor fixes

This commit is contained in:
2026-06-26 22:21:53 -05:00
parent 3356b935fc
commit 999f4a13b8
3 changed files with 92 additions and 3 deletions
+3 -3
View File
@@ -8,7 +8,7 @@ on:
workflow_dispatch:
inputs:
version:
description: 'Release tag, e.g. v0.1.1 (the tag is created at the current commit on this branch)'
description: 'Release tag, e.g. v0.3.2.1 (the tag is created at the current commit on this branch)'
required: true
type: string
prerelease:
@@ -42,7 +42,7 @@ jobs:
shell: bash
env:
VERSION: ${{ inputs.version }}
run: npm version "${VERSION#v}" --no-git-tag-version --allow-same-version
run: node scripts/stamp-version.js "${VERSION#v}"
- name: Configure Windows code signing
shell: bash
@@ -86,7 +86,7 @@ jobs:
shell: bash
env:
VERSION: ${{ inputs.version }}
run: npm version "${VERSION#v}" --no-git-tag-version --allow-same-version
run: node scripts/stamp-version.js "${VERSION#v}"
- name: Package Linux artifacts (tarball + .deb)
shell: bash
+45
View File
@@ -0,0 +1,45 @@
'use strict';
const fs = require('node:fs');
const path = require('node:path');
function readJson(file) {
return JSON.parse(fs.readFileSync(file, 'utf8'));
}
function writeJson(file, value) {
fs.writeFileSync(file, JSON.stringify(value, null, 2) + '\n');
}
function stampVersion(rootDir, version) {
if (!version || typeof version !== 'string') {
throw new Error('version is required');
}
const pkgPath = path.join(rootDir, 'package.json');
const pkg = readJson(pkgPath);
pkg.version = version;
writeJson(pkgPath, pkg);
const lockPath = path.join(rootDir, 'package-lock.json');
if (!fs.existsSync(lockPath)) return;
const lock = readJson(lockPath);
lock.version = version;
if (lock.packages && lock.packages['']) {
lock.packages[''].version = version;
}
writeJson(lockPath, lock);
}
if (require.main === module) {
try {
const version = process.argv[2] || process.env.VERSION;
stampVersion(process.cwd(), version);
} catch (err) {
console.error(err && err.message ? err.message : err);
process.exitCode = 1;
}
}
module.exports = { stampVersion };
+44
View File
@@ -0,0 +1,44 @@
'use strict';
const fs = require('node:fs');
const path = require('node:path');
const test = require('node:test');
const assert = require('node:assert/strict');
const { makeTmpDir, rmrf } = require('./helpers');
const { stampVersion } = require('../../scripts/stamp-version');
test('stampVersion updates package metadata without semver validation', () => {
const root = makeTmpDir('stamp-version');
try {
fs.writeFileSync(path.join(root, 'package.json'), JSON.stringify({
name: 'stepforge',
version: '0.1.0',
private: true,
}, null, 2));
fs.writeFileSync(path.join(root, 'package-lock.json'), JSON.stringify({
name: 'stepforge',
version: '0.1.0',
lockfileVersion: 3,
requires: true,
packages: {
'': {
name: 'stepforge',
version: '0.1.0',
},
},
}, null, 2));
stampVersion(root, '0.3.2.1');
const pkg = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8'));
const lock = JSON.parse(fs.readFileSync(path.join(root, 'package-lock.json'), 'utf8'));
assert.equal(pkg.version, '0.3.2.1');
assert.equal(lock.version, '0.3.2.1');
assert.equal(lock.packages[''].version, '0.3.2.1');
} finally {
rmrf(root);
}
});