@@ -8,6 +8,33 @@ const yargs = require("yargs/yargs");
88const { hideBin } = require ( "yargs/helpers" ) ;
99const path = require ( "path" ) ;
1010
11+ /** @type {import('inquirer').CheckboxChoiceOptions[] } */
12+ const preset18Choices = [
13+ { checked : false , value : "context-any" } ,
14+ { checked : true , value : "deprecated-react-type" } ,
15+ { checked : true , value : "deprecated-sfc-element" } ,
16+ { checked : true , value : "deprecated-sfc" } ,
17+ { checked : true , value : "deprecated-stateless-component" } ,
18+ { checked : false , value : "implicit-children" } ,
19+ { checked : false , value : "useCallback-implicit-any" } ,
20+ ] ;
21+
22+ /** @type {import('inquirer').CheckboxChoiceOptions[] } */
23+ const preset19Choices = [
24+ { checked : true , value : "deprecated-legacy-ref" } ,
25+ { checked : true , value : "deprecated-prop-types-types" } ,
26+ { checked : true , value : "deprecated-react-child" } ,
27+ { checked : true , value : "deprecated-react-node-array" } ,
28+ { checked : true , value : "deprecated-react-fragment" } ,
29+ { checked : true , value : "deprecated-react-text" } ,
30+ { checked : true , value : "deprecated-void-function-component" } ,
31+ { checked : false , value : "no-implicit-ref-callback-return" } ,
32+ { checked : false , value : "react-element-default-any-props" } ,
33+ { checked : true , value : "refobject-defaults" } ,
34+ { checked : true , value : "scoped-jsx" } ,
35+ { checked : true , value : "useRef-required-initial" } ,
36+ ] ;
37+
1138async function main ( ) {
1239 const transformsRoot = path . join ( __dirname , "../transforms" ) ;
1340 const transforms = fs
@@ -43,6 +70,12 @@ async function main() {
4370 default : "**/node_modules/**" ,
4471 type : "string" ,
4572 } )
73+ . option ( "yes" , {
74+ description :
75+ "Automatically accepts all prompts. Useful when no user input is available or desired." ,
76+ default : false ,
77+ type : "boolean" ,
78+ } )
4679 . option ( "verbose" , { default : false , type : "boolean" } )
4780 // Ignoring `build`: https://www.digitalocean.com/community/tools/glob?comments=true&glob=%2A%2A%2F%7Bnode_modules%2Cbuild%7D%2F%2A%2A&matches=false&tests=package%2Fnode_modules%2Ftest.js&tests=package%2Fbuild%2Ftest.js&tests=package%2Ftest.js
4881 . example (
@@ -53,7 +86,7 @@ async function main() {
5386 ) ;
5487 } ,
5588 async ( argv ) => {
56- const { codemod, dry, paths, verbose } = argv ;
89+ const { codemod, dry, paths, verbose, yes } = argv ;
5790
5891 // TODO: npx instead?
5992 const jscodeshiftExecutable = require . resolve (
@@ -73,46 +106,46 @@ async function main() {
73106
74107 if ( codemod === "preset-18" ) {
75108 const { default : inquirer } = await inquirerImport ;
76- const { presets } = await inquirer . prompt ( [
77- {
78- message : "Pick transforms to apply" ,
79- name : "presets" ,
80- type : "checkbox" ,
81- choices : [
82- { checked : false , value : "context-any" } ,
83- { checked : true , value : "deprecated-react-type" } ,
84- { checked : true , value : "deprecated-sfc-element" } ,
85- { checked : true , value : "deprecated-sfc" } ,
86- { checked : true , value : "deprecated-stateless-component" } ,
87- { checked : false , value : "implicit-children" } ,
88- { checked : false , value : "useCallback-implicit-any" } ,
89- ] ,
90- } ,
91- ] ) ;
109+
110+ const { presets } = yes
111+ ? {
112+ presets : preset18Choices
113+ . filter ( ( choice ) => {
114+ return choice . checked ;
115+ } )
116+ . map ( ( choice ) => {
117+ return choice . value ;
118+ } ) ,
119+ }
120+ : await inquirer . prompt ( [
121+ {
122+ message : "Pick transforms to apply" ,
123+ name : "presets" ,
124+ type : "checkbox" ,
125+ choices : preset18Choices ,
126+ } ,
127+ ] ) ;
92128 args . push ( `--preset18Transforms="${ presets . join ( "," ) } "` ) ;
93129 } else if ( codemod === "preset-19" ) {
94130 const { default : inquirer } = await inquirerImport ;
95- const { presets } = await inquirer . prompt ( [
96- {
97- message : "Pick transforms to apply" ,
98- name : "presets" ,
99- type : "checkbox" ,
100- choices : [
101- { checked : true , value : "deprecated-legacy-ref" } ,
102- { checked : true , value : "deprecated-prop-types-types" } ,
103- { checked : true , value : "deprecated-react-child" } ,
104- { checked : true , value : "deprecated-react-node-array" } ,
105- { checked : true , value : "deprecated-react-fragment" } ,
106- { checked : true , value : "deprecated-react-text" } ,
107- { checked : true , value : "deprecated-void-function-component" } ,
108- { checked : false , value : "no-implicit-ref-callback-return" } ,
109- { checked : false , value : "react-element-default-any-props" } ,
110- { checked : true , value : "refobject-defaults" } ,
111- { checked : true , value : "scoped-jsx" } ,
112- { checked : true , value : "useRef-required-initial" } ,
113- ] ,
114- } ,
115- ] ) ;
131+ const { presets } = yes
132+ ? {
133+ presets : preset19Choices
134+ . filter ( ( choice ) => {
135+ return choice . checked ;
136+ } )
137+ . map ( ( choice ) => {
138+ return choice . value ;
139+ } ) ,
140+ }
141+ : await inquirer . prompt ( [
142+ {
143+ message : "Pick transforms to apply" ,
144+ name : "presets" ,
145+ type : "checkbox" ,
146+ choices : preset19Choices ,
147+ } ,
148+ ] ) ;
116149 args . push ( `--preset19Transforms="${ presets . join ( "," ) } "` ) ;
117150 }
118151
0 commit comments