#!/usr/bin/env bunimport { rm } from "fs/promises"import path from "path"import { parseArgs } from "util"const root = path.resolve(import.meta.dir, "..")const file = path.join(root, "UPCOMING_CHANGELOG.md")const { values, positionals } = parseArgs({args: Bun.argv.slice(2),options: {from: { type: "string", short: "f" },to: { type: "string", short: "t" },variant: { type: "string", default: "low" },quiet: { type: "boolean", default: false },print: { type: "boolean", default: false },help: { type: "boolean", short: "h", default: false },},allowPositionals: true,})const args = [...positionals]if (values.from) args.push("--from", values.from)if (values.to) args.push("--to", values.to)if (values.help) {console.log(`Usage: bun script/changelog.ts [options]Generates UPCOMING_CHANGELOG.md by running the opencode changelog command.Options:-f, --from <version> Starting version (default: latest non-draft GitHub release)-t, --to <ref> Ending ref (default: HEAD)--variant <name> Thinking variant for opencode run (default: low)--quiet Suppress opencode command output unless it fails--print Print the generated UPCOMING_CHANGELOG.md after success-h, --help Show this help messageExamples:bun script/changelog.tsbun script/changelog.ts --from 1.0.200bun script/changelog.ts -f 1.0.200 -t 1.0.205`)process.exit(0)}await rm(file, { force: true })const quiet = values.quietconst cmd = ["opencode", "run"]cmd.push("--variant", values.variant)cmd.push("--command", "changelog", "--", ...args)const proc = Bun.spawn(cmd, {cwd: root,stdin: "inherit",stdout: quiet ? "pipe" : "inherit",stderr: quiet ? "pipe" : "inherit",})const [out, err] = quiet? await Promise.all([new Response(proc.stdout).text(), new Response(proc.stderr).text()]): ["", ""]const code = await proc.exitedif (code === 0) {if (values.print) process.stdout.write(await Bun.file(file).text())process.exit(0)}if (quiet) {if (out) process.stdout.write(out)if (err) process.stderr.write(err)}process.exit(code)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。