From 3f4b1ef4cccefdb882f20eb47fff8de5c6e58427 Mon Sep 17 00:00:00 2001 From: Daniel Dipper Date: Tue, 19 Jan 2021 15:57:46 +0000 Subject: [PATCH] feat: add prop codemod --- bin/cli.js | 12 +-- transforms/add-button-margin-prop/README.md | 23 ----- .../ExportDefaultDeclaration.input.js | 4 - .../ExportDefaultDeclaration.output.js | 4 - .../ExportNamedDeclaration.input.js | 4 - .../ExportNamedDeclaration.output.js | 4 - .../SiblingCombinator.input.js | 6 -- .../SiblingCombinator.output.js | 6 -- .../__tests__/add-button-margin-prop.js | 4 - .../add-button-margin-prop.js | 84 ------------------- transforms/add-prop/README.md | 58 +++++++++++-- .../__testfixtures__/BooleanFalse.input.js | 3 + .../__testfixtures__/BooleanFalse.output.js | 3 + .../{Basic.input.js => BooleanTrue.input.js} | 2 +- .../__testfixtures__/BooleanTrue.output.js | 3 + .../add-prop/__testfixtures__/Bug.input.js | 2 - .../add-prop/__testfixtures__/Bug.output.js | 2 - ...output.js => NoTransformRequired.input.js} | 0 .../NoTransformRequired.output.js | 0 .../add-prop/__testfixtures__/Number.input.js | 4 + .../__testfixtures__/Number.output.js | 3 + .../add-prop/__testfixtures__/String.input.js | 3 + .../__testfixtures__/String.output.js | 3 + transforms/add-prop/__tests__/add-prop.js | 70 ++++++++++++++-- transforms/builder/addAttribute.js | 32 +++++-- 25 files changed, 172 insertions(+), 167 deletions(-) delete mode 100644 transforms/add-button-margin-prop/README.md delete mode 100644 transforms/add-button-margin-prop/__testfixtures__/ExportDefaultDeclaration.input.js delete mode 100644 transforms/add-button-margin-prop/__testfixtures__/ExportDefaultDeclaration.output.js delete mode 100644 transforms/add-button-margin-prop/__testfixtures__/ExportNamedDeclaration.input.js delete mode 100644 transforms/add-button-margin-prop/__testfixtures__/ExportNamedDeclaration.output.js delete mode 100644 transforms/add-button-margin-prop/__testfixtures__/SiblingCombinator.input.js delete mode 100644 transforms/add-button-margin-prop/__testfixtures__/SiblingCombinator.output.js delete mode 100644 transforms/add-button-margin-prop/__tests__/add-button-margin-prop.js delete mode 100644 transforms/add-button-margin-prop/add-button-margin-prop.js create mode 100644 transforms/add-prop/__testfixtures__/BooleanFalse.input.js create mode 100644 transforms/add-prop/__testfixtures__/BooleanFalse.output.js rename transforms/add-prop/__testfixtures__/{Basic.input.js => BooleanTrue.input.js} (59%) create mode 100644 transforms/add-prop/__testfixtures__/BooleanTrue.output.js delete mode 100644 transforms/add-prop/__testfixtures__/Bug.input.js delete mode 100644 transforms/add-prop/__testfixtures__/Bug.output.js rename transforms/add-prop/__testfixtures__/{Basic.output.js => NoTransformRequired.input.js} (100%) create mode 100644 transforms/add-prop/__testfixtures__/NoTransformRequired.output.js create mode 100644 transforms/add-prop/__testfixtures__/Number.input.js create mode 100644 transforms/add-prop/__testfixtures__/Number.output.js create mode 100644 transforms/add-prop/__testfixtures__/String.input.js create mode 100644 transforms/add-prop/__testfixtures__/String.output.js diff --git a/bin/cli.js b/bin/cli.js index bb982d7..43dc38f 100644 --- a/bin/cli.js +++ b/bin/cli.js @@ -106,11 +106,6 @@ function Cli() { .description("Wrap children of DialogFullScreen in AppWrapper") .action((target, command) => runTransform(target, command, program)); - program - .command("add-button-margin-prop ") - .description("adds margin to button when there is more than one") - .action((target, command) => runTransform(target, command, program)); - program .command("message-remove-classic-theme ") .description("Remove classic theme props from the message component") @@ -128,6 +123,13 @@ function Cli() { ) .action((target, command) => runTransform(target, command, program)); + program + .command("add-prop ") + .description("adds a new prop and value to the specified component") + .action((target, component, prop, value, command) => + runTransform(target, command, program, { component, prop, value }) + ); + program .command("rename-prop ") .description( diff --git a/transforms/add-button-margin-prop/README.md b/transforms/add-button-margin-prop/README.md deleted file mode 100644 index 311e393..0000000 --- a/transforms/add-button-margin-prop/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# add-button-margin-prop - -This codemod will find where there are two or more buttons and add the prop `ml` to the buttons that are siblings. This will appear as `ml={2}`. - -```diff -- - a - - - ); \ No newline at end of file diff --git a/transforms/add-button-margin-prop/__testfixtures__/SiblingCombinator.output.js b/transforms/add-button-margin-prop/__testfixtures__/SiblingCombinator.output.js deleted file mode 100644 index 5c4956b..0000000 --- a/transforms/add-button-margin-prop/__testfixtures__/SiblingCombinator.output.js +++ /dev/null @@ -1,6 +0,0 @@ -export const SiblingCombinator = () => (<> - - a - - - ); \ No newline at end of file diff --git a/transforms/add-button-margin-prop/__tests__/add-button-margin-prop.js b/transforms/add-button-margin-prop/__tests__/add-button-margin-prop.js deleted file mode 100644 index 961da6c..0000000 --- a/transforms/add-button-margin-prop/__tests__/add-button-margin-prop.js +++ /dev/null @@ -1,4 +0,0 @@ -import defineTest from "../../../defineTest"; - -// defineTest(__dirname, "add-button-margin-prop", null, "ExportDefaultDeclaration"); -defineTest(__dirname, "add-button-margin-prop", null, "ExportNamedDeclaration"); diff --git a/transforms/add-button-margin-prop/add-button-margin-prop.js b/transforms/add-button-margin-prop/add-button-margin-prop.js deleted file mode 100644 index 7b18381..0000000 --- a/transforms/add-button-margin-prop/add-button-margin-prop.js +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Convert all Buttons after the first button from ++ +``` + +### Number +`npx carbon-codemod add-prop src carbon-react/lib/components/button ml 2` +```js +import Button from "carbon-react/lib/components/button"; +``` ```diff -- Content -+ Content +- ++ ``` -If there is a pattern that you use that is not transformed, please file a feature request. +### Boolean - True +`npx carbon-codemod add-prop src carbon-react/lib/components/button hasBorder true` -## Usage +```js +import Button from "carbon-react/lib/components/button"; +``` +```diff +- ++ +``` + +### Boolean - False +`npx carbon-codemod add-prop src carbon-react/lib/components/button hasBorder true` -`npx carbon-codemod tile-update-padding-prop ` +```js +import Button from "carbon-react/lib/components/button"; +``` +```diff +- ++ +``` \ No newline at end of file diff --git a/transforms/add-prop/__testfixtures__/BooleanFalse.input.js b/transforms/add-prop/__testfixtures__/BooleanFalse.input.js new file mode 100644 index 0000000..45b4254 --- /dev/null +++ b/transforms/add-prop/__testfixtures__/BooleanFalse.input.js @@ -0,0 +1,3 @@ +import Button from "carbon-react/lib/components/button"; + +export const asFalse = () =>