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`)