Files
payloadcms/scripts/publish-canary.ts
Elliot DeNolf ba6ef6777f ci: auto release canary on success (#7444)
Automatically release canary on successful workflow.
2024-07-31 00:11:28 -04:00

59 lines
1.6 KiB
TypeScript
Executable File

import type { ExecSyncOptions } from 'child_process'
import type execa from 'execa'
import chalk from 'chalk'
import minimist from 'minimist'
import { fileURLToPath } from 'node:url'
import pLimit from 'p-limit'
import path from 'path'
import { getWorkspace } from './lib/getWorkspace.js'
const npmPublishLimit = pLimit(5)
const filename = fileURLToPath(import.meta.url)
const dirname = path.dirname(filename)
const cwd = path.resolve(dirname, '..')
const execOpts: ExecSyncOptions = { stdio: 'inherit' }
const execaOpts: execa.Options = { stdio: 'inherit' }
const args = minimist(process.argv.slice(2))
// const {
// bump = 'patch', // Semver release type
// changelog = false, // Whether to update the changelog. WARNING: This gets throttled on too many commits
// 'dry-run': dryRun,
// 'git-tag': gitTag = true, // Whether to run git tag and commit operations
// 'git-commit': gitCommit = true, // Whether to run git commit operations
// tag = 'latest',
// } = args
const dryRun = true
async function main() {
const workspace = await getWorkspace()
await workspace.bumpVersion('canary')
await workspace.build()
await workspace.publishSync({ dryRun: false, tag: 'canary' })
header('🎉 Done!')
}
main().catch((error) => {
console.error(error)
process.exit(1)
})
function abort(message = 'Abort', exitCode = 1) {
console.error(chalk.bold.red(`\n${message}\n`))
process.exit(exitCode)
}
function header(message: string, opts?: { enable?: boolean }) {
const { enable } = opts ?? {}
if (!enable) return
console.log(chalk.bold.green(`${message}\n`))
}