@lazycatcloud/lzc-cli 1.3.10 → 1.3.11
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/changelog.md +8 -0
- package/lib/appstore/index.js +32 -17
- package/lib/config/env.js +7 -0
- package/package.json +1 -1
package/changelog.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.3.11](https://gitee.com/linakesi/lzc-cli/compare/v1.3.10...v1.3.11) (2025-10-10)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* support setting token through environment variables ([4a25f84](https://gitee.com/linakesi/lzc-cli/commits/4a25f84fe4df938cb3d85f6391e27772dae5b071))
|
|
9
|
+
* the copy-image command adds the `trace-level` parameter ([cd4d4c3](https://gitee.com/linakesi/lzc-cli/commits/cd4d4c351d4bd43bffcfe5f67087c6bffd65d3f4))
|
|
10
|
+
|
|
3
11
|
## [1.3.10](https://gitee.com/linakesi/lzc-cli/compare/v0.0.8...v1.3.10) (2025-08-15)
|
|
4
12
|
|
|
5
13
|
### Bug Fixes
|
package/lib/appstore/index.js
CHANGED
|
@@ -76,20 +76,31 @@ export function appstoreCommand(program) {
|
|
|
76
76
|
default: "amd64",
|
|
77
77
|
type: "string"
|
|
78
78
|
})
|
|
79
|
+
// 出于 CI 目的增加控制是否打印进度选项
|
|
80
|
+
yargs.option("trace-level", {
|
|
81
|
+
describe: "trace level 'verbose', 'quiet'",
|
|
82
|
+
default: "verbose",
|
|
83
|
+
type: "string"
|
|
84
|
+
})
|
|
79
85
|
return yargs
|
|
80
86
|
},
|
|
81
|
-
handler: async ({ img: imageName, arch: platform }) => {
|
|
87
|
+
handler: async ({ img: imageName, arch: platform, traceLevel }) => {
|
|
82
88
|
const uploadUrl = `${appStoreServerUrl}/api/v3/developer/app/docker/image/push/v3/copy?image=${imageName}&platform=${platform}`
|
|
83
89
|
const progressUrl = `${appStoreServerUrl}/api/v3/developer/app/docker/image/push/v3/progress?image=${imageName}&platform=${platform}`
|
|
84
|
-
|
|
85
|
-
|
|
90
|
+
|
|
91
|
+
const useCI = traceLevel === "quiet"
|
|
92
|
+
const _logger = logger
|
|
93
|
+
_logger.setLevel(useCI ? _logger.levels.ERROR : _logger.levels.INFO)
|
|
94
|
+
|
|
95
|
+
_logger.info(
|
|
96
|
+
`Waiting ... ( copy ${imageName} (${platform}) to lazycat offical registry)`
|
|
86
97
|
)
|
|
87
98
|
try {
|
|
88
99
|
const resp = await request(uploadUrl)
|
|
89
100
|
if (resp.ok) {
|
|
90
|
-
|
|
101
|
+
_logger.info("uploading")
|
|
91
102
|
} else {
|
|
92
|
-
|
|
103
|
+
_logger.error("error: ", resp, await resp.text())
|
|
93
104
|
return
|
|
94
105
|
}
|
|
95
106
|
sleep(1000)
|
|
@@ -97,6 +108,10 @@ export function appstoreCommand(program) {
|
|
|
97
108
|
let layers = []
|
|
98
109
|
|
|
99
110
|
let refreshProgress = (lys) => {
|
|
111
|
+
if (useCI) {
|
|
112
|
+
// 日志级别为 quiet 时不输出进度(用于 CI 目的)
|
|
113
|
+
return
|
|
114
|
+
}
|
|
100
115
|
// 关键修改:动态回退多行
|
|
101
116
|
process.stdout.write("\x1B[?25l") // 隐藏光标
|
|
102
117
|
if (prevLineCount > 0) {
|
|
@@ -130,30 +145,30 @@ export function appstoreCommand(program) {
|
|
|
130
145
|
;(layers ? layers : [])?.forEach((v) => {
|
|
131
146
|
v.progress = 100
|
|
132
147
|
})
|
|
133
|
-
refreshProgress(layers)
|
|
134
|
-
process.stdout.write("\n")
|
|
135
148
|
if (pgs.errmsg) {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
imageName,
|
|
139
|
-
" err:",
|
|
140
|
-
pgs.errmsg
|
|
149
|
+
throw Error(
|
|
150
|
+
`failed to copyimage ${imageName} err: ${pgs.errmsg}`
|
|
141
151
|
)
|
|
142
|
-
break
|
|
143
152
|
}
|
|
144
|
-
|
|
153
|
+
if (!useCI) {
|
|
154
|
+
refreshProgress(layers)
|
|
155
|
+
process.stdout.write("\n")
|
|
156
|
+
_logger.info("uploaded: ", pgs.lzc_image)
|
|
157
|
+
} else {
|
|
158
|
+
// 日志级别为 quiet 时仅输出结果(用于 CI 目的)
|
|
159
|
+
console.log(pgs.lzc_image)
|
|
160
|
+
}
|
|
145
161
|
break
|
|
146
162
|
}
|
|
147
163
|
layers = pgs?.layers
|
|
148
164
|
refreshProgress(layers)
|
|
149
165
|
await sleep(1000)
|
|
150
166
|
} else {
|
|
151
|
-
|
|
152
|
-
break
|
|
167
|
+
throw Error(`error: ${await resp.text()}`)
|
|
153
168
|
}
|
|
154
169
|
}
|
|
155
170
|
} catch (err) {
|
|
156
|
-
|
|
171
|
+
_logger.error(err?.message ?? "unknown exception")
|
|
157
172
|
}
|
|
158
173
|
}
|
|
159
174
|
},
|
package/lib/config/env.js
CHANGED
|
@@ -4,6 +4,8 @@ import { ensureDir } from "../utils.js"
|
|
|
4
4
|
import logger from "loglevel"
|
|
5
5
|
import os from "node:os"
|
|
6
6
|
|
|
7
|
+
const _SYSTEM_ENV_PREFIX = "LZC_CLI_"
|
|
8
|
+
|
|
7
9
|
export const GLOBAL_CONFIG_DIR = path.join(
|
|
8
10
|
os.homedir(),
|
|
9
11
|
"/.config/lazycat/box-config.json"
|
|
@@ -23,6 +25,11 @@ class Env {
|
|
|
23
25
|
}
|
|
24
26
|
|
|
25
27
|
get(key) {
|
|
28
|
+
// 优先通过环境变量获取 (支持 CI/CD)
|
|
29
|
+
const _env_key = `${_SYSTEM_ENV_PREFIX}${(key ?? "").toUpperCase()}`
|
|
30
|
+
if (process.env[_env_key]) {
|
|
31
|
+
return process.env[_env_key]
|
|
32
|
+
}
|
|
26
33
|
return this.allEnv[key]
|
|
27
34
|
}
|
|
28
35
|
|