chore(release): bundle Auth Tools 0.3.2 in Toolbox 0.20.6
Verify / verify (push) Canceled after 0s

This commit is contained in:
2026-10-04 12:17:00 +02:00
parent 673960a5cf
commit 68a7bcf89f
13 changed files with 153 additions and 105 deletions
+1 -1
View File
@@ -83,7 +83,7 @@ function makeLock(artifact: string, sha256: string) {
return {
schemaVersion: 1,
releaseVersion: '0.1.0',
portalVersion: '0.2.23',
portalVersion: '0.2.24',
catalogue: {
id: 'de.add-ideas.toolbox',
name: 'Test Toolbox',
+44 -21
View File
@@ -111,19 +111,24 @@ async function giteaRequest(url, options, { allowNotFound = false } = {}) {
}
const text = await response.text();
const payload = text ? (() => {
try {
return JSON.parse(text);
} catch {
return { raw: text };
}
})() : null;
const payload = text
? (() => {
try {
return JSON.parse(text);
} catch {
return { raw: text };
}
})()
: null;
if (!response.ok) {
const detail = payload && typeof payload === 'object' && payload.error
? payload.error
: payload?.raw ?? text ?? '';
throw new Error(`Gitea API request failed (${response.status} ${response.statusText}): ${detail}`);
const detail =
payload && typeof payload === 'object' && payload.error
? payload.error
: (payload?.raw ?? text ?? '');
throw new Error(
`Gitea API request failed (${response.status} ${response.statusText}): ${detail}`
);
}
return payload;
@@ -148,7 +153,9 @@ async function run() {
const lock = await readFile(options.lockFile, 'utf8');
const lockJson = JSON.parse(lock);
if (!SEMVER.test(lockJson.releaseVersion)) {
throw new Error(`Invalid releaseVersion in lock: ${lockJson.releaseVersion}`);
throw new Error(
`Invalid releaseVersion in lock: ${lockJson.releaseVersion}`
);
}
const releaseVersion = parseReleaseVersionFromLock(lockJson);
@@ -192,8 +199,12 @@ async function run() {
}
if (dryRun) {
console.log(`DRY-RUN: would ensure or create release ${releaseTag} on ${options.owner}/${options.repo}.`);
console.log(`DRY-RUN: would upload assets ${path.basename(archive)} and ${path.basename(checksumFile)}.`);
console.log(
`DRY-RUN: would ensure or create release ${releaseTag} on ${options.owner}/${options.repo}.`
);
console.log(
`DRY-RUN: would upload assets ${path.basename(archive)} and ${path.basename(checksumFile)}.`
);
return;
}
@@ -216,13 +227,15 @@ async function run() {
target_commitish: options.target || 'main',
name: options.name,
body:
options.body
|| `Automated release of add-ideas toolbox ${releaseTag} from lock release ${releaseVersion}.`,
options.body ||
`Automated release of add-ideas toolbox ${releaseTag} from lock release ${releaseVersion}.`,
draft: false,
prerelease: false,
};
if (dryRun) {
console.log(`DRY-RUN: would create release ${releaseTag} on ${options.owner}/${options.repo}`);
console.log(
`DRY-RUN: would create release ${releaseTag} on ${options.owner}/${options.repo}`
);
release = { id: '<dry-run>', assets: [] };
} else {
release = await giteaRequest(`${releasePrefix}/releases`, {
@@ -238,14 +251,20 @@ async function run() {
} else {
release = tagLookup;
if (dryRun) {
console.log(`DRY-RUN: would reuse existing release ${releaseTag} (${release?.id ?? 'unknown'})`);
console.log(
`DRY-RUN: would reuse existing release ${releaseTag} (${release?.id ?? 'unknown'})`
);
} else {
console.log(`Using existing release ${releaseTag} (${release.id})`);
}
}
if (dryRun) {
console.log('DRY-RUN: would upload assets:', options.archive, options.checksum);
console.log(
'DRY-RUN: would upload assets:',
options.archive,
options.checksum
);
return;
}
@@ -258,7 +277,9 @@ async function run() {
for (const asset of candidateAssets) {
const duplicate = existingAssets.find((entry) => entry.name === asset.name);
if (duplicate) {
console.log(`Deleting existing asset ${asset.name} from release ${releaseTag}`);
console.log(
`Deleting existing asset ${asset.name} from release ${releaseTag}`
);
await giteaRequest(
`${releasePrefix}/releases/assets/${duplicate.id}`,
{ method: 'DELETE', headers },
@@ -281,7 +302,9 @@ async function run() {
);
}
console.log(`Release ${releaseTag} published on ${options.owner}/${options.repo}`);
console.log(
`Release ${releaseTag} published on ${options.owner}/${options.repo}`
);
}
run().catch((error) => {
+22 -7
View File
@@ -87,7 +87,9 @@ async function sha256ForPath(filePath) {
async function computeRemoteSha256(url) {
const response = await fetch(url);
if (!response.ok) {
throw new Error(`Unable to download artifact (${response.status} ${response.statusText}).`);
throw new Error(
`Unable to download artifact (${response.status} ${response.statusText}).`
);
}
if (!response.body) {
@@ -132,7 +134,9 @@ function command(cwd) {
child.on('exit', (code) =>
code === 0
? resolve(undefined)
: reject(new Error(`${name} ${args.join(' ')} failed with code ${code}`))
: reject(
new Error(`${name} ${args.join(' ')} failed with code ${code}`)
)
);
});
}
@@ -150,7 +154,9 @@ async function run() {
${usage()}`);
}
if (!SEMVER.test(options.releaseVersion)) {
throw new Error(`--release-version must be semver: ${options.releaseVersion}`);
throw new Error(
`--release-version must be semver: ${options.releaseVersion}`
);
}
if (!SEMVER.test(options.appVersion)) {
throw new Error(`--app-version must be semver: ${options.appVersion}`);
@@ -160,7 +166,8 @@ ${usage()}`);
const lockDir = path.dirname(lockPath);
const lockJson = JSON.parse(await readFile(lockPath, 'utf8'));
const lock = parseReleaseLock(lockJson);
const nextReleaseVersion = options.releaseVersion ?? bumpPatch(lock.releaseVersion);
const nextReleaseVersion =
options.releaseVersion ?? bumpPatch(lock.releaseVersion);
if (!SEMVER.test(nextReleaseVersion)) {
throw new Error(`Invalid release version: ${nextReleaseVersion}`);
}
@@ -199,13 +206,17 @@ ${usage()}`);
};
if (options.portalVersion) {
if (!SEMVER.test(options.portalVersion))
throw new Error(`--portal-version must be semver: ${options.portalVersion}`);
throw new Error(
`--portal-version must be semver: ${options.portalVersion}`
);
nextLock.portalVersion = options.portalVersion;
}
parseReleaseLock(nextLock);
await writeFile(lockPath, `${JSON.stringify(nextLock, null, 2)}\n`, 'utf8');
console.log(`Updated ${path.relative(process.cwd(), lockPath)} (${options.appId})`);
console.log(
`Updated ${path.relative(process.cwd(), lockPath)} (${options.appId})`
);
if (!options.assemble) return;
const runCommand = command(process.cwd());
@@ -229,7 +240,11 @@ ${usage()}`);
console.log(`Assembled release -> ${archive}`);
const releaseChecksum = `${archive}.sha256`;
const releaseSha256 = await sha256ForPath(archive);
await writeFile(releaseChecksum, `${releaseSha256} ${path.basename(archive)}\n`, 'utf8');
await writeFile(
releaseChecksum,
`${releaseSha256} ${path.basename(archive)}\n`,
'utf8'
);
console.log(`Assembled release checksum: ${releaseSha256}`);
}