Skip to content

Commit a8be757

Browse files
authored
Update transform file if a custom transform is selected (#15)
1 parent e13f64c commit a8be757

File tree

6 files changed

+55
-1
lines changed

6 files changed

+55
-1
lines changed

.changeset/rich-ladybugs-ring.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"aws-sdk-js-codemod": minor
3+
---
4+
5+
Send updated transform file if a custom transform is selected

src/cli.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,13 @@ import { spawn } from "child_process";
55
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
66
// @ts-ignore: package.json will be imported from dist folders
77
import { version } from "../package.json"; // eslint-disable-line
8-
import { getHelpParagraph, getTransforms } from "./utils";
8+
import {
9+
getArgsWithUpdatedTransformFile,
10+
getHelpParagraph,
11+
getTransformFileFromArgs,
12+
getTransforms,
13+
getUpdatedTransformFile,
14+
} from "./utils";
915

1016
export const run = async (args: string[]): Promise<void> => {
1117
const transforms = getTransforms();
@@ -14,6 +20,12 @@ export const run = async (args: string[]): Promise<void> => {
1420
process.stdout.write(`aws-sdk-js-codemod: ${version}\n\n`);
1521
} else if (args[0] === "--help" || args[0] === "-h") {
1622
process.stdout.write(getHelpParagraph(transforms));
23+
} else if (args.includes("-t") || args.some((arg) => arg.startsWith("--transform="))) {
24+
const transformFile = getTransformFileFromArgs(args);
25+
if (transforms.map(({ name }) => name).includes(transformFile)) {
26+
const updatedTransformFile = getUpdatedTransformFile(transformFile);
27+
args = getArgsWithUpdatedTransformFile(args, updatedTransformFile);
28+
}
1729
}
1830
spawn("npm", ["exec", "jscodeshift", "--", ...args], {
1931
stdio: "inherit",
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
export const getArgsWithUpdatedTransformFile = (
2+
args: string[],
3+
updatedTransformFile: string
4+
): string[] => {
5+
if (args.includes("-t")) {
6+
const transformIndex = args.indexOf("-t");
7+
args[transformIndex + 1] = updatedTransformFile;
8+
return args;
9+
}
10+
11+
const transformArg = args.find((arg) => arg.startsWith("--transform="));
12+
if (!transformArg) {
13+
throw new Error("No transform file specified in -t or --transform.");
14+
}
15+
const transformIndex = args.indexOf(transformArg);
16+
args[transformIndex] = `--transform=${updatedTransformFile}`;
17+
return args;
18+
};

src/utils/getTransformFileFromArgs.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
export const getTransformFileFromArgs = (args: string[]): string => {
2+
if (args.includes("-t")) {
3+
const transformIndex = args.indexOf("-t");
4+
return args[transformIndex + 1];
5+
}
6+
7+
const transformArg = args.find((arg) => arg.startsWith("--transform="));
8+
if (!transformArg) {
9+
throw new Error("No transform file specified in -t or --transform.");
10+
}
11+
return transformArg.split("=")[1];
12+
};

src/utils/getUpdatedTransformFile.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { resolve } from "path";
2+
3+
export const getUpdatedTransformFile = (transformFolder: string) =>
4+
resolve(__dirname, "..", "transforms", transformFolder, "transformer.js");

src/utils/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
1+
export * from "./getArgsWithUpdatedTransformFile";
12
export * from "./getHelpParagraph";
3+
export * from "./getTransformFileFromArgs";
24
export * from "./getTransforms";
5+
export * from "./getUpdatedTransformFile";

0 commit comments

Comments
 (0)