tools/index.ts (127 lines of code) (raw):
#!/usr/bin/env vite-node --script
import {
migrateCardThumbnail,
migrateFrontMatter,
writeCleanResources,
} from "./cleaner";
import yargs from "yargs";
import { hideBin } from "yargs/helpers";
import chalk from "chalk";
import { dumpObsoletes, testObsoletes } from "./obsoletes";
const info = chalk.hex("#087CFA");
const success = chalk.hex("#21D789");
const error = chalk.hex("#F45C4A");
/**
* --help should work once https://github.com/vitest-dev/vitest/pull/3574 is merged and published
* TODO: implement meaningful defaults and configuration options
*/
yargs(hideBin(process.argv))
.command(
"clean",
"run clean script",
{
debug: {
alias: "d",
default: false,
},
},
(args) => {
try {
console.log(info("Going to run clean up script"));
writeCleanResources();
console.log(success("Clean up script successful 🎉🎉🎉"));
} catch (e) {
console.log(error("error executing cleanup script"));
if (args.debug) {
console.log(info(e));
}
}
}
)
.command(
"migrate-frontmatter",
"migrate old gatsby frontmatter",
{
debug: {
alias: "d",
default: false,
},
},
(args) => {
try {
console.log(info("Going to clean frontmatter"));
migrateFrontMatter();
console.log(success("cleaning up frontmatter successful 🎉🎉🎉"));
} catch (e) {
console.log(error("error executing frontmatter migration script"));
if (args.debug) {
console.log(info(e));
}
}
}
)
.command(
"migrate-cardthumbnail",
"migrate cardThumbnail to thumbnail",
{
debug: {
alias: "d",
default: false,
},
},
(args) => {
try {
console.log(info("Going to clean migrate cardThumbnail"));
migrateCardThumbnail();
console.log(success("migrate cardThumbnail successful 🎉🎉🎉"));
} catch (e) {
console.log(error("error executing cardThumbnail migration script"));
if (args.debug) {
console.log(info(e));
}
}
}
)
.command(
"dump-obsoletes",
"dump obsoletes for nginx to be picked up",
{
debug: {
alias: "d",
default: false,
},
},
(args) => {
try {
console.log(info("Going to write nginx rules for obsolete documents"));
dumpObsoletes();
console.log(success("nginx rules written successful 🎉🎉🎉"));
} catch (e) {
console.log(error("error writing nginx rules"));
if (args.debug) {
console.log(info(e));
}
}
}
)
.command(
"test-obsoletes [url] [file]",
"test obsoletes against a live nginx server",
(yargs) => {
yargs.positional("file", {
type: "string",
default: "tools/files/g3-urls.txt",
describe: "the file with expected URLs",
});
yargs.positional("url", {
type: "string",
describe: "the url to test obsoletes",
});
},
async (args) => {
try {
console.log(info("Going to test obsoletes against " + args.url));
await testObsoletes(args.file as string, args.url as string);
console.log(success("test obsoletes successful 🎉🎉🎉"));
} catch (e) {
console.log(error("validation error"));
console.log(info(e));
}
}
)
.help().argv;