/** * This script runs a task to check alteration files sequence: * Newest files should come last. */ import { execSync } from "child_process"; const alterationFilePrefix = "packages/schemas/alterations/"; const allAlterations = execSync("pnpm cli db alter list", { encoding: "utf-8", }) .split("\n") .filter((filename) => Boolean(filename)) .map((filename) => filename.replace(".js", "")); const diffFiles = execSync("git diff HEAD~1 HEAD --name-only --diff-filter=ACR", { encoding: "utf-8", }); const committedAlterations = diffFiles .split("\n") .filter((filename) => filename.startsWith(alterationFilePrefix)) .map((filename) => filename.replace(alterationFilePrefix, "").replace(".ts", "") ); for (const alteration of committedAlterations) { const index = allAlterations.indexOf(alteration); if (index < allAlterations.length - committedAlterations.length) { throw new Error( `Wrong alteration sequence for committed file: ${alteration}\nAll timestamps of committed alteration files should be greater than the biggest one in the base branch.` ); } }