@@ -8,6 +8,33 @@ const yargs = require("yargs/yargs");
8
8
const { hideBin } = require ( "yargs/helpers" ) ;
9
9
const path = require ( "path" ) ;
10
10
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
+
11
38
async function main ( ) {
12
39
const transformsRoot = path . join ( __dirname , "../transforms" ) ;
13
40
const transforms = fs
@@ -43,6 +70,12 @@ async function main() {
43
70
default : "**/node_modules/**" ,
44
71
type : "string" ,
45
72
} )
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
+ } )
46
79
. option ( "verbose" , { default : false , type : "boolean" } )
47
80
// 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
48
81
. example (
@@ -53,7 +86,7 @@ async function main() {
53
86
) ;
54
87
} ,
55
88
async ( argv ) => {
56
- const { codemod, dry, paths, verbose } = argv ;
89
+ const { codemod, dry, paths, verbose, yes } = argv ;
57
90
58
91
// TODO: npx instead?
59
92
const jscodeshiftExecutable = require . resolve (
@@ -73,46 +106,46 @@ async function main() {
73
106
74
107
if ( codemod === "preset-18" ) {
75
108
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
+ ] ) ;
92
128
args . push ( `--preset18Transforms="${ presets . join ( "," ) } "` ) ;
93
129
} else if ( codemod === "preset-19" ) {
94
130
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
+ ] ) ;
116
149
args . push ( `--preset19Transforms="${ presets . join ( "," ) } "` ) ;
117
150
}
118
151
0 commit comments