UNPKG

21.5 kBJavaScriptView Raw
1#!/usr/bin/env node
2"use strict";
3Object.defineProperty(exports, "__esModule", { value: true });
4const tslib_1 = require("tslib");
5const chalk = tslib_1.__importStar(require("chalk"));
6const debug_1 = tslib_1.__importDefault(require("debug"));
7const fs = tslib_1.__importStar(require("fs"));
8const CleanCommandModule_1 = require("./commands/CleanCommandModule");
9const CreateCommandModule_1 = require("./commands/CreateCommandModule");
10const EntrypointCommandModule_1 = require("./commands/EntrypointCommandModule");
11const InitCommandModule_1 = require("./commands/InitCommandModule");
12const EN_CLIOPTION_1 = require("./EN_CLIOPTION");
13const CreateTsIndexOption_1 = require("./options/CreateTsIndexOption");
14const CTIUtility_1 = require("./tools/CTIUtility");
15const yargs = require("yargs");
16const log = debug_1.default('cti:cti-cli');
17const version = '1.10.2';
18const optionMap = {
19 [EN_CLIOPTION_1.EN_CLI_OPTION.FILEFIRST]: {
20 alias: 'f',
21 describe: 'export list create filefirst, no option false, option true',
22 type: 'boolean',
23 },
24 [EN_CLIOPTION_1.EN_CLI_OPTION.ADD_NEWLINE]: {
25 alias: 'n',
26 describe: 'deside add newline file ending. no option true, option false',
27 type: 'boolean',
28 },
29 [EN_CLIOPTION_1.EN_CLI_OPTION.USE_SEMICOLON]: {
30 alias: 's',
31 describe: 'deside use semicolon line ending. no option true, option false',
32 type: 'boolean',
33 },
34 [EN_CLIOPTION_1.EN_CLI_OPTION.INCLUDE_CWD]: {
35 alias: 'c',
36 describe: 'deside include cwd directory in task. no option true, option false',
37 type: 'boolean',
38 },
39 [EN_CLIOPTION_1.EN_CLI_OPTION.USE_TIMESTAMP]: {
40 alias: 't',
41 describe: `deside use timestamp(YYYY-MM-DD HH:mm) top line comment. \nno option false, option true`,
42 type: 'boolean',
43 },
44 [EN_CLIOPTION_1.EN_CLI_OPTION.EXCLUDES]: {
45 alias: 'e',
46 array: true,
47 describe: `pass exclude directory. default exclude directory is ['@types', 'typings', '__test__', '__tests__']`,
48 type: 'string',
49 },
50 [EN_CLIOPTION_1.EN_CLI_OPTION.FILE_EXCLUDES]: {
51 alias: 'i',
52 array: true,
53 describe: 'pass exclude pattern of filename. default exclude directory is "[]"',
54 type: 'string',
55 },
56 [EN_CLIOPTION_1.EN_CLI_OPTION.TARGET_EXTS]: {
57 alias: 'x',
58 array: true,
59 describe: `pass include extname. default extname is ["ts", "tsx"]. extname \npass without dot charactor.`,
60 type: 'string',
61 },
62 [EN_CLIOPTION_1.EN_CLI_OPTION.WITHOUT_COMMENT]: {
63 alias: 'w',
64 describe: 'remove comment from created output',
65 type: 'boolean',
66 },
67 [EN_CLIOPTION_1.EN_CLI_OPTION.VERBOSE]: {
68 alias: 'v',
69 describe: 'verbose logging message. to option false, option true',
70 type: 'boolean',
71 },
72 [EN_CLIOPTION_1.EN_CLI_OPTION.QUOTE]: {
73 alias: 'q',
74 describe: "deside quote character. default quote character is '",
75 type: 'string',
76 },
77};
78function createCommandOptionBuilder(args) {
79 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.FILEFIRST, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.FILEFIRST]);
80 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.ADD_NEWLINE, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.ADD_NEWLINE]);
81 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.USE_SEMICOLON, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.USE_SEMICOLON]);
82 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.INCLUDE_CWD, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.INCLUDE_CWD]);
83 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.USE_TIMESTAMP, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.USE_TIMESTAMP]);
84 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.EXCLUDES, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.EXCLUDES]);
85 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.FILE_EXCLUDES, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.FILE_EXCLUDES]);
86 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.TARGET_EXTS, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.TARGET_EXTS]);
87 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.VERBOSE, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.VERBOSE]);
88 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.WITHOUT_COMMENT, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.WITHOUT_COMMENT]);
89 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.QUOTE, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.QUOTE]);
90 return args;
91}
92function createCommandActor(args) {
93 return tslib_1.__awaiter(this, void 0, void 0, function* () {
94 const cwds = args.cwds;
95 const cliCwd = process.cwd();
96 if (!cwds) {
97 console.log(chalk.default.magenta('Enter working directory, '));
98 console.log(chalk.default.red('cti [working directory]'));
99 process.exit(1);
100 }
101 if (typeof cwds === 'string') {
102 const createCommand = new CreateCommandModule_1.CreateCommandModule();
103 const options = CreateTsIndexOption_1.createOptionBuilder(args, cwds);
104 return createCommand.do(cliCwd, options);
105 }
106 if (typeof cwds !== 'string' && Array.isArray(cwds)) {
107 return Promise.all(cwds
108 .filter((cwd) => fs.existsSync(cwd))
109 .map((cwd) => {
110 const createCommand = new CreateCommandModule_1.CreateCommandModule();
111 const options = CreateTsIndexOption_1.createOptionBuilder(args, cwd);
112 return createCommand.do(cliCwd, options);
113 }));
114 }
115 });
116}
117yargs
118 .command('$0 [cwds...]', 'create index.ts file in working directory', createCommandOptionBuilder, createCommandActor)
119 .command('create [cwds...]', 'create index.ts file in working directory', createCommandOptionBuilder, createCommandActor)
120 .command('entrypoint [cwds...]', 'create entrypoint.ts file in working directory', (args) => {
121 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.ADD_NEWLINE, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.ADD_NEWLINE]);
122 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.USE_SEMICOLON, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.USE_SEMICOLON]);
123 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.INCLUDE_CWD, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.INCLUDE_CWD]);
124 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.USE_TIMESTAMP, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.USE_TIMESTAMP]);
125 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.EXCLUDES, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.EXCLUDES]);
126 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.FILE_EXCLUDES, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.FILE_EXCLUDES]);
127 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.TARGET_EXTS, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.TARGET_EXTS]);
128 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.VERBOSE, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.VERBOSE]);
129 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.WITHOUT_COMMENT, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.WITHOUT_COMMENT]);
130 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.QUOTE, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.QUOTE]);
131 return args;
132}, (args) => tslib_1.__awaiter(this, void 0, void 0, function* () {
133 const cwds = args.cwds;
134 const cliCwd = process.cwd();
135 if (!cwds) {
136 console.log(chalk.default.magenta('Enter working directory, '));
137 console.log(chalk.default.red('cti [working directory]'));
138 process.exit(1);
139 }
140 if (typeof cwds === 'string') {
141 const entrypointCommand = new EntrypointCommandModule_1.EntrypointCommandModule();
142 const options = CreateTsIndexOption_1.entrypointOptionBuilder(args, cwds);
143 return entrypointCommand.do(cliCwd, options);
144 }
145 if (typeof cwds !== 'string' && Array.isArray(cwds)) {
146 return Promise.all(cwds
147 .filter((cwd) => fs.existsSync(cwd))
148 .map((cwd) => {
149 const entrypointCommand = new EntrypointCommandModule_1.EntrypointCommandModule();
150 const options = CreateTsIndexOption_1.entrypointOptionBuilder(args, cwd);
151 return entrypointCommand.do(cliCwd, options);
152 }));
153 }
154}))
155 .command('init [cwds...]', 'create .ctirc file in working directory', (args) => {
156 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.ADD_NEWLINE, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.ADD_NEWLINE]);
157 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.USE_TIMESTAMP, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.USE_TIMESTAMP]);
158 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.VERBOSE, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.VERBOSE]);
159 return args;
160}, (args) => tslib_1.__awaiter(this, void 0, void 0, function* () {
161 const cwds = CTIUtility_1.isNotEmpty(args.cwds) ? args.cwds : [process.cwd()];
162 const cliCwd = process.cwd();
163 log('init command start, ', cwds);
164 if (typeof cwds === 'string') {
165 const initCommandModule = new InitCommandModule_1.InitCommandModule();
166 const options = CreateTsIndexOption_1.initOptionBuilder(args, cwds);
167 return initCommandModule.do(cliCwd, options);
168 }
169 if (typeof cwds !== 'string' && Array.isArray(cwds)) {
170 return Promise.all(cwds
171 .filter((cwd) => fs.existsSync(cwd))
172 .map((cwd) => {
173 const initCommandModule = new InitCommandModule_1.InitCommandModule();
174 const options = CreateTsIndexOption_1.initOptionBuilder(args, cwd);
175 return initCommandModule.do(cliCwd, options);
176 }));
177 }
178}))
179 .command('clean [cwds...]', 'clean index.ts or entrypoint.ts file in working directory', (args) => {
180 args.option(EN_CLIOPTION_1.EN_CLI_OPTION.VERBOSE, optionMap[EN_CLIOPTION_1.EN_CLI_OPTION.VERBOSE]);
181 return args;
182}, (args) => tslib_1.__awaiter(this, void 0, void 0, function* () {
183 const cwds = args['cwds'];
184 const cliCwd = process.cwd();
185 if (!cwds) {
186 console.log(chalk.default.magenta('Enter working directory, '));
187 console.log(chalk.default.red('cti [working directory]'));
188 process.exit(1);
189 }
190 if (typeof cwds === 'string') {
191 const cleanCommand = new CleanCommandModule_1.CleanCommandModule();
192 const options = CreateTsIndexOption_1.cleanOptionBuilder(args, cwds);
193 yield cleanCommand.do(cliCwd, options);
194 }
195 if (typeof cwds !== 'string' && Array.isArray(cwds)) {
196 return Promise.all(cwds
197 .filter((cwd) => fs.existsSync(cwd))
198 .map((cwd) => {
199 const cleanCommand = new CleanCommandModule_1.CleanCommandModule();
200 const options = CreateTsIndexOption_1.cleanOptionBuilder(args, cwd);
201 return cleanCommand.do(cliCwd, options);
202 }));
203 }
204 return true;
205}))
206 .version(version, 'version', 'display version information')
207 .help().argv;
208//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3RpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2N0aS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBR0EscURBQStCO0FBQy9CLDBEQUEwQjtBQUMxQiwrQ0FBeUI7QUFFekIsc0VBQW1FO0FBQ25FLHdFQUFxRTtBQUNyRSxnRkFBNkU7QUFDN0Usb0VBQWlFO0FBQ2pFLGlEQUErQztBQUMvQyx1RUFLdUM7QUFPdkMsbURBQWdEO0FBRWhELCtCQUFnQztBQUNoQyxNQUFNLEdBQUcsR0FBRyxlQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFakMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDO0FBRXpCLE1BQU0sU0FBUyxHQUE4QztJQUMzRCxDQUFDLDRCQUFhLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDekIsS0FBSyxFQUFFLEdBQUc7UUFDVixRQUFRLEVBQUUsNERBQTREO1FBQ3RFLElBQUksRUFBRSxTQUFTO0tBQ2hCO0lBQ0QsQ0FBQyw0QkFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzNCLEtBQUssRUFBRSxHQUFHO1FBQ1YsUUFBUSxFQUFFLDhEQUE4RDtRQUN4RSxJQUFJLEVBQUUsU0FBUztLQUNoQjtJQUNELENBQUMsNEJBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRTtRQUM3QixLQUFLLEVBQUUsR0FBRztRQUNWLFFBQVEsRUFBRSxnRUFBZ0U7UUFDMUUsSUFBSSxFQUFFLFNBQVM7S0FDaEI7SUFDRCxDQUFDLDRCQUFhLENBQUMsV0FBVyxDQUFDLEVBQUU7UUFDM0IsS0FBSyxFQUFFLEdBQUc7UUFDVixRQUFRLEVBQUUsb0VBQW9FO1FBQzlFLElBQUksRUFBRSxTQUFTO0tBQ2hCO0lBQ0QsQ0FBQyw0QkFBYSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1FBQzdCLEtBQUssRUFBRSxHQUFHO1FBQ1YsUUFBUSxFQUFFLHlGQUF5RjtRQUNuRyxJQUFJLEVBQUUsU0FBUztLQUNoQjtJQUNELENBQUMsNEJBQWEsQ0FBQyxRQUFRLENB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
\No newline at end of file