import { readFile, writeFile } from "fs/promises"; import { execSync } from "child_process"; let ver = process.argv[2]; if (!ver) { console.error(`tag required: bun bun/prepare.js v1.0.0`); process.exit(1); } else if (!/v\d+\.\d+\.\d+/.test(ver)) { console.error(`invalid tag: ${ver}`); process.exit(1); } ver = (/\d+\.\d+\.\d+/.exec(ver) || [])[0] || ""; const pkg = await readFile("./package.json", "utf8"); const pkgnew = pkg.replace(/"version": ".+"/, `"version": "v${ver}"`); await writeFile("./package.json", pkgnew); const spago = await readFile("./spago.yaml", "utf8"); const spagonew = spago.replace(/version: .+/, `version: '${ver}'`); await writeFile("./spago.yaml", spagonew); const readme = await readFile("./README.md", "utf8"); const readmenew = readme.replace( /packages\/purescript-csv-stream\/.+?\//g, `/packages/purescript-csv-stream/${ver}/`, ); await writeFile("./README.md", readmenew); execSync(`git add spago.yaml package.json README.md`); execSync(`git commit -m 'chore: prepare v${ver}'`); execSync(`git tag v${ver}`); execSync(`git push --tags`); execSync(`git push --mirror github-mirror`);