@chengyu08/ipa-cli 0.1.8 → 0.1.9

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/README.md CHANGED
@@ -236,8 +236,9 @@ cp ./scripts/ipatool.env.example ./scripts/ipatool.env
236
236
  - `compare`:对比两个 IPA 或两个指纹 JSON
237
237
  - `scan`:把目标样本与本地基线库做 Top N 检索
238
238
  - `smoke`:执行 `analyze + scan + Top1 compare` 的端到端冒烟检查
239
- - `screenshots init-config`:生成默认的上架图渲染配置模板
239
+ - `screenshots init-config`:初始化上架图工作区,生成配置、`raw/` 目录和说明文档
240
240
  - `screenshots from-ipa`:从 IPA 中提取候选图片并自动生成上架图
241
+ - `screenshots from-simulator`:从 iOS 模拟器采集一张原始截图
241
242
  - `screenshots check`:校验上架图目录的尺寸、格式、数量和命名
242
243
  - `screenshots render`:根据配置批量渲染上架图
243
244
  - `assets review`:批量扫描当前目录或多个子项目中的静态图片风险
@@ -340,10 +341,10 @@ ipa-cli smoke ./fingerprint.json --library ./data/library --format html
340
341
 
341
342
  ### `screenshots init-config`
342
343
 
343
- 生成默认的上架图渲染配置模板。
344
+ 初始化上架图工作区,并生成默认的上架图渲染配置模板。
344
345
 
345
346
  ```bash
346
- ipa-cli screenshots init-config [file] [--force]
347
+ ipa-cli screenshots init-config [path] [--force]
347
348
  ```
348
349
 
349
350
  示例:
@@ -351,9 +352,36 @@ ipa-cli screenshots init-config [file] [--force]
351
352
  ```bash
352
353
  ipa-cli screenshots init-config
353
354
  ipa-cli screenshots init-config ./configs/appstore.screenshot.config.json --force
355
+ ipa-cli screenshots init-config ./screenshots-workspace
354
356
  ```
355
357
 
356
- 默认会生成 `screenshot.config.json`。完整字段说明见 [docs/上架图命令说明.md](docs/上架图命令说明.md)。
358
+ 默认会同时生成:
359
+
360
+ - `screenshot.config.json`
361
+ - `raw/zh-Hans/`
362
+ - `README.screenshots.md`
363
+
364
+ 如果参数传的是目录,例如 `./screenshots-workspace`,这些文件会生成在该目录下;如果参数传的是 `.json` 文件路径,则会生成在该配置文件所在目录下。完整使用流程和字段说明见 [docs/上架图命令说明.md](docs/上架图命令说明.md)。
365
+
366
+ ### `screenshots from-simulator`
367
+
368
+ 从 iOS 模拟器采集一张原始截图,可选安装并启动 `.app` 后再截图。
369
+
370
+ ```bash
371
+ ipa-cli screenshots from-simulator [app] --output <file> [--device <name>] [--udid <udid>] [--bundle-id <id>] [--wait <ms>] [--overwrite] [--format text|json|panel]
372
+ ```
373
+
374
+ 示例:
375
+
376
+ ```bash
377
+ ipa-cli screenshots from-simulator ./Build/Products/Debug-iphonesimulator/Demo.app \
378
+ --bundle-id com.example.demo \
379
+ --device "iPhone 16 Pro Max" \
380
+ --output ./screenshots-workspace/raw/zh-Hans/01_home.png \
381
+ --format panel
382
+ ```
383
+
384
+ 如果 App 已经安装并且页面已经手工切到位,也可以省略 `[app]` 和 `--bundle-id`,直接截取当前模拟器画面。真机 `.ipa` 不支持这个命令。
357
385
 
358
386
  ### `screenshots check`
359
387
 
@@ -765,6 +793,12 @@ ipa-cli screenshots render ./screenshot.config.json --output ./screenshots --for
765
793
  ipa-cli screenshots check ./screenshots --strict --format panel
766
794
  ```
767
795
 
796
+ 如果你希望把配置、原图和说明集中放到一个目录里,也可以先执行:
797
+
798
+ ```bash
799
+ ipa-cli screenshots init-config ./screenshots-workspace
800
+ ```
801
+
768
802
  ### 场景六:从 IPA 自动生成一版上架图草稿
769
803
 
770
804
  ```bash
@@ -827,6 +861,7 @@ ipa-cli assets manifest --help
827
861
  ipa-cli assets obfuscate --help
828
862
  ipa-cli screenshots --help
829
863
  ipa-cli screenshots init-config --help
864
+ ipa-cli screenshots from-simulator --help
830
865
  ipa-cli screenshots check --help
831
866
  ipa-cli screenshots render --help
832
867
  ipa-cli baseline --help
@@ -862,7 +897,7 @@ ipa-cli scan ./YourApp.ipa --library ./data/library --top 5
862
897
  # 端到端冒烟
863
898
  ipa-cli smoke ./YourApp.ipa --library ./data/library --format text
864
899
 
865
- # 生成默认上架图配置
900
+ # 初始化上架图工作区
866
901
  ipa-cli screenshots init-config
867
902
 
868
903
  # 渲染并校验上架图
package/dist/src/cli.js CHANGED
@@ -14,7 +14,7 @@ const program = new Command();
14
14
  program
15
15
  .name("ipa-cli")
16
16
  .description("检查 IPA 的提审风险信号与相似性指标。")
17
- .version("0.1.8")
17
+ .version("0.1.9")
18
18
  .showHelpAfterError();
19
19
  registerAnalyzeCommand(program);
20
20
  registerAssetsCommand(program);
@@ -1,7 +1,7 @@
1
- import { access, mkdir, writeFile } from "node:fs/promises";
1
+ import { access, mkdir, stat, writeFile } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { loadFingerprintInput } from "./analyze.js";
4
- import { createDefaultScreenshotRenderConfig, DEFAULT_SCREENSHOT_RENDER_CONFIG_FILE } from "../core/screenshots/config-template.js";
4
+ import { createDefaultScreenshotRenderConfig, createScreenshotWorkspaceReadme, DEFAULT_SCREENSHOT_RENDER_CONFIG_FILE, DEFAULT_SCREENSHOT_WORKSPACE_README_FILE } from "../core/screenshots/config-template.js";
5
5
  import { renderScreenshotCheckPanel, renderScreenshotCheckText, renderScreenshotRenderPanel, renderScreenshotRenderText, renderScreenshotSimulatorCapturePanel, renderScreenshotSimulatorCaptureText } from "../core/screenshots/report.js";
6
6
  import { checkScreenshots } from "../core/screenshots/validate.js";
7
7
  import { withProgress } from "../lib/progress.js";
@@ -9,18 +9,31 @@ export function registerScreenshotsCommand(program) {
9
9
  const screenshots = program.command("screenshots").description("校验和生成 App Store 上架图。");
10
10
  screenshots
11
11
  .command("init-config")
12
- .description("生成默认的上架图渲染配置模板。")
13
- .argument("[file]", "输出文件路径", DEFAULT_SCREENSHOT_RENDER_CONFIG_FILE)
14
- .option("--force", "允许覆盖已有配置文件", false)
15
- .action(async (file, options) => {
16
- const outputPath = path.resolve(file);
17
- if (!(options.force ?? false) && (await exists(outputPath))) {
18
- throw new Error(`配置文件已存在: ${outputPath}。如需覆盖,请使用 --force。`);
12
+ .description("初始化上架图工作目录,并生成默认渲染配置模板。")
13
+ .argument("[path]", "初始化目录或输出配置文件路径", DEFAULT_SCREENSHOT_RENDER_CONFIG_FILE)
14
+ .option("--force", "允许覆盖已有配置和说明文件", false)
15
+ .action(async (targetPath, options) => {
16
+ const initPaths = await resolveInitConfigPaths(targetPath);
17
+ const config = createDefaultScreenshotRenderConfig();
18
+ if (!(options.force ?? false)) {
19
+ if (await exists(initPaths.configPath)) {
20
+ throw new Error(`配置文件已存在: ${initPaths.configPath}。如需覆盖,请使用 --force。`);
21
+ }
22
+ if (await exists(initPaths.readmePath)) {
23
+ throw new Error(`说明文件已存在: ${initPaths.readmePath}。如需覆盖,请使用 --force。`);
24
+ }
19
25
  }
20
- const content = JSON.stringify(createDefaultScreenshotRenderConfig(), null, 2);
21
- await mkdir(path.dirname(outputPath), { recursive: true });
22
- await writeFile(outputPath, `${content}\n`, "utf8");
23
- process.stdout.write(`已生成默认渲染配置: ${outputPath}\n`);
26
+ await mkdir(initPaths.rootDir, { recursive: true });
27
+ await Promise.all(config.locales.map((locale) => mkdir(path.join(initPaths.rootDir, "raw", locale), { recursive: true })));
28
+ const content = JSON.stringify(config, null, 2);
29
+ const readme = createScreenshotWorkspaceReadme(initPaths.configPath, config);
30
+ await writeFile(initPaths.configPath, `${content}\n`, "utf8");
31
+ await writeFile(initPaths.readmePath, readme, "utf8");
32
+ process.stdout.write(`已初始化上架图工作区:\n` +
33
+ `- 目录: ${initPaths.rootDir}\n` +
34
+ `- 配置: ${initPaths.configPath}\n` +
35
+ `- 原图目录: ${path.join(initPaths.rootDir, "raw")}\n` +
36
+ `- 说明: ${initPaths.readmePath}\n`);
24
37
  });
25
38
  screenshots
26
39
  .command("from-ipa")
@@ -195,4 +208,25 @@ async function exists(filePath) {
195
208
  return false;
196
209
  }
197
210
  }
211
+ async function resolveInitConfigPaths(targetPath) {
212
+ const resolvedPath = path.resolve(targetPath);
213
+ const stats = await readPathStats(resolvedPath);
214
+ const treatAsDirectory = stats?.isDirectory() || (!stats && path.extname(resolvedPath).toLowerCase() !== ".json");
215
+ const rootDir = treatAsDirectory ? resolvedPath : path.dirname(resolvedPath);
216
+ const configPath = treatAsDirectory ? path.join(resolvedPath, DEFAULT_SCREENSHOT_RENDER_CONFIG_FILE) : resolvedPath;
217
+ const readmePath = path.join(rootDir, DEFAULT_SCREENSHOT_WORKSPACE_README_FILE);
218
+ return {
219
+ rootDir,
220
+ configPath,
221
+ readmePath
222
+ };
223
+ }
224
+ async function readPathStats(filePath) {
225
+ try {
226
+ return await stat(filePath);
227
+ }
228
+ catch {
229
+ return undefined;
230
+ }
231
+ }
198
232
  //# sourceMappingURL=screenshots.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"screenshots.js","sourceRoot":"","sources":["../../../src/commands/screenshots.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screenshots.js","sourceRoot":"","sources":["../../../src/commands/screenshots.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ScreenshotBackground, ScreenshotTargetId } from "../../models/screenshots.js";
2
+ export interface RenderBackgroundOptions {
3
+ background: ScreenshotBackground;
4
+ backgroundPresets: Record<string, ScreenshotBackground>;
5
+ width: number;
6
+ height: number;
7
+ configDir: string;
8
+ rawPath: string;
9
+ locale: string;
10
+ targetId: ScreenshotTargetId;
11
+ frameName: string;
12
+ visitedPresets?: string[];
13
+ }
14
+ export declare function renderBackground(options: RenderBackgroundOptions): Promise<Buffer>;
@@ -0,0 +1,223 @@
1
+ import path from "node:path";
2
+ import sharp from "sharp";
3
+ export async function renderBackground(options) {
4
+ if (options.background.type === "preset") {
5
+ return await renderPresetBackground({
6
+ ...options,
7
+ background: options.background
8
+ });
9
+ }
10
+ if (options.background.type === "stack") {
11
+ return await renderBackgroundStack({
12
+ ...options,
13
+ background: options.background
14
+ });
15
+ }
16
+ return await renderBackgroundLeaf({
17
+ background: options.background,
18
+ width: options.width,
19
+ height: options.height,
20
+ configDir: options.configDir,
21
+ rawPath: options.rawPath,
22
+ locale: options.locale,
23
+ targetId: options.targetId,
24
+ frameName: options.frameName
25
+ });
26
+ }
27
+ async function renderPresetBackground(options) {
28
+ const visitedPresets = options.visitedPresets ?? [];
29
+ if (visitedPresets.includes(options.background.name)) {
30
+ throw new Error(`背景预设循环引用: ${[...visitedPresets, options.background.name].join(" -> ")}`);
31
+ }
32
+ const preset = options.backgroundPresets[options.background.name];
33
+ if (!preset) {
34
+ throw new Error(`未找到背景预设: ${options.background.name}`);
35
+ }
36
+ return await renderBackground({
37
+ ...options,
38
+ background: preset,
39
+ visitedPresets: [...visitedPresets, options.background.name]
40
+ });
41
+ }
42
+ async function renderBackgroundStack(options) {
43
+ let output = await createTransparentCanvas(options.width, options.height);
44
+ for (const layer of options.background.layers) {
45
+ let input;
46
+ if (layer.type === "preset") {
47
+ input = await renderPresetBackground({
48
+ ...options,
49
+ background: layer
50
+ });
51
+ }
52
+ else {
53
+ input = await renderBackgroundLeaf({
54
+ background: layer,
55
+ width: options.width,
56
+ height: options.height,
57
+ configDir: options.configDir,
58
+ rawPath: options.rawPath,
59
+ locale: options.locale,
60
+ targetId: options.targetId,
61
+ frameName: options.frameName
62
+ });
63
+ }
64
+ if (layer.opacity < 1) {
65
+ input = await applyOpacity(input, options.width, options.height, layer.opacity);
66
+ }
67
+ output = await sharp(output)
68
+ .composite([{ input, top: 0, left: 0, blend: layer.blend }])
69
+ .png()
70
+ .toBuffer();
71
+ }
72
+ return output;
73
+ }
74
+ async function renderBackgroundLeaf(options) {
75
+ switch (options.background.type) {
76
+ case "solid":
77
+ return await sharp({
78
+ create: {
79
+ width: options.width,
80
+ height: options.height,
81
+ channels: 4,
82
+ background: options.background.color
83
+ }
84
+ })
85
+ .png()
86
+ .toBuffer();
87
+ case "linear-gradient":
88
+ return await sharp(Buffer.from(buildLinearGradientSvg(options.width, options.height, options.background.angle, options.background.stops)))
89
+ .png()
90
+ .toBuffer();
91
+ case "image":
92
+ return await renderImageBackground({
93
+ sourcePath: path.resolve(options.configDir, resolveBackgroundSourcePath(options.background.src, {
94
+ locale: options.locale,
95
+ targetId: options.targetId,
96
+ frameName: options.frameName
97
+ })),
98
+ width: options.width,
99
+ height: options.height,
100
+ fit: options.background.fit,
101
+ position: options.background.position,
102
+ blur: options.background.blur,
103
+ overlay: options.background.overlay
104
+ });
105
+ case "raw-blur":
106
+ return await renderImageBackground({
107
+ sourcePath: options.rawPath,
108
+ width: options.width,
109
+ height: options.height,
110
+ fit: "cover",
111
+ position: "center",
112
+ blur: options.background.blur,
113
+ overlay: options.background.overlay
114
+ });
115
+ }
116
+ }
117
+ async function createTransparentCanvas(width, height) {
118
+ return await sharp({
119
+ create: {
120
+ width,
121
+ height,
122
+ channels: 4,
123
+ background: { r: 0, g: 0, b: 0, alpha: 0 }
124
+ }
125
+ })
126
+ .png()
127
+ .toBuffer();
128
+ }
129
+ async function applyOpacity(buffer, width, height, opacity) {
130
+ if (opacity >= 1) {
131
+ return buffer;
132
+ }
133
+ return await sharp(buffer)
134
+ .composite([
135
+ {
136
+ input: Buffer.from(buildOpacityMaskSvg(width, height, opacity)),
137
+ blend: "dest-in",
138
+ top: 0,
139
+ left: 0
140
+ }
141
+ ])
142
+ .png()
143
+ .toBuffer();
144
+ }
145
+ async function renderImageBackground(options) {
146
+ let pipeline = sharp(options.sourcePath).resize(options.width, options.height, {
147
+ fit: options.fit,
148
+ position: toSharpPosition(options.position),
149
+ background: "#F5F7FA"
150
+ });
151
+ if (options.blur > 0) {
152
+ pipeline = pipeline.blur(options.blur);
153
+ }
154
+ const base = await pipeline.png().toBuffer();
155
+ if (!options.overlay) {
156
+ return base;
157
+ }
158
+ return await sharp(base)
159
+ .composite([
160
+ {
161
+ input: Buffer.from(buildOverlaySvg(options.width, options.height, options.overlay.color, options.overlay.opacity)),
162
+ top: 0,
163
+ left: 0
164
+ }
165
+ ])
166
+ .png()
167
+ .toBuffer();
168
+ }
169
+ function buildLinearGradientSvg(width, height, angle, stops) {
170
+ const radians = (angle * Math.PI) / 180;
171
+ const dx = Math.sin(radians);
172
+ const dy = -Math.cos(radians);
173
+ const x1 = (0.5 - dx / 2) * 100;
174
+ const y1 = (0.5 - dy / 2) * 100;
175
+ const x2 = (0.5 + dx / 2) * 100;
176
+ const y2 = (0.5 + dy / 2) * 100;
177
+ const stopMarkup = stops
178
+ .map((stop) => `<stop offset="${Math.round(stop.offset * 10000) / 100}%" stop-color="${escapeXml(stop.color)}"/>`)
179
+ .join("");
180
+ return `<svg width="${width}" height="${height}" viewBox="0 0 ${width} ${height}">
181
+ <defs>
182
+ <linearGradient id="background-gradient" x1="${x1}%" y1="${y1}%" x2="${x2}%" y2="${y2}%">
183
+ ${stopMarkup}
184
+ </linearGradient>
185
+ </defs>
186
+ <rect width="${width}" height="${height}" fill="url(#background-gradient)"/>
187
+ </svg>`;
188
+ }
189
+ function buildOverlaySvg(width, height, color, opacity) {
190
+ return `<svg width="${width}" height="${height}" viewBox="0 0 ${width} ${height}">
191
+ <rect width="${width}" height="${height}" fill="${escapeXml(color)}" fill-opacity="${opacity}"/>
192
+ </svg>`;
193
+ }
194
+ function buildOpacityMaskSvg(width, height, opacity) {
195
+ return `<svg width="${width}" height="${height}" viewBox="0 0 ${width} ${height}">
196
+ <rect width="${width}" height="${height}" fill="#fff" fill-opacity="${opacity}"/>
197
+ </svg>`;
198
+ }
199
+ function resolveBackgroundSourcePath(value, options) {
200
+ return value
201
+ .replaceAll("{locale}", options.locale)
202
+ .replaceAll("{target}", options.targetId)
203
+ .replaceAll("{frame}", options.frameName);
204
+ }
205
+ function toSharpPosition(position) {
206
+ if (position === "top") {
207
+ return "north";
208
+ }
209
+ if (position === "bottom") {
210
+ return "south";
211
+ }
212
+ if (position === "left") {
213
+ return "west";
214
+ }
215
+ if (position === "right") {
216
+ return "east";
217
+ }
218
+ return "centre";
219
+ }
220
+ function escapeXml(value) {
221
+ return value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll('"', "&quot;");
222
+ }
223
+ //# sourceMappingURL=background.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background.js","sourceRoot":"","sources":["../../../../src/core/screenshots/background.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
1
  import type { ScreenshotRenderConfig } from "../../models/screenshots.js";
2
2
  export declare const DEFAULT_SCREENSHOT_RENDER_CONFIG_FILE = "screenshot.config.json";
3
+ export declare const DEFAULT_SCREENSHOT_WORKSPACE_README_FILE = "README.screenshots.md";
3
4
  export declare function createDefaultScreenshotRenderConfig(): ScreenshotRenderConfig;
5
+ export declare function createScreenshotWorkspaceReadme(configPath: string, config: ScreenshotRenderConfig): string;