UNPKG

6.23 kBPlain TextView Raw
1import { CliCommandDefinition, CliCommandDefinitionOption, CliProgramDefinition } from './types';
2
3const globalOptions: CliCommandDefinitionOption[] = [
4 {
5 name: 'global1',
6 flag: 'g',
7 description: 'Global 1 option description',
8 },
9 {
10 name: 'global2',
11 flag: '-l',
12 valueType: 'string',
13 },
14];
15
16const defs: CliCommandDefinition[] = [
17 {
18 name: 'build',
19 description: 'my description',
20 handler: parsed => {
21 // console.log(`running ${parsed.parsedCommandName}`);
22 },
23 arguments: [
24 {
25 name: 'src',
26 description: 'Source file',
27 prompt: {
28 message: 'Enter Source',
29 type: 'list',
30 choices: ['a', 'b', 'c'],
31 },
32 },
33 {
34 name: 'dest',
35 description: 'Desination File',
36 isOptional: true,
37 default: 'Default Value',
38 },
39 {
40 name: 'thirdarg',
41 description: 'Another arg',
42 // isOptional: true, // default value should affect this as set
43 default: 'small',
44 validate: /^(large|medium|small)$/i,
45 },
46 ],
47 options: [
48 {
49 name: 'output',
50 flag: '-o',
51 description: 'output description',
52 },
53 {
54 name: 'transform',
55 flag: '-t',
56 description: 'test transform',
57 transform: val => {
58 return `tranformed:${val}`;
59 },
60 },
61 {
62 name: 'noValueType',
63 description: 'to test for default valueType',
64 },
65 {
66 name: 'tobool',
67 flag: '-b',
68 description: 'test bool valuetype',
69 valueType: 'boolean',
70 },
71 {
72 name: 'tobooldefaulttrue',
73 description: 'test bool valuetype',
74 valueType: 'boolean',
75 default: true,
76 },
77 {
78 name: 'tostring',
79 description: 'test string valuetype',
80 valueType: 'string',
81 },
82 {
83 name: 'tonumber',
84 description: 'test number valuetype',
85 valueType: 'number',
86 },
87 {
88 name: 'validation',
89 description: 'Validation',
90 validate: /^(large|medium|small)$/i,
91 valueType: 'string',
92 },
93 {
94 name: 'dashedName',
95 description: 'Dashed Name',
96 valueType: 'string',
97 },
98 ],
99 },
100 {
101 name: 'build optional',
102 description: 'my description (build optional)',
103 handler: parsed => {
104 // console.log(`running ${parsed.parsedCommandName}`);
105 },
106 arguments: [
107 {
108 name: 'src',
109 },
110 {
111 name: 'dest',
112 isOptional: true,
113 },
114 ],
115 options: [
116 {
117 name: 'output',
118 flag: '-o',
119 description: 'output description',
120 },
121 ],
122 },
123 {
124 name: 'build sub',
125 description: 'my description (build sub)',
126 handler: parsed => {
127 // console.log(`running ${parsed.parsedCommandName}`);
128 },
129 arguments: [
130 {
131 name: 'src',
132 },
133 {
134 name: 'dest',
135 },
136 ],
137 options: [
138 {
139 name: 'output',
140 flag: 'o',
141 description: 'output description',
142 },
143 ],
144 },
145 {
146 name: 'variadic',
147 description: 'my description (variadic)',
148 handler: parsed => {
149 // console.log(`running ${parsed.parsedCommandName}`);
150 },
151 arguments: [
152 {
153 name: 'src',
154 },
155 {
156 name: 'dest',
157 },
158 {
159 name: 'variadicarg',
160 isVariadic: true,
161 },
162 ],
163 options: [
164 {
165 name: 'output',
166 flag: '-o',
167 description: 'output description',
168 },
169 ],
170 },
171 {
172 name: 'camelCommand',
173 description: 'Command with camel case name',
174 handler: parsed => {
175 // console.log(`running ${parsed.parsedCommandName}`);
176 },
177 arguments: [
178 {
179 name: 'src',
180 description: 'Source file',
181 },
182 {
183 name: 'dest',
184 description: 'Desination File',
185 isOptional: true,
186 default: 'Default Value',
187 },
188 ],
189 options: [
190 {
191 name: 'output',
192 flag: '-o',
193 description: 'output description',
194 },
195 ],
196 },
197];
198
199export const def: CliProgramDefinition = {
200 name: 'mr',
201 defaultCommandName: 'build',
202 // options: globalOptions,
203 commands: defs,
204 description: 'global bin description',
205 examples: ['mr myfile.txt out.txt -g', 'mr blah blah -o'],
206};
207
208export const dynamicProg: CliProgramDefinition = {
209 name: 'mr',
210 defaultCommandName: 'build',
211 commands: [
212 {
213 name: 'build',
214 description: 'Command with camel case name',
215 allowDynamicOptions: true,
216 options: [
217 {
218 name: 'output',
219 flag: '-o',
220 description: 'output description',
221 },
222 ],
223 },
224 ],
225};