@build-script/package-tools 0.0.6 → 0.0.7
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/lib/commands/detect-package-change.d.ts +5 -5
- package/lib/commands/detect-package-change.d.ts.map +1 -1
- package/lib/commands/detect-package-change.js +3 -3
- package/lib/commands/detect-package-change.js.map +1 -1
- package/lib/commands/monorepo-bump-version.d.ts +5 -5
- package/lib/commands/monorepo-bump-version.d.ts.map +1 -1
- package/lib/commands/monorepo-bump-version.js +1 -2
- package/lib/commands/monorepo-bump-version.js.map +1 -1
- package/lib/commands/monorepo-cnpm-sync.d.ts +4 -4
- package/lib/commands/monorepo-cnpm-sync.d.ts.map +1 -1
- package/lib/commands/monorepo-cnpm-sync.js +2 -2
- package/lib/commands/monorepo-cnpm-sync.js.map +1 -1
- package/lib/commands/monorepo-invalid.d.ts +4 -4
- package/lib/commands/monorepo-invalid.d.ts.map +1 -1
- package/lib/commands/monorepo-invalid.js +2 -2
- package/lib/commands/monorepo-invalid.js.map +1 -1
- package/lib/commands/monorepo-link-binaries.d.ts +7 -5
- package/lib/commands/monorepo-link-binaries.d.ts.map +1 -1
- package/lib/commands/monorepo-link-binaries.js +10 -5
- package/lib/commands/monorepo-link-binaries.js.map +1 -1
- package/lib/commands/monorepo-list.d.ts +5 -5
- package/lib/commands/monorepo-list.d.ts.map +1 -1
- package/lib/commands/monorepo-list.js +2 -1
- package/lib/commands/monorepo-list.js.map +1 -1
- package/lib/commands/monorepo-publish.d.ts +5 -5
- package/lib/commands/monorepo-publish.d.ts.map +1 -1
- package/lib/commands/monorepo-publish.js +11 -7
- package/lib/commands/monorepo-publish.js.map +1 -1
- package/lib/commands/monorepo-tsconfig.d.ts +6 -5
- package/lib/commands/monorepo-tsconfig.d.ts.map +1 -1
- package/lib/commands/monorepo-tsconfig.js +7 -4
- package/lib/commands/monorepo-tsconfig.js.map +1 -1
- package/lib/commands/monorepo-upgrade.d.ts +4 -4
- package/lib/commands/monorepo-upgrade.d.ts.map +1 -1
- package/lib/commands/monorepo-upgrade.js +1 -2
- package/lib/commands/monorepo-upgrade.js.map +1 -1
- package/lib/commands/run-if-version-mismatch.d.ts +9 -7
- package/lib/commands/run-if-version-mismatch.d.ts.map +1 -1
- package/lib/commands/run-if-version-mismatch.js +19 -8
- package/lib/commands/run-if-version-mismatch.js.map +1 -1
- package/lib/commands/sync-my-readme.d.ts +4 -4
- package/lib/commands/sync-my-readme.d.ts.map +1 -1
- package/lib/commands/sync-my-readme.js +1 -1
- package/lib/commands/sync-my-readme.js.map +1 -1
- package/lib/commands/test.d.ts +12 -5
- package/lib/commands/test.d.ts.map +1 -1
- package/lib/commands/test.js +14 -1
- package/lib/commands/test.js.map +1 -1
- package/lib/{command-file-map.generated.d.ts → commands.generated.d.ts} +4 -3
- package/lib/commands.generated.d.ts.map +1 -0
- package/lib/commands.generated.js +234 -0
- package/lib/commands.generated.js.map +1 -0
- package/lib/common/cache/native.npm.js +1 -1
- package/lib/common/cache/native.npm.js.map +1 -1
- package/lib/common/functions/cli.d.ts +4 -74
- package/lib/common/functions/cli.d.ts.map +1 -1
- package/lib/common/functions/cli.js +9 -91
- package/lib/common/functions/cli.js.map +1 -1
- package/lib/common/git/git.js +1 -1
- package/lib/common/git/git.js.map +1 -1
- package/lib/common/package-manager/driver.abstract.js +1 -1
- package/lib/common/package-manager/driver.abstract.js.map +1 -1
- package/lib/common/package-manager/driver.pnpm.js +1 -1
- package/lib/common/package-manager/driver.pnpm.js.map +1 -1
- package/lib/common/package-manager/functions.d.ts.map +1 -1
- package/lib/common/package-manager/functions.js +2 -1
- package/lib/common/package-manager/functions.js.map +1 -1
- package/lib/common/package-manager/package-json.d.ts.map +1 -1
- package/lib/common/package-manager/package-json.js +2 -1
- package/lib/common/package-manager/package-json.js.map +1 -1
- package/lib/common/package-manager/proxy.js +1 -1
- package/lib/common/package-manager/proxy.js.map +1 -1
- package/lib/common/shared-jobs/clear-cache.js +1 -1
- package/lib/common/shared-jobs/clear-cache.js.map +1 -1
- package/lib/common/shared-jobs/cnpm-sync.js +2 -2
- package/lib/common/shared-jobs/cnpm-sync.js.map +1 -1
- package/lib/common/shared-jobs/detect-change-job.js +1 -1
- package/lib/common/shared-jobs/detect-change-job.js.map +1 -1
- package/lib/common/shared-jobs/publish-package-version-job.js +1 -1
- package/lib/common/shared-jobs/publish-package-version-job.js.map +1 -1
- package/lib/common/taball/decompress.js +1 -1
- package/lib/common/taball/decompress.js.map +1 -1
- package/lib/common/taball/file-download.js +1 -1
- package/lib/common/taball/file-download.js.map +1 -1
- package/lib/common/temp-work-folder.d.ts +1 -1
- package/lib/common/temp-work-folder.js +1 -1
- package/lib/common/temp-work-folder.js.map +1 -1
- package/lib/common/version.generated.d.ts +1 -1
- package/lib/common/version.generated.js +1 -1
- package/lib/main.d.ts +2 -1
- package/lib/main.d.ts.map +1 -1
- package/lib/main.js +12 -114
- package/lib/main.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/load.js +1 -8
- package/package.json +15 -13
- package/src/command-file-map.generator.ts +6 -19
- package/src/commands/detect-package-change.ts +6 -6
- package/src/commands/monorepo-bump-version.ts +5 -6
- package/src/commands/monorepo-cnpm-sync.ts +5 -5
- package/src/commands/monorepo-invalid.ts +5 -5
- package/src/commands/monorepo-link-binaries.ts +13 -8
- package/src/commands/monorepo-list.ts +6 -5
- package/src/commands/monorepo-publish.ts +14 -11
- package/src/commands/monorepo-tsconfig.ts +10 -7
- package/src/commands/monorepo-upgrade.ts +4 -5
- package/src/commands/run-if-version-mismatch.ts +23 -12
- package/src/commands/sync-my-readme.ts +5 -5
- package/src/commands/test.ts +19 -5
- package/src/commands.generated.ts +235 -0
- package/src/common/cache/native.npm.ts +1 -1
- package/src/common/functions/cli.ts +10 -125
- package/src/common/git/git.ts +1 -1
- package/src/common/package-manager/driver.abstract.ts +1 -1
- package/src/common/package-manager/driver.pnpm.ts +1 -1
- package/src/common/package-manager/functions.ts +2 -1
- package/src/common/package-manager/package-json.ts +2 -1
- package/src/common/package-manager/proxy.ts +1 -1
- package/src/common/shared-jobs/clear-cache.ts +1 -1
- package/src/common/shared-jobs/cnpm-sync.ts +2 -2
- package/src/common/shared-jobs/detect-change-job.ts +1 -1
- package/src/common/shared-jobs/publish-package-version-job.ts +1 -1
- package/src/common/taball/decompress.ts +1 -1
- package/src/common/taball/file-download.ts +1 -1
- package/src/common/temp-work-folder.ts +1 -1
- package/src/common/version.generated.ts +1 -1
- package/src/main.ts +12 -129
- package/lib/command-file-map.generated.d.ts.map +0 -1
- package/lib/command-file-map.generated.js +0 -28
- package/lib/command-file-map.generated.js.map +0 -1
- package/src/command-file-map.generated.ts +0 -29
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
// @ts-ignore
|
|
3
|
+
// biome-ignore-all lint
|
|
4
|
+
// biome-ignore-all assist
|
|
5
|
+
// biome-ignore-all syntax
|
|
6
|
+
/******************************************************************************
|
|
7
|
+
* GENERATED FILE, DO NOT MODIFY
|
|
8
|
+
* 这是生成的文件,千万不要修改
|
|
9
|
+
*
|
|
10
|
+
* @build-script/codegen - The Simple Code Generater
|
|
11
|
+
* https://github.com/GongT/baobao
|
|
12
|
+
*
|
|
13
|
+
******************************************************************************/
|
|
14
|
+
|
|
15
|
+
import type { ICommandDefineWithCommand } from '@idlebox/cli';
|
|
16
|
+
export const cli_commands: readonly ICommandDefineWithCommand[] = [
|
|
17
|
+
{
|
|
18
|
+
"command": "detect-package-change",
|
|
19
|
+
"help": "",
|
|
20
|
+
"usage": "",
|
|
21
|
+
"description": "本地运行npm pack并与npm上的最新版本对比差异",
|
|
22
|
+
"args": {
|
|
23
|
+
"--bump": {
|
|
24
|
+
"flag": true,
|
|
25
|
+
"description": "当发现更改时更新package.json,增加版本号0.0.1"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"commonArgs": {},
|
|
29
|
+
"positional": false
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"command": "monorepo-bump-version",
|
|
33
|
+
"help": "",
|
|
34
|
+
"usage": "",
|
|
35
|
+
"description": "在monorepo中按照依赖顺序分别运行detect-package-change",
|
|
36
|
+
"args": {
|
|
37
|
+
"--skip": {
|
|
38
|
+
"flag": false,
|
|
39
|
+
"description": "跳过前N-1个包(从第N个包开始运行)"
|
|
40
|
+
},
|
|
41
|
+
"--allow-private": {
|
|
42
|
+
"flag": true,
|
|
43
|
+
"description": "即使private=true也执行"
|
|
44
|
+
},
|
|
45
|
+
"--exclude": {
|
|
46
|
+
"flag": false,
|
|
47
|
+
"description": "排除指定的包"
|
|
48
|
+
},
|
|
49
|
+
"--force": {
|
|
50
|
+
"flag": false,
|
|
51
|
+
"description": "不检测变化,直接修改版本号"
|
|
52
|
+
},
|
|
53
|
+
"--always": {
|
|
54
|
+
"flag": false,
|
|
55
|
+
"description": "强制执行,即使没有检测到变化"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"commonArgs": {},
|
|
59
|
+
"positional": false
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"command": "monorepo-cnpm-sync",
|
|
63
|
+
"help": "\u001b[3;2m需要在PATH中存在cnpm命令\u001b[0m",
|
|
64
|
+
"usage": "",
|
|
65
|
+
"description": "调用cnpm sync命令",
|
|
66
|
+
"args": {},
|
|
67
|
+
"commonArgs": {},
|
|
68
|
+
"positional": false
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"command": "monorepo-invalid",
|
|
72
|
+
"help": "",
|
|
73
|
+
"usage": "",
|
|
74
|
+
"description": "从npm缓存中删除关于本monorepo的数据,以便安装最新版本",
|
|
75
|
+
"args": {},
|
|
76
|
+
"commonArgs": {},
|
|
77
|
+
"positional": false
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"command": "monorepo-link-binaries",
|
|
81
|
+
"help": "存在bin同名时,monorepo项目优先于npm包",
|
|
82
|
+
"usage": "\u001b[14;3m--from\u001b[0m \u001b[14;3m--recursive\u001b[0m ",
|
|
83
|
+
"description": "将monorepo中每个项目的bins连接到当前项目的 ./node_modules/.bin",
|
|
84
|
+
"args": {
|
|
85
|
+
"--from": {
|
|
86
|
+
"usage": true,
|
|
87
|
+
"flag": false,
|
|
88
|
+
"description": "将<value>视为各个项目的直接依赖 (必须是至少一个项目的依赖,否则找不到)"
|
|
89
|
+
},
|
|
90
|
+
"--transparent": {
|
|
91
|
+
"flag": false,
|
|
92
|
+
"description": "将<value>的所有直接依赖视为此项目的直接依赖"
|
|
93
|
+
},
|
|
94
|
+
"--recursive": {
|
|
95
|
+
"usage": true,
|
|
96
|
+
"flag": true,
|
|
97
|
+
"description": "在每个项目中运行,而非当前项目"
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"commonArgs": {},
|
|
101
|
+
"positional": false
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"command": "monorepo-list",
|
|
105
|
+
"help": "",
|
|
106
|
+
"usage": "\u001b[3;38;5;14m--verbose\u001b[0m \u001b[3;38;5;14m--json\u001b[0m \u001b[3;38;5;14m--relative\u001b[0m",
|
|
107
|
+
"description": "列出所有项目目录",
|
|
108
|
+
"args": {
|
|
109
|
+
"--verbose": {
|
|
110
|
+
"flag": true,
|
|
111
|
+
"description": "列出所有信息,而不仅是目录"
|
|
112
|
+
},
|
|
113
|
+
"--json": {
|
|
114
|
+
"flag": true,
|
|
115
|
+
"description": "输出json(同时使--verbose和--relative无效)"
|
|
116
|
+
},
|
|
117
|
+
"--relative": {
|
|
118
|
+
"flag": true,
|
|
119
|
+
"description": "输出相对路径(相对于monorepo根目录)"
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
"commonArgs": {},
|
|
123
|
+
"positional": false
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"command": "monorepo-publish",
|
|
127
|
+
"help": "",
|
|
128
|
+
"usage": "\u001b[3;38;5;14m--debug\u001b[0m \u001b[3;38;5;14m--dry\u001b[0m",
|
|
129
|
+
"description": "在monorepo中按照依赖顺序发布修改过的包",
|
|
130
|
+
"args": {
|
|
131
|
+
"--debug": {
|
|
132
|
+
"flag": true,
|
|
133
|
+
"description": "详细输出模式"
|
|
134
|
+
},
|
|
135
|
+
"--dry": {
|
|
136
|
+
"flag": true,
|
|
137
|
+
"description": "仅检查修改,不发布(仍会修改version字段)"
|
|
138
|
+
},
|
|
139
|
+
"--private": {
|
|
140
|
+
"flag": false,
|
|
141
|
+
"description": "即使private=true也执行"
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
"commonArgs": {},
|
|
145
|
+
"positional": false
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"command": "monorepo-tsconfig",
|
|
149
|
+
"help": "查找tsconfig.json和src/tsconfig.json\n 如果不在这里,可以在package.json中设置exports['./tsconfig.json'] = './xxxx'",
|
|
150
|
+
"usage": "\u001b[14;3m--dev\u001b[0m ",
|
|
151
|
+
"description": "为所有项目的 tsconfig.json 添加 references 字段",
|
|
152
|
+
"args": {
|
|
153
|
+
"--dev": {
|
|
154
|
+
"usage": true,
|
|
155
|
+
"flag": true,
|
|
156
|
+
"description": "也将devDependencies中的包添加到references中"
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
"commonArgs": {},
|
|
160
|
+
"positional": false
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"command": "monorepo-upgrade",
|
|
164
|
+
"help": "被更新的包必须没有或者用^作为前缀",
|
|
165
|
+
"usage": "",
|
|
166
|
+
"description": "更新monorepo中各个项目的所有依赖版本",
|
|
167
|
+
"args": {},
|
|
168
|
+
"commonArgs": {},
|
|
169
|
+
"positional": false
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"command": "run-if-version-mismatch",
|
|
173
|
+
"help": "如果package.json中的version与npm上的版本(latest)不一致,则运行命令\n 注意: 命令行中的\"\u001b[38;5;9m--\u001b[0m\"是必须的\n",
|
|
174
|
+
"usage": "\u001b[14;3m--no-cache\u001b[0m \u001b[14;3m--flush\u001b[0m \u001b[38;5;9m--\u001b[0m command to run",
|
|
175
|
+
"description": "如果版本号改变,则运行命令",
|
|
176
|
+
"args": {
|
|
177
|
+
"--no-cache": {
|
|
178
|
+
"usage": true,
|
|
179
|
+
"flag": true,
|
|
180
|
+
"description": "禁用缓存"
|
|
181
|
+
},
|
|
182
|
+
"--flush": {
|
|
183
|
+
"usage": true,
|
|
184
|
+
"flag": true,
|
|
185
|
+
"description": "程序成功退出时自动删除npm缓存"
|
|
186
|
+
},
|
|
187
|
+
"--newer": {
|
|
188
|
+
"flag": true,
|
|
189
|
+
"description": "只有在本地版本号大于远程版本号时才运行(默认只要不同就运行)"
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
"commonArgs": {},
|
|
193
|
+
"positional": false
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"command": "sync-my-readme",
|
|
197
|
+
"help": "",
|
|
198
|
+
"usage": "",
|
|
199
|
+
"description": "内部开发命令",
|
|
200
|
+
"args": {},
|
|
201
|
+
"commonArgs": {},
|
|
202
|
+
"positional": false,
|
|
203
|
+
"isHidden": true
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"command": "test",
|
|
207
|
+
"help": "没有帮助信息",
|
|
208
|
+
"usage": "\u001b[14;3m--test\u001b[0m 测试参数",
|
|
209
|
+
"description": "测试命令",
|
|
210
|
+
"args": {
|
|
211
|
+
"--test": {
|
|
212
|
+
"flag": false,
|
|
213
|
+
"usage": true,
|
|
214
|
+
"description": "关于test参数的说明"
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
"commonArgs": {},
|
|
218
|
+
"positional": false,
|
|
219
|
+
"isHidden": true
|
|
220
|
+
}
|
|
221
|
+
];
|
|
222
|
+
export const cli_imports = {
|
|
223
|
+
"detect-package-change": "./commands/detect-package-change.js",
|
|
224
|
+
"monorepo-bump-version": "./commands/monorepo-bump-version.js",
|
|
225
|
+
"monorepo-cnpm-sync": "./commands/monorepo-cnpm-sync.js",
|
|
226
|
+
"monorepo-invalid": "./commands/monorepo-invalid.js",
|
|
227
|
+
"monorepo-link-binaries": "./commands/monorepo-link-binaries.js",
|
|
228
|
+
"monorepo-list": "./commands/monorepo-list.js",
|
|
229
|
+
"monorepo-publish": "./commands/monorepo-publish.js",
|
|
230
|
+
"monorepo-tsconfig": "./commands/monorepo-tsconfig.js",
|
|
231
|
+
"monorepo-upgrade": "./commands/monorepo-upgrade.js",
|
|
232
|
+
"run-if-version-mismatch": "./commands/run-if-version-mismatch.js",
|
|
233
|
+
"sync-my-readme": "./commands/sync-my-readme.js",
|
|
234
|
+
"test": "./commands/test.js"
|
|
235
|
+
} as const;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { sleep, type IPackageJson } from '@idlebox/common';
|
|
2
|
-
import { logger } from '@idlebox/
|
|
2
|
+
import { logger } from '@idlebox/cli';
|
|
3
3
|
import { get as cacheGet, rm as cacheRm } from 'cacache';
|
|
4
4
|
import { rm } from 'node:fs/promises';
|
|
5
5
|
import { createRequire } from 'node:module';
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export const CSI = '\x1b[';
|
|
1
|
+
import { app, argv } from '@idlebox/cli';
|
|
4
2
|
|
|
5
3
|
export class DieError extends Error {
|
|
6
4
|
constructor(msg: string) {
|
|
@@ -8,86 +6,21 @@ export class DieError extends Error {
|
|
|
8
6
|
this.stack = this.message;
|
|
9
7
|
}
|
|
10
8
|
}
|
|
11
|
-
function die(msg: string) {
|
|
12
|
-
throw new DieError(msg);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export const argv = createArgsReader(process.argv.slice(2));
|
|
16
|
-
|
|
17
|
-
type ArgDefine = {
|
|
18
|
-
/**
|
|
19
|
-
* 为false时在后面加一个 <value>
|
|
20
|
-
*/
|
|
21
|
-
flag: boolean;
|
|
22
|
-
description: string;
|
|
23
|
-
};
|
|
24
|
-
const common_args = {
|
|
25
|
-
quiet: { flag: true, description: '减少输出' },
|
|
26
|
-
registry: { flag: false, description: 'npm服务器,默认从.npmrc读取(必须有schema://)' },
|
|
27
|
-
'dist-tag': { flag: false, description: '需要从服务器读取时使用的tag,默认为"latest"' },
|
|
28
|
-
package: { flag: false, description: '实际操作前,更改当前目录(此文件夹应包含package.json)' },
|
|
29
|
-
json: { flag: true, description: '输出json格式(部分命令支持)' },
|
|
30
|
-
help: { flag: true, description: '显示帮助信息' },
|
|
31
|
-
};
|
|
32
|
-
type CommonArgs = keyof typeof common_args;
|
|
33
|
-
const all_common_args = Object.keys(common_args) as ReadonlyArray<CommonArgs>;
|
|
34
9
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
*/
|
|
39
|
-
protected abstract readonly _usage: string;
|
|
40
|
-
/**
|
|
41
|
-
* usage后面的简短说明
|
|
42
|
-
*/
|
|
43
|
-
protected abstract readonly _description: string;
|
|
44
|
-
/**
|
|
45
|
-
* 多行详细帮助信息
|
|
46
|
-
*/
|
|
47
|
-
protected abstract readonly _help: string;
|
|
48
|
-
/**
|
|
49
|
-
* 独特命令行参数
|
|
50
|
-
*/
|
|
51
|
-
protected readonly _arguments?: Record<string, ArgDefine>;
|
|
52
|
-
/**
|
|
53
|
-
* 通用命令行参数
|
|
54
|
-
*/
|
|
55
|
-
protected readonly _commonArgs?: readonly CommonArgs[];
|
|
56
|
-
|
|
57
|
-
public readonly isHidden: boolean = false;
|
|
58
|
-
|
|
59
|
-
get help() {
|
|
60
|
-
let r = this._help;
|
|
61
|
-
if (this._arguments) {
|
|
62
|
-
const opts = formatOptions(this._arguments);
|
|
63
|
-
if (r) r += '\n';
|
|
64
|
-
r += opts;
|
|
65
|
-
}
|
|
66
|
-
return r;
|
|
67
|
-
}
|
|
10
|
+
/** @deprecated */
|
|
11
|
+
export const isQuiet = app.silent;
|
|
12
|
+
export const isJsonOutput = argv.flag('--json') > 0;
|
|
68
13
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
get description() {
|
|
73
|
-
return this._description;
|
|
74
|
-
}
|
|
75
|
-
get commonArgs() {
|
|
76
|
-
return this._commonArgs;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
14
|
+
/** @deprecated */
|
|
15
|
+
export const isHelp = app.showHelp;
|
|
79
16
|
|
|
80
|
-
export const isQuiet = argv.flag(['--silent', '-s', '--quiet']) > 0;
|
|
81
|
-
export const isJsonOutput = argv.flag('--json') > 0;
|
|
82
|
-
export const isHelp = argv.flag(['--help', '-h']) > 0;
|
|
83
17
|
export const distTagInput = argv.single('--dist-tag') || 'latest';
|
|
84
18
|
export const registryInput = argv.single('--registry') || 'detect';
|
|
85
|
-
export const isDebugMode = argv.flag(['--debug', '-d']) > 0;
|
|
86
|
-
export const isVerbose = argv.flag(['--debug', '-d']) > 1;
|
|
87
19
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
20
|
+
/** @deprecated */
|
|
21
|
+
export const isDebugMode = app.debug;
|
|
22
|
+
/** @deprecated */
|
|
23
|
+
export const isVerbose = app.verbose;
|
|
91
24
|
|
|
92
25
|
export function pArgS(s: string) {
|
|
93
26
|
return `\x1B[3;38;5;14m${s}\x1B[0m`;
|
|
@@ -98,51 +31,3 @@ export function pDesc(s: string) {
|
|
|
98
31
|
export function pCmd(s: string) {
|
|
99
32
|
return `\x1B[38;5;10m${s}\x1B[0m`;
|
|
100
33
|
}
|
|
101
|
-
|
|
102
|
-
export const mainCliController = {
|
|
103
|
-
command: undefined as CommandDefine | undefined,
|
|
104
|
-
setCommand(cmd: CommandDefine) {
|
|
105
|
-
this.command = cmd;
|
|
106
|
-
},
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
export function printCommonOptions() {
|
|
110
|
-
process.stderr.write('\x1B[2m通用参数\x1B[0m:\n');
|
|
111
|
-
|
|
112
|
-
const whitelist = mainCliController.command?.commonArgs ?? all_common_args;
|
|
113
|
-
const clone_common: Record<string, ArgDefine> = {};
|
|
114
|
-
for (const key of whitelist) {
|
|
115
|
-
clone_common[key] = common_args[key];
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
process.stderr.write(formatOptions(clone_common, { color: 3, indent: ' ' }));
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
interface IFormatOptions {
|
|
122
|
-
color?: number;
|
|
123
|
-
indent?: string;
|
|
124
|
-
}
|
|
125
|
-
export function formatOptions(args: Record<string, ArgDefine>, { color, indent }: IFormatOptions = {}) {
|
|
126
|
-
let r = '';
|
|
127
|
-
if (!color) color = 14;
|
|
128
|
-
if (!indent) indent = '';
|
|
129
|
-
|
|
130
|
-
for (const [name, { description, flag }] of Object.entries(args)) {
|
|
131
|
-
const names = name.split(',').map((n) => {
|
|
132
|
-
n = n.trim();
|
|
133
|
-
if (!n.startsWith('-')) {
|
|
134
|
-
if (n.length > 1) {
|
|
135
|
-
n = `--${n}`;
|
|
136
|
-
} else {
|
|
137
|
-
n = `-${n}`;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return n;
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
const flag_suffix = flag ? '' : ' <value>';
|
|
144
|
-
|
|
145
|
-
r += `${indent}\x1B[38;5;${color}m${names.join(', ')}${flag_suffix}\x1B[0m: ${description}\n`;
|
|
146
|
-
}
|
|
147
|
-
return r;
|
|
148
|
-
}
|
package/src/common/git/git.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ensureLinkTarget } from '@idlebox/ensure-symlink';
|
|
2
|
-
import { logger } from '@idlebox/
|
|
2
|
+
import { logger } from '@idlebox/cli';
|
|
3
3
|
import { execLazyError, exists, writeFileIfChange } from '@idlebox/node';
|
|
4
4
|
import { execa } from 'execa';
|
|
5
5
|
import { dirname, resolve } from 'node:path';
|
|
@@ -95,7 +95,8 @@ export async function resolveNpm(versions: Map<string, string>) {
|
|
|
95
95
|
versions.set(packName, newVersion);
|
|
96
96
|
|
|
97
97
|
let updated = '';
|
|
98
|
-
|
|
98
|
+
// new version must be ^x.y.z , current version is splitted, so must be x.y.z
|
|
99
|
+
if (currentVersion && !newVersion.includes(currentVersion)) {
|
|
99
100
|
updated = ` ${cs}(from ${currentVersion})${ce}`;
|
|
100
101
|
}
|
|
101
102
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { IPackageJson } from '@idlebox/common';
|
|
2
2
|
import { loadJsonFile, writeJsonFileBack } from '@idlebox/json-edit';
|
|
3
|
-
import { logger } from '@idlebox/
|
|
3
|
+
import { logger } from '@idlebox/cli';
|
|
4
4
|
import { readFile, writeFile } from 'node:fs/promises';
|
|
5
5
|
import { resolve } from 'node:path';
|
|
6
6
|
import { inc } from 'semver';
|
|
@@ -25,6 +25,7 @@ function sort(object: any): any {
|
|
|
25
25
|
export async function makePackageJsonOrderConsistence(root: string) {
|
|
26
26
|
const filepath = resolve(root, 'package.json');
|
|
27
27
|
const data = JSON.parse(await readFile(filepath, 'utf-8'));
|
|
28
|
+
delete data.devDependencies;
|
|
28
29
|
const json = sort(data);
|
|
29
30
|
await writeFile(filepath, JSON.stringify(json, null, 2), 'utf-8');
|
|
30
31
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { logger } from '@idlebox/
|
|
1
|
+
import { CSI, logger } from '@idlebox/cli';
|
|
2
2
|
import { checkChildProcessResult, printLine } from '@idlebox/node';
|
|
3
3
|
import { execa } from 'execa';
|
|
4
|
-
import {
|
|
4
|
+
import { isQuiet } from '../functions/cli.js';
|
|
5
5
|
|
|
6
6
|
export async function cnpmSyncNames(names: ReadonlyArray<string>, collectOutput = isQuiet, dryRun = false) {
|
|
7
7
|
console.log(`🔃 cnpm同步${names.length}个包`);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { sleep } from '@idlebox/common';
|
|
2
|
-
import { logger } from '@idlebox/
|
|
2
|
+
import { logger } from '@idlebox/cli';
|
|
3
3
|
import { exists, streamPromise } from '@idlebox/node';
|
|
4
4
|
import { createWriteStream } from 'node:fs';
|
|
5
5
|
import { mkdir, readFile, rename, writeFile } from 'node:fs/promises';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { WorkspaceBase } from '@build-script/monorepo-lib';
|
|
2
2
|
import { registerGlobalLifecycle } from '@idlebox/common';
|
|
3
3
|
import { writeJsonFile } from '@idlebox/json-edit';
|
|
4
|
-
import { logger } from '@idlebox/
|
|
4
|
+
import { logger } from '@idlebox/cli';
|
|
5
5
|
import { emptyDir } from '@idlebox/node';
|
|
6
6
|
import { randomBytes } from 'node:crypto';
|
|
7
7
|
import { rmSync } from 'node:fs';
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*
|
|
13
13
|
******************************************************************************/
|
|
14
14
|
|
|
15
|
-
export const self_package_version = "0.0.
|
|
15
|
+
export const self_package_version = "0.0.7";
|
|
16
16
|
export const self_package_name = "@build-script/package-tools";
|
|
17
17
|
export const self_package_repository = "undefined";
|
|
18
18
|
|
package/src/main.ts
CHANGED
|
@@ -1,132 +1,15 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import {
|
|
3
|
-
import { createRootLogger, EnableLogLevel } from '@idlebox/logger';
|
|
4
|
-
import { resolve } from 'node:path';
|
|
5
|
-
import cmdList from './command-file-map.generated.js';
|
|
6
|
-
import { argv, DieError, isHelp, isQuiet, isVerbose, pCmd, pDesc, printCommonOptions, type CommandDefine } from './common/functions/cli.js';
|
|
7
|
-
import { registerShutdownHandlers, shutdown } from './common/functions/global-lifecycle.js';
|
|
8
|
-
import { configureProxyFromEnvironment } from './common/package-manager/proxy.js';
|
|
1
|
+
import { makeApplication, type ArgDefineMap } from '@idlebox/cli';
|
|
2
|
+
import { cli_commands, cli_imports } from './commands.generated.js';
|
|
9
3
|
|
|
10
|
-
|
|
4
|
+
export const common_args: ArgDefineMap = {
|
|
5
|
+
'--registry': { flag: false, description: 'npm服务器,默认从.npmrc读取(必须有schema://)' },
|
|
6
|
+
'--dist-tag': { flag: false, description: '需要从服务器读取时使用的tag,默认为"latest"' },
|
|
7
|
+
'--package': { flag: false, description: '实际操作前,更改当前目录(此文件夹应包含package.json)' },
|
|
8
|
+
'--json': { flag: true, description: '输出json格式(部分命令支持)' },
|
|
9
|
+
};
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
await makeApplication().withCommon(common_args).static(cli_imports, cli_commands);
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
console.log('exit code: %d', process.exitCode);
|
|
18
|
-
}
|
|
19
|
-
process.exit();
|
|
20
|
-
} catch (e: any) {
|
|
21
|
-
if (e instanceof AppExit) {
|
|
22
|
-
} else if (e instanceof DieError) {
|
|
23
|
-
console.error('错误: %s', e.message);
|
|
24
|
-
shutdown(1);
|
|
25
|
-
} else {
|
|
26
|
-
prettyPrintError('package-tools:main', e);
|
|
27
|
-
shutdown(1);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
type MainFunc = (argv: ISubArgsReaderApi) => Promise<number> | number;
|
|
32
|
-
|
|
33
|
-
async function importCommand(cmd: keyof typeof cmdList) {
|
|
34
|
-
const exports = await import(cmdList[cmd]);
|
|
35
|
-
const main: MainFunc = exports.main;
|
|
36
|
-
const Command: new () => CommandDefine = exports.Command;
|
|
37
|
-
return { main, Command };
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
async function main() {
|
|
41
|
-
const chdir = argv.single(['--package']);
|
|
42
|
-
if (chdir) process.chdir(resolve(process.cwd(), chdir));
|
|
43
|
-
|
|
44
|
-
const allKnownCommands = Object.keys(cmdList) as (keyof typeof cmdList)[];
|
|
45
|
-
|
|
46
|
-
const subArgv = argv.command(allKnownCommands);
|
|
47
|
-
|
|
48
|
-
if (subArgv?.value && cmdList[subArgv.value]) {
|
|
49
|
-
const cmd = subArgv.value;
|
|
50
|
-
const { main, Command } = await importCommand(cmd);
|
|
51
|
-
|
|
52
|
-
if (isHelp) {
|
|
53
|
-
const command = new Command();
|
|
54
|
-
process.stderr.write(`Usage: ${usage_prefix} ${pCmd(cmd)} ${command.usage.trim()}\n`);
|
|
55
|
-
process.stderr.write(`${command.help.trim().replace(/^/gm, ' ')}\n\n`);
|
|
56
|
-
printCommonOptions();
|
|
57
|
-
process.stderr.write('\n');
|
|
58
|
-
return 0;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
registerShutdownHandlers();
|
|
62
|
-
configureProxyFromEnvironment();
|
|
63
|
-
|
|
64
|
-
// RUN MAIN HERE
|
|
65
|
-
return await main(subArgv);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if (isHelp) {
|
|
69
|
-
} else if (argv.unused().length === 0) {
|
|
70
|
-
console.error('Command is required. pass -h / --help to get usage.');
|
|
71
|
-
return 1;
|
|
72
|
-
} else {
|
|
73
|
-
console.error('\x1B[38;5;9mUnknown command: %s\x1B[0m\n', argv.unused()[0]);
|
|
74
|
-
|
|
75
|
-
printLegend();
|
|
76
|
-
process.stderr.write('\n');
|
|
77
|
-
const tbl = table();
|
|
78
|
-
for (const cmd of allKnownCommands) {
|
|
79
|
-
const { Command } = await importCommand(cmd);
|
|
80
|
-
|
|
81
|
-
const command = new Command();
|
|
82
|
-
if (command.isHidden) continue;
|
|
83
|
-
|
|
84
|
-
tbl.line(cmd, command.description.trim());
|
|
85
|
-
}
|
|
86
|
-
tbl.emit();
|
|
87
|
-
process.stderr.write('\n');
|
|
88
|
-
|
|
89
|
-
return 22;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
printLegend();
|
|
93
|
-
process.stderr.write('\n');
|
|
94
|
-
printCommonOptions();
|
|
95
|
-
process.stderr.write('\n');
|
|
96
|
-
|
|
97
|
-
for (const cmd of allKnownCommands) {
|
|
98
|
-
const { Command } = await importCommand(cmd);
|
|
99
|
-
const command = new Command();
|
|
100
|
-
if (command.isHidden) continue;
|
|
101
|
-
|
|
102
|
-
let usage = command.usage.trim();
|
|
103
|
-
if (usage) usage += ' ';
|
|
104
|
-
usage += pDesc(command.description.trim());
|
|
105
|
-
process.stderr.write(`${pCmd(cmd)} ${usage}\n`);
|
|
106
|
-
const s = command.help.trim();
|
|
107
|
-
process.stderr.write(`${s.replace(/^/gm, ' ')}\n\n`);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return isHelp ? 0 : 22;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
function printLegend() {
|
|
114
|
-
process.stderr.write(`\x1B[2mUsage:\x1B[0m\n ${usage_prefix} \x1B[38;5;10m<命令>\x1B[0m \x1B[38;5;14m[命令参数]\x1B[0m\n`);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
function table() {
|
|
118
|
-
const elements: [string, string][] = [];
|
|
119
|
-
|
|
120
|
-
return {
|
|
121
|
-
line(left: string, right: string) {
|
|
122
|
-
elements.push([left, right]);
|
|
123
|
-
},
|
|
124
|
-
emit() {
|
|
125
|
-
const max_left = Math.max(...elements.map((s) => s[0].length));
|
|
126
|
-
|
|
127
|
-
for (const [left, right] of elements) {
|
|
128
|
-
process.stderr.write(` ${pCmd(left.padEnd(max_left))} ${right}\n`);
|
|
129
|
-
}
|
|
130
|
-
},
|
|
131
|
-
};
|
|
132
|
-
}
|
|
13
|
+
// await makeApplication()
|
|
14
|
+
// .withCommon(common_args)
|
|
15
|
+
// .dynamic(resolve(import.meta.dirname, 'commands'), '*.js');
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-file-map.generated.d.ts","sourceRoot":"","sources":["../src/command-file-map.generated.ts"],"names":[],"mappings":"AAKA;;;;;;;gFAOgF;;;;;;;;;;;;;;;AAEhF,wBAaW"}
|