fix(coding-agent): make release publication transactional

This commit is contained in:
Armin Ronacher
2026-06-23 20:55:15 +02:00
parent 6184307c39
commit c3cfeac041
2 changed files with 187 additions and 35 deletions
+24 -14
View File
@@ -89,24 +89,34 @@ if (versions.length !== 1) {
console.log(`Publishing pi packages at ${versions[0]}${dryRun ? " (dry run)" : ""}\n`);
for (const pkg of packages) {
const version = packageVersions.get(pkg.name);
const packageStates = packages.map((pkg) => ({
...pkg,
published: false,
version: packageVersions.get(pkg.name),
}));
for (const pkg of packageStates) {
assertBuildOutputExists(pkg.directory);
const published = isPublished(pkg.name, version);
pkg.published = isPublished(pkg.name, pkg.version);
if (dryRun) {
if (published) {
console.log(`${pkg.name}@${version} is already published; validating package contents only.`);
} else {
console.log(`${pkg.name}@${version} is not published; validating package contents before publish.`);
}
validatePack(pkg.directory);
console.log();
continue;
if (pkg.published) {
console.log(`${pkg.name}@${pkg.version} is already published; validating package contents only.`);
} else {
console.log(`${pkg.name}@${pkg.version} is not published; validating package contents before publish.`);
}
validatePack(pkg.directory);
console.log();
}
if (published) {
console.log(`Skipping ${pkg.name}@${version}: already published\n`);
if (dryRun) {
process.exit(0);
}
console.log("All packages validated; starting publication.\n");
for (const pkg of packageStates) {
if (pkg.published) {
console.log(`Skipping ${pkg.name}@${pkg.version}: already published\n`);
continue;
}