@done-coding/cli-template 0.6.1-alpha.0 → 0.6.2-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/es/cli.mjs CHANGED
@@ -1,11 +1,9 @@
1
1
  #!/usr/bin/env node
2
- import { c as r } from "./index-9892305e.js";
2
+ import { c as r } from "./index-694fa5e1.js";
3
3
  import "node:path";
4
4
  import "node:fs";
5
- import "chalk";
6
5
  import "lodash.template";
7
6
  import "lodash.assign";
8
- import "prompts";
9
7
  import "@done-coding/cli-utils";
10
8
  import "yargs";
11
9
  import "yargs/helpers";
@@ -0,0 +1,340 @@
1
+ #!/usr/bin/env node
2
+ import $ from "node:path";
3
+ import l from "node:fs";
4
+ import D from "lodash.template";
5
+ import T from "lodash.assign";
6
+ import { log as n, xPrompts as N } from "@done-coding/cli-utils";
7
+ import A from "yargs";
8
+ import { hideBin as U } from "yargs/helpers";
9
+ var v = /* @__PURE__ */ ((e) => (e.OVERWRITE = "overwrite", e.APPEND = "append", e.REPLACE = "replace", e.RETURN = "return", e))(v || {});
10
+ const g = {
11
+ rollback: !1,
12
+ dealMarkdown: !1,
13
+ mode: v.OVERWRITE,
14
+ batch: !1
15
+ }, P = (e) => {
16
+ const { rollback: r, dealMarkdown: i, mode: s, batch: u, ...c } = e;
17
+ return {
18
+ rollback: r ?? g.rollback,
19
+ dealMarkdown: i ?? g.dealMarkdown,
20
+ mode: s ?? g.mode,
21
+ batch: u ?? g.batch,
22
+ ...c
23
+ };
24
+ }, E = {
25
+ version: "0.6.2-alpha.0",
26
+ name: "@done-coding/cli-template",
27
+ description: "预编译命令行工具",
28
+ cliConfig: {
29
+ namespaceDir: ".done-coding",
30
+ moduleName: "template"
31
+ }
32
+ }, W = (e) => {
33
+ const { namespaceDir: r, moduleName: i } = E.cliConfig, s = [r, `${i}.json`];
34
+ e && s.unshift(e);
35
+ const u = $.resolve(...s);
36
+ if (l.existsSync(u))
37
+ return u;
38
+ }, C = ({
39
+ filePath: e,
40
+ dataInit: r,
41
+ limitJson: i,
42
+ filePathKey: s,
43
+ dataInitKey: u,
44
+ dealMarkdown: c = !1
45
+ }) => {
46
+ if (e) {
47
+ if (i && !e.endsWith(".json"))
48
+ return n.error(`${s}必须是json文件,请检查文件后缀名`), process.exit(1);
49
+ const a = l.readFileSync($.resolve(e), "utf-8");
50
+ let p = a;
51
+ return c && e.endsWith(".md") && (p = a.replace(
52
+ /^\s*```[a-zA-Z0-9]+\s*[\r\n]+([\s\S]+?)```\s*$/,
53
+ "$1"
54
+ )), i ? JSON.parse(p) : p;
55
+ } else
56
+ return r ? (n.info(`${s} 为空,将使用${u}作为数据`), i ? JSON.parse(r) : r) : (n.error(`${s}与${u}不能同时为空`), process.exit(1));
57
+ }, R = (e, r) => {
58
+ if (!r)
59
+ return n.error(`${e}模式下output不能为空`), process.exit(1);
60
+ }, S = (e, r) => {
61
+ if (r && e === r)
62
+ return n.error("output与input不能相同"), process.exit(1);
63
+ }, J = (e, r) => {
64
+ if (!r)
65
+ return n.error(`${e}模式下input不能为空`), process.exit(1);
66
+ }, x = async (e, {
67
+ rollbackDelFileAgree: r = !1
68
+ } = {}) => {
69
+ const {
70
+ env: i,
71
+ input: s,
72
+ inputData: u,
73
+ output: c,
74
+ mode: a,
75
+ rollback: p,
76
+ dealMarkdown: y,
77
+ envData: h
78
+ } = e;
79
+ if (p)
80
+ switch (a) {
81
+ case v.REPLACE:
82
+ case v.RETURN: {
83
+ n.error(`${a}模式不支持回滚`);
84
+ return;
85
+ }
86
+ }
87
+ n.stage(`开始处理模板
88
+ mode: ${a}
89
+ rollback: ${p}
90
+ `);
91
+ const w = C({
92
+ filePath: s,
93
+ dataInit: u,
94
+ limitJson: !1,
95
+ filePathKey: "input",
96
+ dataInitKey: "inputData",
97
+ dealMarkdown: y
98
+ }), o = D(w), d = typeof h == "function" ? h() : h, m = o(d);
99
+ switch (a) {
100
+ case v.OVERWRITE: {
101
+ R(a, c), S(c, s);
102
+ const t = $.resolve(c);
103
+ if (l.mkdirSync($.dirname(t), { recursive: !0 }), l.existsSync(t)) {
104
+ if (p)
105
+ if (r || (await N({
106
+ type: "confirm",
107
+ name: "remove",
108
+ message: `${a}模式下回滚将删除${t},是否继续?`
109
+ })).remove) {
110
+ l.rmSync(t, { force: !0 }), n.success(`${a}模式下${t}已删除`);
111
+ return;
112
+ } else {
113
+ n.warn(`${a}模式下${t}回滚取消`);
114
+ return;
115
+ }
116
+ n.info(`output:${t} 已存在,将覆盖`);
117
+ } else {
118
+ if (p) {
119
+ n.warn(`${a}模式下${t}不存在,无需回滚`);
120
+ return;
121
+ }
122
+ n.stage(`output:${t} 不存在,将创建`);
123
+ }
124
+ l.writeFileSync(t, m, "utf-8"), n.success(`模板处理完成,输出到 ${t}`);
125
+ break;
126
+ }
127
+ case v.APPEND: {
128
+ R(a, c), S(c, s);
129
+ const t = $.resolve(c);
130
+ if (l.mkdirSync($.dirname(t), { recursive: !0 }), l.existsSync(t)) {
131
+ const f = l.readFileSync(t, "utf-8");
132
+ if (p) {
133
+ l.writeFileSync(
134
+ t,
135
+ f.replace(m, ""),
136
+ "utf-8"
137
+ ), n.success(`${a}模式下${t}回滚完成`);
138
+ return;
139
+ }
140
+ const b = f + m;
141
+ l.writeFileSync(t, b, "utf-8"), n.success(`模板处理完成,追加到 ${t}`);
142
+ } else {
143
+ if (p) {
144
+ n.warn(`${a}模式下${t}不存在,无需回滚`);
145
+ return;
146
+ }
147
+ n.stage(`output:${t} 不存在,将创建`), l.writeFileSync(t, m, "utf-8"), n.success(`模板处理完成,输出到 ${t}`);
148
+ }
149
+ break;
150
+ }
151
+ case v.REPLACE: {
152
+ if (c && n.warn(`output ${c} 将被忽略`), J(a, s), i && i === s)
153
+ return n.error("env 与 input 不能相同"), process.exit(1);
154
+ const t = $.resolve(s);
155
+ let f = t;
156
+ const b = s.replace(`${process.cwd()}/`, ""), k = D(b)(d);
157
+ k !== b && (n.success(`检测输入文件名也需要替换
158
+ ./${b} => ./${k} `), l.rmSync(t), f = $.resolve(`./${k}`)), l.mkdirSync($.dirname(f), { recursive: !0 }), l.writeFileSync(f, m, "utf-8"), n.success(`模板处理完成,输出到 ${f}`);
159
+ break;
160
+ }
161
+ case v.RETURN:
162
+ return n.success("模板处理完成,返回结果(函数调用才会拿到返回值)"), m;
163
+ default:
164
+ return n.error(`mode ${a} 不支持`), process.exit(1);
165
+ }
166
+ return m;
167
+ }, M = async ({
168
+ rootDir: e = process.cwd(),
169
+ itemDefaultRollback: r = !1,
170
+ extraEnvData: i = {}
171
+ } = {}, s) => {
172
+ let u;
173
+ if (s)
174
+ u = s;
175
+ else {
176
+ const o = W(e);
177
+ if (!o)
178
+ return n.error(`配置文件${o}不存在`), process.exit(1);
179
+ const d = l.readFileSync(o, "utf-8");
180
+ u = JSON.parse(d);
181
+ }
182
+ const {
183
+ list: c,
184
+ globalEnvData: a = {},
185
+ collectEnvDataForm: p = []
186
+ } = u, y = {};
187
+ for (const o of p) {
188
+ let d, m, t;
189
+ typeof o == "string" ? (d = o, m = o, t = void 0) : (d = o.key, m = o.label, t = o.initial), y[d] = (await N({
190
+ type: "text",
191
+ name: d,
192
+ message: `请输入${m}`,
193
+ initial: t,
194
+ format: (f) => f.trim(),
195
+ validate: (f) => f.length > 0 || `${m}不能为空`
196
+ }))[d];
197
+ }
198
+ const h = c.map((o) => {
199
+ const { rollback: d = r } = o, {
200
+ envData: m,
201
+ env: t,
202
+ input: f,
203
+ output: b,
204
+ ...k
205
+ } = P(o);
206
+ return t && n.warn(`批量处理中 env:${t} 将被忽略,只读envData`), {
207
+ ...k,
208
+ env: t,
209
+ input: e && f ? $.resolve(e, f) : f,
210
+ output: e && b ? $.resolve(e, b) : b,
211
+ envData: T(
212
+ {},
213
+ i,
214
+ a,
215
+ y,
216
+ m
217
+ ),
218
+ rollback: d
219
+ };
220
+ }), w = [];
221
+ for (const o of h) {
222
+ const d = await x(o, {
223
+ rollbackDelFileAgree: !0
224
+ });
225
+ w.push(d);
226
+ }
227
+ return w;
228
+ }, I = async (e) => {
229
+ const {
230
+ envData: r,
231
+ env: i,
232
+ input: s,
233
+ inputData: u,
234
+ output: c,
235
+ mode: a,
236
+ rollback: p,
237
+ dealMarkdown: y,
238
+ batch: h
239
+ } = P(e);
240
+ if (h)
241
+ return n.stage("开始批量处理"), M({
242
+ // 回滚默认值 基于全局
243
+ itemDefaultRollback: p
244
+ });
245
+ n.stage("开始单个处理");
246
+ const w = C({
247
+ filePath: i,
248
+ dataInit: r,
249
+ limitJson: !0,
250
+ filePathKey: "env",
251
+ dataInitKey: "envData",
252
+ dealMarkdown: y
253
+ });
254
+ return x({
255
+ input: s,
256
+ inputData: u,
257
+ output: c,
258
+ mode: a,
259
+ rollback: p,
260
+ dealMarkdown: y,
261
+ envData: w
262
+ });
263
+ }, j = () => ({
264
+ env: {
265
+ alias: "e",
266
+ describe: "环境数据文件JSON文件相对路径(优先级高于envData)",
267
+ type: "string"
268
+ },
269
+ envData: {
270
+ alias: "E",
271
+ describe: "环境变量数据(JSON字符串)",
272
+ type: "string"
273
+ },
274
+ input: {
275
+ alias: "i",
276
+ describe: "模板文件相对路径(优先级高于inputTemplate)",
277
+ type: "string"
278
+ },
279
+ inputData: {
280
+ alias: "I",
281
+ describe: "模板数据",
282
+ type: "string"
283
+ },
284
+ mode: {
285
+ alias: "m",
286
+ describe: "输出模式",
287
+ type: "string",
288
+ choices: [
289
+ v.OVERWRITE,
290
+ v.APPEND,
291
+ v.REPLACE,
292
+ v.RETURN
293
+ ],
294
+ default: g.mode
295
+ },
296
+ output: {
297
+ alias: "o",
298
+ describe: "输出文件路径",
299
+ type: "string"
300
+ },
301
+ rollback: {
302
+ alias: "r",
303
+ describe: "是否回滚",
304
+ type: "boolean",
305
+ default: g.rollback
306
+ },
307
+ dealMarkdown: {
308
+ alias: "d",
309
+ describe: "(检测是markdown)是否处理(单个)代码块包裹",
310
+ type: "boolean",
311
+ default: g.dealMarkdown
312
+ },
313
+ batch: {
314
+ alias: "b",
315
+ describe: "是否批量处理",
316
+ type: "boolean",
317
+ default: g.batch
318
+ }
319
+ }), F = E.cliConfig.moduleName, L = (e, r) => {
320
+ e ? n.error(e) : n.error(r.message), process.exit(1);
321
+ }, V = E.description, H = `Usage: $0 ${F} [options]`, _ = "Usage: $0 [options]", O = (e, r) => {
322
+ const i = j();
323
+ return e.strict().usage(r).help("help").version(E.version).alias("v", "version").alias("h", "help").options(i).fail(L).argv;
324
+ }, q = (e) => O(e, H), Y = {
325
+ command: F,
326
+ describe: V,
327
+ builder: q,
328
+ handler: I
329
+ }, ee = async () => {
330
+ const e = A(U(process.argv)), r = await O(e, _);
331
+ return I(r);
332
+ };
333
+ export {
334
+ v as O,
335
+ Y as a,
336
+ M as b,
337
+ ee as c,
338
+ W as g,
339
+ I as h
340
+ };
package/es/index.mjs CHANGED
@@ -1,18 +1,16 @@
1
1
  #!/usr/bin/env node
2
- import { O as d, b as h, a as u, g as b, h as f } from "./index-9892305e.js";
3
- export * from "@done-coding/cli-utils";
2
+ import { O as s, b as d, a as h, g as u, h as b } from "./index-694fa5e1.js";
4
3
  import "node:path";
5
4
  import "node:fs";
6
- import "chalk";
7
5
  import "lodash.template";
8
6
  import "lodash.assign";
9
- import "prompts";
7
+ import "@done-coding/cli-utils";
10
8
  import "yargs";
11
9
  import "yargs/helpers";
12
10
  export {
13
- d as OutputModeEnum,
14
- h as batchHandler,
15
- u as command,
16
- b as getConfigPath,
17
- f as handler
11
+ s as OutputModeEnum,
12
+ d as batchHandler,
13
+ h as command,
14
+ u as getConfigPath,
15
+ b as handler
18
16
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@done-coding/cli-template",
3
- "version": "0.6.1-alpha.0",
3
+ "version": "0.6.2-alpha.0",
4
4
  "description": "预编译命令行工具",
5
5
  "private": false,
6
6
  "module": "es/index.mjs",
@@ -41,13 +41,12 @@
41
41
  "license": "MIT",
42
42
  "sideEffects": false,
43
43
  "devDependencies": {
44
- "@done-coding/cli-inject": "^0.4.6-alpha.0",
44
+ "@done-coding/cli-inject": "^0.4.7-alpha.0",
45
45
  "@types/lodash.assign": "^4.2.9",
46
46
  "@types/lodash.get": "^4.4.9",
47
47
  "@types/lodash.set": "^4.3.9",
48
48
  "@types/lodash.template": "^4.5.3",
49
49
  "@types/node": "^18.0.0",
50
- "@types/prompts": "^2.4.6",
51
50
  "@types/yargs": "^17.0.28",
52
51
  "rimraf": "^6.0.1",
53
52
  "typescript": "^5.2.2",
@@ -58,14 +57,12 @@
58
57
  "node": ">=18.0.0"
59
58
  },
60
59
  "dependencies": {
61
- "@done-coding/cli-utils": "^0.2.1-alpha.0",
62
- "chalk": "^5.3.0",
60
+ "@done-coding/cli-utils": "^0.2.2-alpha.0",
63
61
  "lodash.assign": "^4.2.0",
64
62
  "lodash.get": "^4.4.2",
65
63
  "lodash.set": "^4.3.2",
66
64
  "lodash.template": "^4.5.0",
67
- "prompts": "^2.4.2",
68
65
  "yargs": "^17.7.2"
69
66
  },
70
- "gitHead": "21eb698f64179882cfec979bd8f19920b047dacb"
67
+ "gitHead": "2e59e86ee192e023138e7475f4abbb5e7c42b29e"
71
68
  }
package/types/index.d.ts CHANGED
@@ -2,4 +2,3 @@ export { handler, batchHandler } from "./handler";
2
2
  export { command } from "./main";
3
3
  export * from './utils/types';
4
4
  export * from './utils/config';
5
- export * from "@done-coding/cli-utils";
@@ -1,5 +1,5 @@
1
1
  declare const _default: {
2
- "version": "0.6.1-alpha.0",
2
+ "version": "0.6.2-alpha.0",
3
3
  "name": "@done-coding/cli-template",
4
4
  "description": "预编译命令行工具",
5
5
  "cliConfig": {
@@ -1,358 +0,0 @@
1
- #!/usr/bin/env node
2
- import v from "node:path";
3
- import c from "node:fs";
4
- import o from "chalk";
5
- import E from "lodash.template";
6
- import A from "lodash.assign";
7
- import N from "prompts";
8
- import { onPromptFormStateForSigint as P } from "@done-coding/cli-utils";
9
- import U from "yargs";
10
- import { hideBin as W } from "yargs/helpers";
11
- var g = /* @__PURE__ */ ((e) => (e.OVERWRITE = "overwrite", e.APPEND = "append", e.REPLACE = "replace", e.RETURN = "return", e))(g || {});
12
- const $ = {
13
- rollback: !1,
14
- dealMarkdown: !1,
15
- mode: g.OVERWRITE,
16
- batch: !1
17
- }, C = (e) => {
18
- const { rollback: n, dealMarkdown: a, mode: s, batch: u, ...i } = e;
19
- return {
20
- rollback: n ?? $.rollback,
21
- dealMarkdown: a ?? $.dealMarkdown,
22
- mode: s ?? $.mode,
23
- batch: u ?? $.batch,
24
- ...i
25
- };
26
- }, S = {
27
- version: "0.6.1-alpha.0",
28
- name: "@done-coding/cli-template",
29
- description: "预编译命令行工具",
30
- cliConfig: {
31
- namespaceDir: ".done-coding",
32
- moduleName: "template"
33
- }
34
- }, J = (e) => {
35
- const { namespaceDir: n, moduleName: a } = S.cliConfig, s = [n, `${a}.json`];
36
- e && s.unshift(e);
37
- const u = v.resolve(...s);
38
- if (c.existsSync(u))
39
- return u;
40
- }, I = ({
41
- filePath: e,
42
- dataInit: n,
43
- limitJson: a,
44
- filePathKey: s,
45
- dataInitKey: u,
46
- dealMarkdown: i = !1
47
- }) => {
48
- if (e) {
49
- if (a && !e.endsWith(".json"))
50
- return console.log(
51
- o.red(`${s}必须是json文件,请检查文件后缀名`)
52
- ), process.exit(1);
53
- const l = c.readFileSync(v.resolve(e), "utf-8");
54
- let p = l;
55
- return i && e.endsWith(".md") && (p = l.replace(
56
- /^\s*```[a-zA-Z0-9]+\s*[\r\n]+([\s\S]+?)```\s*$/,
57
- "$1"
58
- )), a ? JSON.parse(p) : p;
59
- } else
60
- return n ? (console.log(
61
- o.green(`${s} 为空,将使用${u}作为数据`)
62
- ), a ? JSON.parse(n) : n) : (console.log(o.red(`${s}与${u}不能同时为空`)), process.exit(1));
63
- }, D = (e, n) => {
64
- if (!n)
65
- return console.log(o.red(`${e}模式下output不能为空`)), process.exit(1);
66
- }, R = (e, n) => {
67
- if (n && e === n)
68
- return console.log(o.red("output与input不能相同")), process.exit(1);
69
- }, M = (e, n) => {
70
- if (!n)
71
- return console.log(o.red(`${e}模式下input不能为空`)), process.exit(1);
72
- }, x = async (e, {
73
- rollbackDelFileAgree: n = !1
74
- } = {}) => {
75
- const {
76
- env: a,
77
- input: s,
78
- inputData: u,
79
- output: i,
80
- mode: l,
81
- rollback: p,
82
- dealMarkdown: y,
83
- envData: h
84
- } = e;
85
- if (p)
86
- switch (l) {
87
- case g.REPLACE:
88
- case g.RETURN: {
89
- console.log(o.red(`${l}模式不支持回滚`));
90
- return;
91
- }
92
- }
93
- console.log(
94
- o.blue(`开始处理模板
95
- mode: ${l}
96
- rollback: ${p}
97
- `)
98
- );
99
- const k = I({
100
- filePath: s,
101
- dataInit: u,
102
- limitJson: !1,
103
- filePathKey: "input",
104
- dataInitKey: "inputData",
105
- dealMarkdown: y
106
- }), r = E(k), m = typeof h == "function" ? h() : h, f = r(m);
107
- switch (l) {
108
- case g.OVERWRITE: {
109
- D(l, i), R(i, s);
110
- const t = v.resolve(i);
111
- if (c.mkdirSync(v.dirname(t), { recursive: !0 }), c.existsSync(t)) {
112
- if (p)
113
- if (n || (await N({
114
- type: "confirm",
115
- name: "remove",
116
- message: `${l}模式下回滚将删除${t},是否继续?`,
117
- onState: P
118
- })).remove) {
119
- c.rmSync(t, { force: !0 }), console.log(o.green(`${l}模式下${t}已删除`));
120
- return;
121
- } else {
122
- console.log(o.yellow(`${l}模式下${t}回滚取消`));
123
- return;
124
- }
125
- console.log(o.blue(`output:${t} 已存在,将覆盖`));
126
- } else {
127
- if (p) {
128
- console.log(
129
- o.yellow(`${l}模式下${t}不存在,无需回滚`)
130
- );
131
- return;
132
- }
133
- console.log(o.blue(`output:${t} 不存在,将创建`));
134
- }
135
- c.writeFileSync(t, f, "utf-8"), console.log(o.green(`模板处理完成,输出到 ${t}`));
136
- break;
137
- }
138
- case g.APPEND: {
139
- D(l, i), R(i, s);
140
- const t = v.resolve(i);
141
- if (c.mkdirSync(v.dirname(t), { recursive: !0 }), c.existsSync(t)) {
142
- const d = c.readFileSync(t, "utf-8");
143
- if (p) {
144
- c.writeFileSync(
145
- t,
146
- d.replace(f, ""),
147
- "utf-8"
148
- ), console.log(o.green(`${l}模式下${t}回滚完成`));
149
- return;
150
- }
151
- const b = d + f;
152
- c.writeFileSync(t, b, "utf-8"), console.log(o.green(`模板处理完成,追加到 ${t}`));
153
- } else {
154
- if (p) {
155
- console.log(
156
- o.yellow(`${l}模式下${t}不存在,无需回滚`)
157
- );
158
- return;
159
- }
160
- console.log(o.blue(`output:${t} 不存在,将创建`)), c.writeFileSync(t, f, "utf-8"), console.log(o.green(`模板处理完成,输出到 ${t}`));
161
- }
162
- break;
163
- }
164
- case g.REPLACE: {
165
- if (i && console.log(o.yellow(`output ${i} 将被忽略`)), M(l, s), a && a === s)
166
- return console.log(o.red("env 与 input 不能相同")), process.exit(1);
167
- const t = v.resolve(s);
168
- let d = t;
169
- const b = s.replace(`${process.cwd()}/`, ""), w = E(b)(m);
170
- w !== b && (console.log(
171
- o.green(`检测输入文件名也需要替换
172
- ./${b} => ./${w} `)
173
- ), c.rmSync(t), d = v.resolve(`./${w}`)), c.mkdirSync(v.dirname(d), { recursive: !0 }), c.writeFileSync(d, f, "utf-8"), console.log(o.green(`模板处理完成,输出到 ${d}`));
174
- break;
175
- }
176
- case g.RETURN:
177
- return console.log(
178
- o.green("模板处理完成,返回结果(函数调用才会拿到返回值)")
179
- ), f;
180
- default:
181
- return console.log(o.red(`mode ${l} 不支持`)), process.exit(1);
182
- }
183
- return f;
184
- }, j = async ({
185
- rootDir: e = process.cwd(),
186
- itemDefaultRollback: n = !1,
187
- extraEnvData: a = {}
188
- } = {}, s) => {
189
- let u;
190
- if (s)
191
- u = s;
192
- else {
193
- const r = J(e);
194
- if (!r)
195
- return console.log(o.red(`配置文件${r}不存在`)), process.exit(1);
196
- const m = c.readFileSync(r, "utf-8");
197
- u = JSON.parse(m);
198
- }
199
- const {
200
- list: i,
201
- globalEnvData: l = {},
202
- collectEnvDataForm: p = []
203
- } = u, y = {};
204
- for (const r of p) {
205
- let m, f, t;
206
- typeof r == "string" ? (m = r, f = r, t = void 0) : (m = r.key, f = r.label, t = r.initial), y[m] = (await N({
207
- type: "text",
208
- name: m,
209
- message: `请输入${f}`,
210
- initial: t,
211
- format: (d) => d.trim(),
212
- validate: (d) => d.length > 0 || `${f}不能为空`,
213
- onState: P
214
- }))[m];
215
- }
216
- const h = i.map((r) => {
217
- const { rollback: m = n } = r, {
218
- envData: f,
219
- env: t,
220
- input: d,
221
- output: b,
222
- ...w
223
- } = C(r);
224
- return t && console.log(o.yellow(`批量处理中 env:${t} 将被忽略,只读envData`)), {
225
- ...w,
226
- env: t,
227
- input: e && d ? v.resolve(e, d) : d,
228
- output: e && b ? v.resolve(e, b) : b,
229
- envData: A(
230
- {},
231
- a,
232
- l,
233
- y,
234
- f
235
- ),
236
- rollback: m
237
- };
238
- }), k = [];
239
- for (const r of h) {
240
- const m = await x(r, {
241
- rollbackDelFileAgree: !0
242
- });
243
- k.push(m);
244
- }
245
- return k;
246
- }, F = async (e) => {
247
- const {
248
- envData: n,
249
- env: a,
250
- input: s,
251
- inputData: u,
252
- output: i,
253
- mode: l,
254
- rollback: p,
255
- dealMarkdown: y,
256
- batch: h
257
- } = C(e);
258
- if (h)
259
- return console.log(o.blue("开始批量处理")), j({
260
- // 回滚默认值 基于全局
261
- itemDefaultRollback: p
262
- });
263
- console.log(o.blue("开始单个处理"));
264
- const k = I({
265
- filePath: a,
266
- dataInit: n,
267
- limitJson: !0,
268
- filePathKey: "env",
269
- dataInitKey: "envData",
270
- dealMarkdown: y
271
- });
272
- return x({
273
- input: s,
274
- inputData: u,
275
- output: i,
276
- mode: l,
277
- rollback: p,
278
- dealMarkdown: y,
279
- envData: k
280
- });
281
- }, L = () => ({
282
- env: {
283
- alias: "e",
284
- describe: "环境数据文件JSON文件相对路径(优先级高于envData)",
285
- type: "string"
286
- },
287
- envData: {
288
- alias: "E",
289
- describe: "环境变量数据(JSON字符串)",
290
- type: "string"
291
- },
292
- input: {
293
- alias: "i",
294
- describe: "模板文件相对路径(优先级高于inputTemplate)",
295
- type: "string"
296
- },
297
- inputData: {
298
- alias: "I",
299
- describe: "模板数据",
300
- type: "string"
301
- },
302
- mode: {
303
- alias: "m",
304
- describe: "输出模式",
305
- type: "string",
306
- choices: [
307
- g.OVERWRITE,
308
- g.APPEND,
309
- g.REPLACE,
310
- g.RETURN
311
- ],
312
- default: $.mode
313
- },
314
- output: {
315
- alias: "o",
316
- describe: "输出文件路径",
317
- type: "string"
318
- },
319
- rollback: {
320
- alias: "r",
321
- describe: "是否回滚",
322
- type: "boolean",
323
- default: $.rollback
324
- },
325
- dealMarkdown: {
326
- alias: "d",
327
- describe: "(检测是markdown)是否处理(单个)代码块包裹",
328
- type: "boolean",
329
- default: $.dealMarkdown
330
- },
331
- batch: {
332
- alias: "b",
333
- describe: "是否批量处理",
334
- type: "boolean",
335
- default: $.batch
336
- }
337
- }), O = S.cliConfig.moduleName, V = (e, n) => {
338
- console.log(e ? o.red(e) : o.red(n.message)), process.exit(1);
339
- }, H = S.description, _ = `Usage: $0 ${O} [options]`, q = "Usage: $0 [options]", T = (e, n) => {
340
- const a = L();
341
- return e.strict().usage(n).help("help").version(S.version).alias("v", "version").alias("h", "help").options(a).fail(V).argv;
342
- }, z = (e) => T(e, _), oe = {
343
- command: O,
344
- describe: H,
345
- builder: z,
346
- handler: F
347
- }, ne = async () => {
348
- const e = U(W(process.argv)), n = await T(e, q);
349
- return F(n);
350
- };
351
- export {
352
- g as O,
353
- oe as a,
354
- j as b,
355
- ne as c,
356
- J as g,
357
- F as h
358
- };