cal/scripts/ts-check-changed-files.ts
Alex Johansson 5a25e6daee
ignore `.js` files in type checker (#1108)
makes stuff like #1085 not fail
2021-11-02 16:04:25 +02:00

38 lines
1.1 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* eslint-disable @typescript-eslint/no-explicit-any */
import { execSync } from "child_process";
const diff = execSync(`git diff --name-only origin/main HEAD`).toString();
const files = diff
.trim()
.split("\n")
.map((file) => file.trim())
.filter(Boolean)
.filter((file) => file.endsWith(".ts") || file.endsWith(".tsx"));
console.log(" Changed files:");
console.log(files.map((str) => ` - ${str}`).join("\n"));
try {
console.log("⏳ Checking type errors..");
execSync("yarn tsc --noEmit", {});
console.log("😻 No errors!");
} catch (_err) {
const err = _err as any;
const output = err.stdout.toString() as string;
const filesWithTypeErrors = files.filter((file) => output.includes(file));
if (!filesWithTypeErrors.length) {
console.log(`🎉 You haven't introduced any new type errors!`);
process.exit(0);
}
console.log("❌ ❌ ❌ You seem to have touched files that have type errors ❌ ❌ ❌");
console.log("🙏 Please inspect the following files:");
console.log(filesWithTypeErrors.map((str) => ` - ${str}`).join("\n"));
process.exit(1);
}