prism/scripts/release.ts
2026-01-31 02:00:29 -08:00

41 lines
1.2 KiB
TypeScript

import { $ } from 'bun';
try {
const packageJson = await Bun.file(`package.json`).json();
const version = `v${packageJson.version}`;
console.log(`Triggering release ${version} via CI...`);
const existingTags = await $`git tag -l ${version}`.text();
if (existingTags.trim()) {
console.error(`\n❌ Tag ${version} already exists!`);
console.log(`\nTo re-release, delete the tag first:`);
console.log(` git tag -d ${version}`);
console.log(` git push origin :refs/tags/${version}`);
process.exit(1);
}
console.log(`\nCreating git tag ${version}...`);
await $`git tag -a ${version} -m "Release ${version}"`;
console.log(`Pushing tag to trigger CI build...`);
await $`git push origin ${version}`;
console.log(`\nCreating GitHub release...`);
await $`gh release create ${version} --title ${version} --notes "## Docker Images
Pull the latest version:
\`\`\`bash
docker pull ghcr.io/lone-cloud/prism:${version}
\`\`\`" --generate-notes`;
console.log(`
✨ Release ${version} complete!
Once CI completes, images will be available:
docker pull ghcr.io/lone-cloud/prism:${version}
`);
} catch (error) {
console.error('Release failed:', error);
process.exit(1);
}