bump-engines.ts•1.78 kB
import path from 'node:path'
import arg from 'arg'
import { execaCommand } from 'execa'
import { bold, dim, red, underline } from 'kleur/colors'
const argv = arg({})
const usage = `
${bold('Usage')}
\t(${dim('pnpm bump-engines 2.19.0-39.c1455d0b443d66b0d9db9bcb1bb9ee0d5bbc511d')}
\t{${dim('pnpm bump-engines latest')}
\t{${dim('pnpm bump-engines integration')}
\t{${dim('pnpm bump-engines patch')}
`
async function main() {
  let version = argv._[0]
  if (!version) {
    console.error(`No Version Found\n${usage}`)
    console.log(`Defaulting to ${dim('latest')}`)
    version = 'latest'
  }
  // Update `@prisma/engines-version` version in all package.json
  await run(path.join(__dirname, '..'), `pnpm update -r @prisma/engines-version@${version}`)
  // Update `@prisma/prisma-schema-wasm` version in all package.json
  await run(path.join(__dirname, '..'), `pnpm update -r @prisma/prisma-schema-wasm@${version}`)
  // Update `@prisma/query-engine-wasm` version in all package.json
  await run(path.join(__dirname, '..'), `pnpm update -r @prisma/query-engine-wasm@${version}`)
  // Update `@prisma/query-compiler-wasm` version in all package.json
  await run(path.join(__dirname, '..'), `pnpm update -r @prisma/query-compiler-wasm@${version}`)
  await run(path.join(__dirname, '..'), `pnpm run --filter @prisma/engines dev`)
  await run(path.join(__dirname, '..'), `pnpm run --filter @prisma/engines postinstall`)
}
void main()
async function run(cwd: string, cmd: string): Promise<void> {
  console.log(underline('./' + cwd).padEnd(20), bold(cmd))
  try {
    await execaCommand(cmd, {
      cwd,
      stdio: 'inherit',
    })
  } catch (e) {
    throw new Error(bold(red(`Error running ${bold(cmd)} in ${underline(cwd)}:`)) + (e.stderr || e.stack || e.message))
  }
}