UNPKG

@lmc-eu/spirit-codemods

Version:

Codemods scripts for Spirit Design System packages

44 lines (40 loc) 2.1 kB
// src/cli.ts import { $ } from "execa"; import sade from "sade"; import { fs, path } from "zx"; // src/helpers/message.ts import { chalk } from "zx"; var errorMessage = (message) => console.error(chalk.red(message)); var logMessage = (message) => console.log(message); // src/helpers/path.ts import filedirname from "filedirname"; var [_filename, _dirname] = filedirname(); // src/cli.ts var packageJson = fs.readJsonSync(path.resolve(_dirname, "./package.json")); async function cli(args) { sade("spirit-codemods", true).version(packageJson.version).describe(packageJson.description).option("-p, --path", "Path to the code to be transformed").example("-p ./").option("-t, --transformation", "Codemod transformation name to run").example("-t v2/web-react/codemodName").option("-e, --extensions", "Extensions to look for when transforming files, default: ts,tsx,js,jsx").example("-e ts, tsx, js, jsx").option("-i, --ignore", "Ignore files or directories, default: **/node_modules/**").example("-i **/node_modules/**").option("-r, --parser", "Parser to use (babel, ts, tsx, flow), default: tsx").example("--parser babel").action(async ({ path: codePath, transformation, extensions, ignore, parser }) => { const defaultExtensions = "ts,tsx,js,jsx"; const defaultIgnore = "**/node_modules/**"; const defaultParser = "tsx"; if (!codePath || !fs.existsSync(codePath)) { errorMessage(codePath); errorMessage("Please provide a valid path"); process.exit(1); } if (!transformation) { errorMessage("Please provide a codemod name"); process.exit(1); } const codemodPath = path.resolve(_dirname, `./transforms/${transformation}.ts`); if (!fs.existsSync(codemodPath)) { errorMessage("Codemod does not exist"); process.exit(1); } const { stdout } = await $`jscodeshift --transform ${codemodPath} --extensions ${extensions || defaultExtensions} --ignore-pattern=${ignore || defaultIgnore} --parser=${parser || defaultParser} ${codePath}`; logMessage(stdout); process.exit(0); }).parse(args); } export { cli };