0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2024-12-16 20:26:19 -05:00
logto/.scripts/check-alterations-sequence.js

37 lines
1.1 KiB
JavaScript
Raw Normal View History

2022-12-29 21:50:56 -05:00
/**
* This script runs a task to check alteration files seqence:
* new files should come last
*
*/
const { execSync } = require("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 --name-only HEAD HEAD~1", {
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 commited file: ${alteration}\nAll timestamps of committed alteration files should be greater than the biggest one in the base branch.`
);
}
}