@tq1086/urpf-cli 2.0.0 → 2.1.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/dist/index.js +2763 -426
- package/package.json +16 -2
- package/readme.md +664 -423
package/readme.md
CHANGED
|
@@ -1,424 +1,665 @@
|
|
|
1
|
-
# URPF CLI 工具
|
|
2
|
-
|
|
3
|
-
基于 URPF (Universal Resource Package Format) v1.0 规范的命令行打包工具。
|
|
4
|
-
|
|
5
|
-
## 项目链接
|
|
6
|
-
|
|
7
|
-
- **首页**: https://gitcode.com/tq1086/urpf-cli
|
|
8
|
-
- **仓库**: git@gitcode.com:tq1086/urpf-cli.git
|
|
9
|
-
- **问题反馈**: https://gitcode.com/tq1086/urpf-cli/issues
|
|
10
|
-
|
|
11
|
-
## 功能特性
|
|
12
|
-
|
|
13
|
-
- ✅ 将文件或目录打包成 URPF 格式
|
|
14
|
-
- ✅ 从 URPF 文件中解包资源到文件系统
|
|
15
|
-
- ✅ 向已有 URPF 包添加文件或目录
|
|
16
|
-
- ✅ 从 URPF 包中移除文件(支持变量替换和通配符)
|
|
17
|
-
- ✅ 支持 `.gitignore` 风格的忽略规则
|
|
18
|
-
- ✅ 自动检测文件编码和换行符类型
|
|
19
|
-
- ✅ 保留文件权限和元数据
|
|
20
|
-
- ✅ 跨平台支持(Windows、Linux、macOS)
|
|
21
|
-
- ✅ 按字节偏移量切片文件(从0开始)
|
|
22
|
-
- ✅ 按行号切片文件(从1开始)
|
|
23
|
-
- ✅ 输出 URPF 内容到屏幕
|
|
24
|
-
- ✅ 复制 URPF 内容到剪贴板
|
|
25
|
-
- ✅ 打包环境变量到 URPF 属性
|
|
26
|
-
- ✅ 变量管理和环境变量管理
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
urpf-cli pack create
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
###
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
-
|
|
258
|
-
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
urpf-cli pack
|
|
275
|
-
|
|
276
|
-
#
|
|
277
|
-
urpf-cli
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
urpf-cli
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
#
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
```
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
1
|
+
# URPF CLI 工具
|
|
2
|
+
|
|
3
|
+
基于 URPF (Universal Resource Package Format) v1.0 规范的命令行打包工具。
|
|
4
|
+
|
|
5
|
+
## 项目链接
|
|
6
|
+
|
|
7
|
+
- **首页**: https://gitcode.com/tq1086/urpf-cli
|
|
8
|
+
- **仓库**: git@gitcode.com:tq1086/urpf-cli.git
|
|
9
|
+
- **问题反馈**: https://gitcode.com/tq1086/urpf-cli/issues
|
|
10
|
+
|
|
11
|
+
## 功能特性
|
|
12
|
+
|
|
13
|
+
- ✅ 将文件或目录打包成 URPF 格式
|
|
14
|
+
- ✅ 从 URPF 文件中解包资源到文件系统
|
|
15
|
+
- ✅ 向已有 URPF 包添加文件或目录
|
|
16
|
+
- ✅ 从 URPF 包中移除文件(支持变量替换和通配符)
|
|
17
|
+
- ✅ 支持 `.gitignore` 风格的忽略规则
|
|
18
|
+
- ✅ 自动检测文件编码和换行符类型
|
|
19
|
+
- ✅ 保留文件权限和元数据
|
|
20
|
+
- ✅ 跨平台支持(Windows、Linux、macOS)
|
|
21
|
+
- ✅ 按字节偏移量切片文件(从0开始)
|
|
22
|
+
- ✅ 按行号切片文件(从1开始)
|
|
23
|
+
- ✅ 输出 URPF 内容到屏幕
|
|
24
|
+
- ✅ 复制 URPF 内容到剪贴板
|
|
25
|
+
- ✅ 打包环境变量到 URPF 属性
|
|
26
|
+
- ✅ 变量管理和环境变量管理
|
|
27
|
+
- ✅ **配置文件合并** - 支持多个配置文件合并,支持 overwrite/skip/rename 三种冲突处理策略
|
|
28
|
+
- ✅ **Key 提取历史记录** - 记录、查看、重用历史 key 提取操作
|
|
29
|
+
- ✅ **远程配置文件支持** - 支持 HTTP/HTTPS,支持 Basic Auth/Bearer Token 认证
|
|
30
|
+
- ✅ **配置差异对比** - 对比配置文件差异,识别 SAME/CHANGED/ADDED/REMOVED 类型
|
|
31
|
+
|
|
32
|
+
## 安装
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# 全局安装
|
|
36
|
+
npm install -g @tq1086/urpf-cli
|
|
37
|
+
|
|
38
|
+
# 本地安装
|
|
39
|
+
npm install @tq1086/urpf-cli
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 使用方法
|
|
43
|
+
|
|
44
|
+
### 基本用法
|
|
45
|
+
|
|
46
|
+
#### 打包命令 (pack)
|
|
47
|
+
|
|
48
|
+
URPF CLI 提供了子命令结构,支持灵活的包管理操作。
|
|
49
|
+
|
|
50
|
+
**创建新的 URPF 包**:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# 创建新的 URPF 包
|
|
54
|
+
urpf-cli pack create package.json
|
|
55
|
+
|
|
56
|
+
# 打包目录
|
|
57
|
+
urpf-cli pack create src/
|
|
58
|
+
|
|
59
|
+
# 指定输出路径
|
|
60
|
+
urpf-cli pack create src/ -o output.urpf.txt
|
|
61
|
+
|
|
62
|
+
# 显示详细日志
|
|
63
|
+
urpf-cli pack create src/ -v
|
|
64
|
+
|
|
65
|
+
# 按字节偏移量切片(从0开始)
|
|
66
|
+
urpf-cli pack create file.txt --byte 100:200
|
|
67
|
+
|
|
68
|
+
# 按行号切片(从1开始)
|
|
69
|
+
urpf-cli pack create file.txt --line 10:20
|
|
70
|
+
|
|
71
|
+
# 输出到屏幕
|
|
72
|
+
urpf-cli pack create file.txt --stdout
|
|
73
|
+
|
|
74
|
+
# 复制到剪贴板
|
|
75
|
+
urpf-cli pack create file.txt --clipboard
|
|
76
|
+
|
|
77
|
+
# 打包环境变量
|
|
78
|
+
urpf-cli pack create src/ --env API_KEY
|
|
79
|
+
urpf-cli pack create src/ --env "*"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**向已有 URPF 包添加文件**:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# 添加单个文件
|
|
86
|
+
urpf-cli pack add package.urpf.txt newfile.txt
|
|
87
|
+
|
|
88
|
+
# 添加多个文件
|
|
89
|
+
urpf-cli pack add package.urpf.txt file1.txt file2.txt
|
|
90
|
+
|
|
91
|
+
# 添加目录
|
|
92
|
+
urpf-cli pack add package.urpf.txt newdir/
|
|
93
|
+
|
|
94
|
+
# 混合添加文件和目录
|
|
95
|
+
urpf-cli pack add package.urpf.txt file1.txt dir1/ file2.txt
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**从 URPF 包移除文件**:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
# 移除单个文件
|
|
102
|
+
urpf-cli pack remove package.urpf.txt oldfile.txt
|
|
103
|
+
|
|
104
|
+
# 移除多个文件
|
|
105
|
+
urpf-cli pack remove package.urpf.txt file1.txt file2.txt
|
|
106
|
+
|
|
107
|
+
# 使用通配符
|
|
108
|
+
urpf-cli pack remove package.urpf.txt "*.log"
|
|
109
|
+
|
|
110
|
+
# 使用变量替换
|
|
111
|
+
urpf-cli pack remove package.urpf.txt "${root}/config.json"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
#### 解包命令 (unpack)
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# 解包到当前目录
|
|
118
|
+
urpf-cli unpack package.urpf.txt
|
|
119
|
+
|
|
120
|
+
# 解包到指定目录
|
|
121
|
+
urpf-cli unpack package.urpf.txt -o ./output
|
|
122
|
+
|
|
123
|
+
# 只解压指定的文件
|
|
124
|
+
urpf-cli unpack package.urpf.txt config.json
|
|
125
|
+
|
|
126
|
+
# 只解压目录
|
|
127
|
+
urpf-cli unpack package.urpf.txt src/
|
|
128
|
+
|
|
129
|
+
# 解压多个文件
|
|
130
|
+
urpf-cli unpack package.urpf.txt config.json src/index.js
|
|
131
|
+
|
|
132
|
+
# 使用通配符
|
|
133
|
+
urpf-cli unpack package.urpf.txt "*.js"
|
|
134
|
+
|
|
135
|
+
# 强制覆盖已存在的文件
|
|
136
|
+
urpf-cli unpack package.urpf.txt --force
|
|
137
|
+
|
|
138
|
+
# 仅当源文件更新时才覆盖
|
|
139
|
+
urpf-cli unpack package.urpf.txt --force-when-newer
|
|
140
|
+
|
|
141
|
+
# 自动确认环境变量设置(无需用户交互)
|
|
142
|
+
urpf-cli unpack package.urpf.txt --unpack-env
|
|
143
|
+
|
|
144
|
+
# 应用变量替换到文件内容
|
|
145
|
+
urpf-cli unpack package.urpf.txt --apply-variables
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
#### 列出命令 (list)
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
# 列出 URPF 包中的所有文件
|
|
152
|
+
urpf-cli list package.urpf.txt
|
|
153
|
+
|
|
154
|
+
# 按模式过滤文件
|
|
155
|
+
urpf-cli list package.urpf.txt --pattern "*.js"
|
|
156
|
+
|
|
157
|
+
# 以 JSON 格式输出
|
|
158
|
+
urpf-cli list package.urpf.txt --json
|
|
159
|
+
|
|
160
|
+
# 显示详细信息
|
|
161
|
+
urpf-cli list package.urpf.txt -v
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
#### 信息命令 (info)
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
# 显示 URPF 包的摘要信息
|
|
168
|
+
urpf-cli info package.urpf.txt
|
|
169
|
+
|
|
170
|
+
# 以 JSON 格式输出
|
|
171
|
+
urpf-cli info package.urpf.txt --json
|
|
172
|
+
|
|
173
|
+
# 显示详细信息
|
|
174
|
+
urpf-cli info package.urpf.txt -v
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
#### 验证命令 (verify)
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
# 验证 URPF 包的文件完整性
|
|
181
|
+
urpf-cli verify package.urpf.txt
|
|
182
|
+
|
|
183
|
+
# 尝试修复常见问题
|
|
184
|
+
urpf-cli verify package.urpf.txt --fix
|
|
185
|
+
|
|
186
|
+
# 显示详细日志
|
|
187
|
+
urpf-cli verify package.urpf.txt -v
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
#### 比较命令 (diff)
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
# 比较两个 URPF 包
|
|
194
|
+
urpf-cli diff package-v1.urpf.txt package-v2.urpf.txt
|
|
195
|
+
|
|
196
|
+
# 以 JSON 格式输出
|
|
197
|
+
urpf-cli diff package-v1.urpf.txt package-v2.urpf.txt --json
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
#### 合并命令 (merge)
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
# 合并多个 URPF 包
|
|
204
|
+
urpf-cli merge merged.urpf.txt pkg1.urpf.txt pkg2.urpf.txt
|
|
205
|
+
|
|
206
|
+
# 使用覆盖策略
|
|
207
|
+
urpf-cli merge merged.urpf.txt pkg1.urpf.txt pkg2.urpf.txt --strategy overwrite
|
|
208
|
+
|
|
209
|
+
# 使用重命名策略
|
|
210
|
+
urpf-cli merge merged.urpf.txt pkg1.urpf.txt pkg2.urpf.txt --strategy rename
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
#### 变量管理命令 (var)
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
# 添加变量
|
|
217
|
+
urpf-cli var add package.urpf.txt VERSION "1.0.0"
|
|
218
|
+
|
|
219
|
+
# 列出所有变量
|
|
220
|
+
urpf-cli var list package.urpf.txt
|
|
221
|
+
|
|
222
|
+
# 删除变量
|
|
223
|
+
urpf-cli var remove package.urpf.txt VERSION
|
|
224
|
+
|
|
225
|
+
# 清除所有变量
|
|
226
|
+
urpf-cli var clear package.urpf.txt
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
#### 环境变量管理命令 (env)
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
# 添加环境变量(使用系统值)
|
|
233
|
+
urpf-cli env add package.urpf.txt API_KEY
|
|
234
|
+
|
|
235
|
+
# 添加环境变量(指定值)
|
|
236
|
+
urpf-cli env add package.urpf.txt API_KEY "my-secret-key"
|
|
237
|
+
|
|
238
|
+
# 列出所有环境变量
|
|
239
|
+
urpf-cli env list package.urpf.txt
|
|
240
|
+
|
|
241
|
+
# 删除环境变量
|
|
242
|
+
urpf-cli env remove package.urpf.txt API_KEY
|
|
243
|
+
|
|
244
|
+
# 清除所有环境变量
|
|
245
|
+
urpf-cli env clear package.urpf.txt
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### 文件后缀
|
|
249
|
+
|
|
250
|
+
URPF 文件使用 `.urpf.txt` 后缀,这是一种文本格式的资源包文件。
|
|
251
|
+
|
|
252
|
+
### Key 提取功能
|
|
253
|
+
|
|
254
|
+
URPF CLI 支持从多种配置文件格式中提取指定键值的功能。
|
|
255
|
+
|
|
256
|
+
**支持的文件格式**:
|
|
257
|
+
- JSON (.json)
|
|
258
|
+
- YAML (.yaml, .yml)
|
|
259
|
+
- TOML (.toml)
|
|
260
|
+
- XML (.xml)
|
|
261
|
+
- Properties (.properties)
|
|
262
|
+
- INI (.ini)
|
|
263
|
+
|
|
264
|
+
**打包时提取 key 值**:
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
# 从 JSON 文件提取 key 值
|
|
268
|
+
urpf-cli pack create config.json --key "server.port"
|
|
269
|
+
|
|
270
|
+
# 从 YAML 文件提取嵌套值
|
|
271
|
+
urpf-cli pack create config.yaml --key "database.host"
|
|
272
|
+
|
|
273
|
+
# 从 TOML 文件提取值
|
|
274
|
+
urpf-cli pack create config.toml --key "app.version"
|
|
275
|
+
|
|
276
|
+
# 从 XML 文件提取值
|
|
277
|
+
urpf-cli pack create config.xml --key "root.server.port"
|
|
278
|
+
|
|
279
|
+
# 从 Properties 文件提取值
|
|
280
|
+
urpf-cli pack create config.properties --key "server.port"
|
|
281
|
+
|
|
282
|
+
# 从 INI 文件提取值(支持 section)
|
|
283
|
+
urpf-cli pack create config.ini --key "database.host"
|
|
284
|
+
|
|
285
|
+
# 支持数组索引访问
|
|
286
|
+
urpf-cli pack create config.json --key "items[0].name"
|
|
287
|
+
urpf-cli pack create config.json --key "items.0.name" # 等价写法
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
**解包时提取 key 值**:
|
|
291
|
+
|
|
292
|
+
```bash
|
|
293
|
+
# 从 URPF 包中的配置文件提取 key 值
|
|
294
|
+
urpf-cli unpack package.urpf.txt --key "config.json:server.port"
|
|
295
|
+
|
|
296
|
+
# 提取多个 key 值
|
|
297
|
+
urpf-cli unpack package.urpf.txt --key "config.json:server.port" --key "config.json:server.host"
|
|
298
|
+
|
|
299
|
+
# 结合其他选项使用
|
|
300
|
+
urpf-cli unpack package.urpf.txt --key "config.json:server.port" --stdout
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
**Key 语法说明**:
|
|
304
|
+
|
|
305
|
+
- **点分隔符**:使用 `.` 访问嵌套属性(如 `config.server.port`)
|
|
306
|
+
- **数组索引**:使用 `[n]` 或 `.n` 访问数组元素(如 `items[0]` 或 `items.0`)
|
|
307
|
+
- **组合路径**:支持组合使用(如 `items[0].name`)
|
|
308
|
+
|
|
309
|
+
**示例**:
|
|
310
|
+
|
|
311
|
+
```json
|
|
312
|
+
// config.json
|
|
313
|
+
{
|
|
314
|
+
"server": {
|
|
315
|
+
"port": 3000,
|
|
316
|
+
"host": "localhost"
|
|
317
|
+
},
|
|
318
|
+
"items": [
|
|
319
|
+
{ "name": "item1", "value": 100 },
|
|
320
|
+
{ "name": "item2", "value": 200 }
|
|
321
|
+
]
|
|
322
|
+
}
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
# 提取 server.port
|
|
327
|
+
urpf-cli pack create config.json --key "server.port"
|
|
328
|
+
# 输出: 3000
|
|
329
|
+
|
|
330
|
+
# 提取 items[0].name
|
|
331
|
+
urpf-cli pack create config.json --key "items[0].name"
|
|
332
|
+
# 输出: item1
|
|
333
|
+
|
|
334
|
+
# 提取 items.1.value(等价于 items[1].value)
|
|
335
|
+
urpf-cli pack create config.json --key "items.1.value"
|
|
336
|
+
# 输出: 200
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
**注意事项**:
|
|
340
|
+
- `--key` 选项与 `--byte`、`--line` 选项互斥,不能同时使用
|
|
341
|
+
- 如果指定的 key 路径不存在,将抛出错误
|
|
342
|
+
- 对于 XML 文件,key 路径从根元素开始(如 `root.server.port`)
|
|
343
|
+
- 对于 Properties 和 INI 文件,支持 section 语法(如 `database.host`)
|
|
344
|
+
|
|
345
|
+
### 环境变量支持
|
|
346
|
+
|
|
347
|
+
**打包环境变量**:
|
|
348
|
+
- 使用 `--env <name>` 打包单个环境变量
|
|
349
|
+
- 使用 `--env "*"` 打包全部环境变量(排除含 "key" 的变量)
|
|
350
|
+
- 使用 `--env <name> <value>` 指定环境变量的值
|
|
351
|
+
|
|
352
|
+
**解包环境变量**:
|
|
353
|
+
- 如果 URPF 包包含环境变量,解包时会提示用户是否设置
|
|
354
|
+
- 使用 `--unpack-env` 选项可自动确认环境变量设置(无需用户交互)
|
|
355
|
+
- 使用 `--apply-variables` 选项可应用变量替换到文件内容
|
|
356
|
+
|
|
357
|
+
### 变量替换
|
|
358
|
+
|
|
359
|
+
URPF 包支持变量替换功能,可以在打包和解包时使用变量。
|
|
360
|
+
|
|
361
|
+
**定义变量**:
|
|
362
|
+
```bash
|
|
363
|
+
urpf-cli var add package.urpf.txt ROOT "/path/to/root"
|
|
364
|
+
urpf-cli var add package.urpf.txt VERSION "1.0.0"
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
**使用变量**:
|
|
368
|
+
```bash
|
|
369
|
+
# 在 pack remove 中使用变量
|
|
370
|
+
urpf-cli pack remove package.urpf.txt "${ROOT}/config.json"
|
|
371
|
+
urpf-cli pack remove package.urpf.txt "${VERSION}.txt"
|
|
372
|
+
|
|
373
|
+
# 在文件内容中使用变量(解包时)
|
|
374
|
+
urpf-cli unpack package.urpf.txt --apply-variables
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### 忽略规则
|
|
378
|
+
|
|
379
|
+
URPF CLI 支持 `.gitignore` 风格的忽略规则。
|
|
380
|
+
|
|
381
|
+
**默认忽略规则文件**:
|
|
382
|
+
- `.gitignore`
|
|
383
|
+
- `.urpfignore`
|
|
384
|
+
|
|
385
|
+
**白名单和黑名单**:
|
|
386
|
+
- `.urpfallow` - 白名单文件(格式与 .gitignore 一致)
|
|
387
|
+
- `.urpfforbid` - 黑名单文件(格式与 .gitignore 一致)
|
|
388
|
+
|
|
389
|
+
**文件打包规则**:
|
|
390
|
+
- 不在黑名单内
|
|
391
|
+
- 不在 ignore 内
|
|
392
|
+
- 在白名单内(或无白名单)
|
|
393
|
+
- 不以点开头
|
|
394
|
+
|
|
395
|
+
**指定忽略规则文件**:
|
|
396
|
+
```bash
|
|
397
|
+
urpf-cli pack create src/ -i .customignore
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
### 配置文件合并
|
|
401
|
+
|
|
402
|
+
URPF CLI 支持合并多个 URPF 包或配置文件,处理文件冲突。
|
|
403
|
+
|
|
404
|
+
**基本用法**:
|
|
405
|
+
```bash
|
|
406
|
+
# 合并多个 URPF 包
|
|
407
|
+
urpf-cli merge merged.urpf.txt pkg1.urpf.txt pkg2.urpf.txt pkg3.urpf.txt
|
|
408
|
+
|
|
409
|
+
# 使用覆盖策略(默认)
|
|
410
|
+
urpf-cli merge merged.urpf.txt pkg1.urpf.txt pkg2.urpf.txt --strategy overwrite
|
|
411
|
+
|
|
412
|
+
# 使用跳过策略
|
|
413
|
+
urpf-cli merge merged.urpf.txt pkg1.urpf.txt pkg2.urpf.txt --strategy skip
|
|
414
|
+
|
|
415
|
+
# 使用重命名策略
|
|
416
|
+
urpf-cli merge merged.urpf.txt pkg1.urpf.txt pkg2.urpf.txt --strategy rename
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
**冲突处理策略**:
|
|
420
|
+
- `overwrite` - 后文件覆盖前文件(默认)
|
|
421
|
+
- `skip` - 跳过冲突的文件
|
|
422
|
+
- `rename` - 重命名冲突的文件(如 `config.json` → `config_2.json`)
|
|
423
|
+
|
|
424
|
+
**示例**:
|
|
425
|
+
```bash
|
|
426
|
+
# 合并两个包含相同文件的包
|
|
427
|
+
urpf-cli merge merged.urpf.txt base.urpf.txt override.urpf.txt --strategy overwrite
|
|
428
|
+
|
|
429
|
+
# 合并多个包并跳过冲突
|
|
430
|
+
urpf-cli merge merged.urpf.txt pkg1.urpf.txt pkg2.urpf.txt pkg3.urpf.txt --strategy skip
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
### Key 提取历史记录
|
|
434
|
+
|
|
435
|
+
URPF CLI 自动记录 Key 提取操作,支持查看历史记录和快速重用。
|
|
436
|
+
|
|
437
|
+
**历史记录功能**:
|
|
438
|
+
```bash
|
|
439
|
+
# 查看所有历史记录
|
|
440
|
+
urpf-cli pack create config.json --key "server.port" --history
|
|
441
|
+
|
|
442
|
+
# 查看最近 10 条历史记录
|
|
443
|
+
urpf-cli pack create config.json --key "database.host" --history --limit 10
|
|
444
|
+
|
|
445
|
+
# 搜索历史记录
|
|
446
|
+
urpf-cli pack create config.json --key "server.port" --history --search "server"
|
|
447
|
+
|
|
448
|
+
# 清除历史记录
|
|
449
|
+
urpf-cli pack create config.json --key "server.port" --history --clear
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
**历史记录位置**:
|
|
453
|
+
- 存储在用户主目录的 `.urpf/history.json`
|
|
454
|
+
- 默认保留最近 100 条记录
|
|
455
|
+
- 按时间倒序排列
|
|
456
|
+
|
|
457
|
+
**示例**:
|
|
458
|
+
```bash
|
|
459
|
+
# 提取 key 并记录到历史
|
|
460
|
+
urpf-cli pack create config.json --key "server.port"
|
|
461
|
+
|
|
462
|
+
# 查看历史记录
|
|
463
|
+
urpf-cli history
|
|
464
|
+
|
|
465
|
+
# 重用历史记录(按索引)
|
|
466
|
+
urpf-cli pack create config.json --history --reuse 0
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
### 远程配置文件支持
|
|
470
|
+
|
|
471
|
+
URPF CLI 支持从远程 URL 直接提取 key 或打包配置文件。
|
|
472
|
+
|
|
473
|
+
**基本用法**:
|
|
474
|
+
```bash
|
|
475
|
+
# 从远程 URL 提取 key
|
|
476
|
+
urpf-cli pack create https://example.com/config.json --key "server.port"
|
|
477
|
+
|
|
478
|
+
# 使用 Basic Auth
|
|
479
|
+
urpf-cli pack create https://user:password@example.com/config.json --key "database.host"
|
|
480
|
+
|
|
481
|
+
# 使用 Bearer Token
|
|
482
|
+
urpf-cli pack create https://api.example.com/config.json --key "api.key" --token "your-token-here"
|
|
483
|
+
|
|
484
|
+
# 设置超时时间(毫秒)
|
|
485
|
+
urpf-cli pack create https://example.com/config.json --key "server.port" --timeout 30000
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
**支持的认证方式**:
|
|
489
|
+
- `none` - 无认证(默认)
|
|
490
|
+
- `basic` - Basic Auth(用户名:密码)
|
|
491
|
+
- `bearer` - Bearer Token
|
|
492
|
+
- `custom` - 自定义请求头
|
|
493
|
+
|
|
494
|
+
**示例**:
|
|
495
|
+
```bash
|
|
496
|
+
# 从公共配置文件提取 key
|
|
497
|
+
urpf-cli pack create https://raw.githubusercontent.com/user/repo/main/config.json --key "app.version"
|
|
498
|
+
|
|
499
|
+
# 从需要认证的 API 获取配置
|
|
500
|
+
urpf-cli pack create https://api.example.com/config --token "your-bearer-token" --key "api.endpoint"
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
### 配置差异对比
|
|
504
|
+
|
|
505
|
+
URPF CLI 支持对比两个配置文件或 URPF 包的差异,生成详细的差异报告。
|
|
506
|
+
|
|
507
|
+
**基本用法**:
|
|
508
|
+
```bash
|
|
509
|
+
# 对比两个 URPF 包
|
|
510
|
+
urpf-cli diff package-v1.urpf.txt package-v2.urpf.txt
|
|
511
|
+
|
|
512
|
+
# 对比配置文件
|
|
513
|
+
urpf-cli diff config-dev.json config-prod.json
|
|
514
|
+
|
|
515
|
+
# 以 JSON 格式输出
|
|
516
|
+
urpf-cli diff package-v1.urpf.txt package-v2.urpf.txt --json
|
|
517
|
+
|
|
518
|
+
# 显示相同的 key
|
|
519
|
+
urpf-cli diff config1.yaml config2.yaml --show-same
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
**差异类型**:
|
|
523
|
+
- `SAME` - 值相同
|
|
524
|
+
- `CHANGED` - 值不同
|
|
525
|
+
- `ADDED` - 仅在第二个文件中存在
|
|
526
|
+
- `REMOVED` - 仅在第一个文件中存在
|
|
527
|
+
|
|
528
|
+
**示例**:
|
|
529
|
+
```bash
|
|
530
|
+
# 对比两个环境配置
|
|
531
|
+
urpf-cli diff config.dev.json config.prod.json
|
|
532
|
+
|
|
533
|
+
# 输出 JSON 格式的差异报告
|
|
534
|
+
urpf-cli diff package-v1.urpf.txt package-v2.urpf.txt --json > diff-report.json
|
|
535
|
+
|
|
536
|
+
# 显示所有差异(包括相同的 key)
|
|
537
|
+
urpf-cli diff config1.yaml config2.yaml --show-same
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
## 高级用法
|
|
541
|
+
|
|
542
|
+
### 字节切片
|
|
543
|
+
|
|
544
|
+
按字节偏移量切片文件,从 0 开始。
|
|
545
|
+
|
|
546
|
+
```bash
|
|
547
|
+
# 切片从字节 100 到 200
|
|
548
|
+
urpf-cli pack create file.txt --byte 100:200
|
|
549
|
+
|
|
550
|
+
# 切片从字节 100 到文件末尾
|
|
551
|
+
urpf-cli pack create file.txt --byte 100
|
|
552
|
+
|
|
553
|
+
# 切片从文件开头到字节 200
|
|
554
|
+
urpf-cli pack create file.txt --byte :200
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
### 行切片
|
|
558
|
+
|
|
559
|
+
按行号切片文件,从 1 开始。
|
|
560
|
+
|
|
561
|
+
```bash
|
|
562
|
+
# 切片第 10 到 20 行
|
|
563
|
+
urpf-cli pack create file.txt --line 10:20
|
|
564
|
+
|
|
565
|
+
# 切片第 10 行到文件末尾
|
|
566
|
+
urpf-cli pack create file.txt --line 10
|
|
567
|
+
|
|
568
|
+
# 切片从文件开头到第 20 行
|
|
569
|
+
urpf-cli pack create file.txt --line :20
|
|
570
|
+
```
|
|
571
|
+
|
|
572
|
+
### 跨平台路径处理
|
|
573
|
+
|
|
574
|
+
URPF CLI 自动处理不同操作系统的路径分隔符。
|
|
575
|
+
|
|
576
|
+
```bash
|
|
577
|
+
# Windows
|
|
578
|
+
urpf-cli pack create C:\project\src\
|
|
579
|
+
|
|
580
|
+
# Linux/macOS
|
|
581
|
+
urpf-cli pack create /home/user/project/src/
|
|
582
|
+
|
|
583
|
+
# 相对路径
|
|
584
|
+
urpf-cli pack create ./src/
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
## 项目结构
|
|
588
|
+
|
|
589
|
+
```
|
|
590
|
+
urpf-cli/
|
|
591
|
+
├── src/
|
|
592
|
+
│ ├── commands/ # 命令实现
|
|
593
|
+
│ │ ├── pack.ts
|
|
594
|
+
│ │ ├── unpack.ts
|
|
595
|
+
│ │ ├── pack-add.ts
|
|
596
|
+
│ │ ├── pack-remove.ts
|
|
597
|
+
│ │ ├── list.ts
|
|
598
|
+
│ │ ├── info.ts
|
|
599
|
+
│ │ ├── verify.ts
|
|
600
|
+
│ │ ├── diff.ts
|
|
601
|
+
│ │ ├── merge.ts
|
|
602
|
+
│ │ ├── var.ts
|
|
603
|
+
│ │ ├── env.ts
|
|
604
|
+
│ │ └── types.ts
|
|
605
|
+
│ ├── core/
|
|
606
|
+
│ │ ├── parser/ # URPF 解析器
|
|
607
|
+
│ │ ├── scanner/ # 文件扫描器
|
|
608
|
+
│ │ ├── generator/ # URPF 生成器
|
|
609
|
+
│ │ ├── engine/ # UDRS 集成层
|
|
610
|
+
│ │ ├── merger/ # 配置合并器(新增)
|
|
611
|
+
│ │ ├── history/ # Key 历史记录(新增)
|
|
612
|
+
│ │ ├── remote/ # 远程文件获取(新增)
|
|
613
|
+
│ │ └── diff/ # 配置差异对比(新增)
|
|
614
|
+
│ ├── utils/ # 工具函数
|
|
615
|
+
│ └── index.ts # CLI 入口
|
|
616
|
+
├── tests/ # 测试文件
|
|
617
|
+
├── examples/ # 示例文件
|
|
618
|
+
├── package.json
|
|
619
|
+
├── tsconfig.json
|
|
620
|
+
└── readme.md
|
|
621
|
+
```
|
|
622
|
+
|
|
623
|
+
## 开发
|
|
624
|
+
|
|
625
|
+
### 安装依赖
|
|
626
|
+
|
|
627
|
+
```bash
|
|
628
|
+
npm install
|
|
629
|
+
```
|
|
630
|
+
|
|
631
|
+
### 构建项目
|
|
632
|
+
|
|
633
|
+
```bash
|
|
634
|
+
npm run build
|
|
635
|
+
```
|
|
636
|
+
|
|
637
|
+
### 运行测试
|
|
638
|
+
|
|
639
|
+
```bash
|
|
640
|
+
npm test
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
### 代码检查
|
|
644
|
+
|
|
645
|
+
```bash
|
|
646
|
+
npm run lint
|
|
647
|
+
```
|
|
648
|
+
|
|
649
|
+
### 代码格式化
|
|
650
|
+
|
|
651
|
+
```bash
|
|
652
|
+
npm run format
|
|
653
|
+
```
|
|
654
|
+
|
|
655
|
+
## 许可证
|
|
656
|
+
|
|
657
|
+
MIT License
|
|
658
|
+
|
|
659
|
+
## 贡献
|
|
660
|
+
|
|
661
|
+
欢迎提交 Issue 和 Pull Request!
|
|
662
|
+
|
|
663
|
+
## 更新日志
|
|
664
|
+
|
|
424
665
|
查看 [CHANGELOG.md](CHANGELOG.md) 了解版本更新历史。
|