@stag-build/phonebook 0.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/LICENSE +21 -0
- package/README.md +283 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +82 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/doctor.d.ts +33 -0
- package/dist/commands/doctor.js +690 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts +27 -0
- package/dist/commands/init.js +415 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/config.d.ts +33 -0
- package/dist/config.js +21 -0
- package/dist/config.js.map +1 -0
- package/dist/engines/android.d.ts +70 -0
- package/dist/engines/android.js +265 -0
- package/dist/engines/android.js.map +1 -0
- package/dist/engines/git.d.ts +4 -0
- package/dist/engines/git.js +13 -0
- package/dist/engines/git.js.map +1 -0
- package/dist/engines/ios.d.ts +55 -0
- package/dist/engines/ios.js +195 -0
- package/dist/engines/ios.js.map +1 -0
- package/dist/errors.d.ts +12 -0
- package/dist/errors.js +69 -0
- package/dist/errors.js.map +1 -0
- package/dist/gradle/catalog.d.ts +110 -0
- package/dist/gradle/catalog.js +413 -0
- package/dist/gradle/catalog.js.map +1 -0
- package/dist/ios/snapshotTestClass.d.ts +59 -0
- package/dist/ios/snapshotTestClass.js +195 -0
- package/dist/ios/snapshotTestClass.js.map +1 -0
- package/dist/manifest.d.ts +32 -0
- package/dist/manifest.js +23 -0
- package/dist/manifest.js.map +1 -0
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.js +226 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/naming.d.ts +18 -0
- package/dist/naming.js +34 -0
- package/dist/naming.js.map +1 -0
- package/dist/scan/android.d.ts +7 -0
- package/dist/scan/android.js +222 -0
- package/dist/scan/android.js.map +1 -0
- package/dist/scan/hints.d.ts +25 -0
- package/dist/scan/hints.js +338 -0
- package/dist/scan/hints.js.map +1 -0
- package/dist/scan/ios.d.ts +7 -0
- package/dist/scan/ios.js +201 -0
- package/dist/scan/ios.js.map +1 -0
- package/dist/scan/types.d.ts +52 -0
- package/dist/scan/types.js +7 -0
- package/dist/scan/types.js.map +1 -0
- package/dist/site/build.d.ts +17 -0
- package/dist/site/build.js +0 -0
- package/dist/site/build.js.map +1 -0
- package/dist/versions.d.ts +71 -0
- package/dist/versions.js +334 -0
- package/dist/versions.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detects an Android module's application package, trying (in order):
|
|
3
|
+
* `namespace = "..."` in its build.gradle(.kts), `applicationId = "..."` in
|
|
4
|
+
* the same file, the `package="..."` attribute in its AndroidManifest.xml,
|
|
5
|
+
* and finally the directory structure under src/main/java or src/main/kotlin.
|
|
6
|
+
*/
|
|
7
|
+
export declare function detectAndroidPackage(projectDir: string, module: string): Promise<string | undefined>;
|
|
8
|
+
export declare function runInit(dir: string, options?: {
|
|
9
|
+
writeSnapshotClass?: boolean;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* The ONE exception to `init` never editing your project: writes the missing
|
|
13
|
+
* SnapshotTest subclass to disk when — and only when — it's provably safe to
|
|
14
|
+
* do so without touching project.pbxproj: SnapshotPreviews is wired in, the
|
|
15
|
+
* linking target is identified, that target's source folder is a Xcode
|
|
16
|
+
* filesystem-synchronized group (so a new file there is picked up
|
|
17
|
+
* automatically), and no subclass already exists. Refuses with a clear
|
|
18
|
+
* reason in every other case. Explicit opt-in via `--write-snapshot-class`;
|
|
19
|
+
* default `init` behavior is unaffected.
|
|
20
|
+
*/
|
|
21
|
+
export declare function tryWriteSnapshotClass(projectDir: string): Promise<{
|
|
22
|
+
ok: boolean;
|
|
23
|
+
message: string;
|
|
24
|
+
path?: string;
|
|
25
|
+
}>;
|
|
26
|
+
/** The SnapshotTest subclass snippet printed by `init` and reused by `doctor`'s snapshot-test-class check. */
|
|
27
|
+
export declare const IOS_SNAPSHOT_TEST_CLASS_SNIPPET = " import SnapshottingTests\n\n class Snapshots: SnapshotTest {\n override class func snapshotPreviews() -> [String]? { nil }\n }";
|
|
@@ -0,0 +1,415 @@
|
|
|
1
|
+
import { access, mkdir, readdir, readFile, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { basename, extname, join, resolve } from 'node:path';
|
|
3
|
+
import { loadConfig } from '../config.js';
|
|
4
|
+
import { detectKotlinVersion, resolveMaxCompatible } from '../versions.js';
|
|
5
|
+
import { accessorFor, loadVersionCatalog, pluginAccessorFor } from '../gradle/catalog.js';
|
|
6
|
+
import { findSnapshotTestClassLocation, findSnapshotTestSubclass, readPbxprojText, } from '../ios/snapshotTestClass.js';
|
|
7
|
+
const ROBORAZZI_GROUP = 'io.github.takahirom.roborazzi';
|
|
8
|
+
const ROBORAZZI_ARTIFACT = 'roborazzi';
|
|
9
|
+
const CPS_GROUP = 'io.github.sergio-sastre.ComposablePreviewScanner';
|
|
10
|
+
const CPS_ARTIFACT = 'android';
|
|
11
|
+
const DEFAULT_ROBORAZZI_VERSION = '1.72.0';
|
|
12
|
+
const DEFAULT_CPS_VERSION = '0.9.3';
|
|
13
|
+
async function exists(path) {
|
|
14
|
+
try {
|
|
15
|
+
await access(path);
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async function readTextOrUndefined(path) {
|
|
23
|
+
try {
|
|
24
|
+
return await readFile(path, 'utf8');
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/** Reads a module's own build.gradle(.kts) files (not the root project's), concatenated. */
|
|
31
|
+
async function readModuleGradleTexts(moduleDir) {
|
|
32
|
+
const texts = [];
|
|
33
|
+
for (const name of ['build.gradle.kts', 'build.gradle']) {
|
|
34
|
+
const text = await readTextOrUndefined(join(moduleDir, name));
|
|
35
|
+
if (text !== undefined)
|
|
36
|
+
texts.push(text);
|
|
37
|
+
}
|
|
38
|
+
return texts.join('\n');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Walks down single-child directories from `base` until reaching the first
|
|
42
|
+
* level that contains .kt/.java files or branches into more than one
|
|
43
|
+
* subdirectory, returning the dotted path walked as a package name. Returns
|
|
44
|
+
* undefined if `base` doesn't exist or no package-like structure is found.
|
|
45
|
+
*/
|
|
46
|
+
async function detectPackageFromDirTree(base) {
|
|
47
|
+
const segments = [];
|
|
48
|
+
let current = base;
|
|
49
|
+
for (;;) {
|
|
50
|
+
let entries;
|
|
51
|
+
try {
|
|
52
|
+
entries = await readdir(current, { withFileTypes: true });
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
const dirs = entries.filter((e) => e.isDirectory());
|
|
58
|
+
const hasSources = entries.some((e) => e.isFile() && (e.name.endsWith('.kt') || e.name.endsWith('.java')));
|
|
59
|
+
if (hasSources || dirs.length !== 1) {
|
|
60
|
+
return segments.length > 0 ? segments.join('.') : undefined;
|
|
61
|
+
}
|
|
62
|
+
segments.push(dirs[0].name);
|
|
63
|
+
current = join(current, dirs[0].name);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Detects an Android module's application package, trying (in order):
|
|
68
|
+
* `namespace = "..."` in its build.gradle(.kts), `applicationId = "..."` in
|
|
69
|
+
* the same file, the `package="..."` attribute in its AndroidManifest.xml,
|
|
70
|
+
* and finally the directory structure under src/main/java or src/main/kotlin.
|
|
71
|
+
*/
|
|
72
|
+
export async function detectAndroidPackage(projectDir, module) {
|
|
73
|
+
const moduleDir = join(projectDir, ...module.split(':').filter(Boolean));
|
|
74
|
+
const gradleText = await readModuleGradleTexts(moduleDir);
|
|
75
|
+
const namespaceMatch = gradleText.match(/\bnamespace\s*=?\s*['"]([^'"]+)['"]/);
|
|
76
|
+
if (namespaceMatch)
|
|
77
|
+
return namespaceMatch[1];
|
|
78
|
+
const applicationIdMatch = gradleText.match(/\bapplicationId\s*=?\s*['"]([^'"]+)['"]/);
|
|
79
|
+
if (applicationIdMatch)
|
|
80
|
+
return applicationIdMatch[1];
|
|
81
|
+
const manifestText = await readTextOrUndefined(join(moduleDir, 'src', 'main', 'AndroidManifest.xml'));
|
|
82
|
+
if (manifestText) {
|
|
83
|
+
const packageMatch = manifestText.match(/\bpackage\s*=\s*"([^"]+)"/);
|
|
84
|
+
if (packageMatch)
|
|
85
|
+
return packageMatch[1];
|
|
86
|
+
}
|
|
87
|
+
for (const srcRoot of ['java', 'kotlin']) {
|
|
88
|
+
const pkg = await detectPackageFromDirTree(join(moduleDir, 'src', 'main', srcRoot));
|
|
89
|
+
if (pkg)
|
|
90
|
+
return pkg;
|
|
91
|
+
}
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
/** Detects the platform of a project directory from marker files. */
|
|
95
|
+
async function detectPlatform(projectDir) {
|
|
96
|
+
const entries = await readdir(projectDir);
|
|
97
|
+
const hasAndroid = entries.includes('settings.gradle') || entries.includes('settings.gradle.kts');
|
|
98
|
+
const xcworkspace = entries.find((e) => extname(e) === '.xcworkspace');
|
|
99
|
+
const xcodeproj = entries.find((e) => extname(e) === '.xcodeproj');
|
|
100
|
+
const hasIos = Boolean(xcworkspace || xcodeproj);
|
|
101
|
+
if (hasAndroid && hasIos) {
|
|
102
|
+
throw new Error('Detected both an Android (settings.gradle) and an iOS (.xcodeproj/.xcworkspace) project ' +
|
|
103
|
+
'in this directory. Run `phonebook init` from a single-platform repo, or write ' +
|
|
104
|
+
'phonebook.config.json by hand.');
|
|
105
|
+
}
|
|
106
|
+
if (hasAndroid)
|
|
107
|
+
return { platform: 'android' };
|
|
108
|
+
if (hasIos)
|
|
109
|
+
return { platform: 'ios', project: xcodeproj, workspace: xcworkspace };
|
|
110
|
+
return { platform: undefined };
|
|
111
|
+
}
|
|
112
|
+
export async function runInit(dir, options = {}) {
|
|
113
|
+
const projectDir = resolve(dir);
|
|
114
|
+
const configPath = resolve(projectDir, 'phonebook.config.json');
|
|
115
|
+
const alreadyExists = await exists(configPath);
|
|
116
|
+
const detected = await detectPlatform(projectDir);
|
|
117
|
+
if (!detected.platform) {
|
|
118
|
+
throw new Error(`Could not detect a platform in ${projectDir}: no settings.gradle(.kts), .xcodeproj, or ` +
|
|
119
|
+
'.xcworkspace found.');
|
|
120
|
+
}
|
|
121
|
+
if (alreadyExists) {
|
|
122
|
+
console.log(`${configPath} already exists; leaving it untouched.`);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
const appName = basename(projectDir);
|
|
126
|
+
let config;
|
|
127
|
+
if (detected.platform === 'android') {
|
|
128
|
+
config = {
|
|
129
|
+
appName,
|
|
130
|
+
platform: 'android',
|
|
131
|
+
android: { modules: [':app'], variant: 'debug' },
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
const projectName = basename((detected.workspace ?? detected.project), extname((detected.workspace ?? detected.project)));
|
|
136
|
+
config = {
|
|
137
|
+
appName,
|
|
138
|
+
platform: 'ios',
|
|
139
|
+
ios: {
|
|
140
|
+
...(detected.workspace ? { workspace: detected.workspace } : { project: detected.project }),
|
|
141
|
+
scheme: projectName,
|
|
142
|
+
simulator: 'iPhone 17 Pro',
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
await writeFile(configPath, JSON.stringify(config, null, 2) + '\n');
|
|
147
|
+
console.log(`Wrote ${configPath}`);
|
|
148
|
+
}
|
|
149
|
+
if (detected.platform === 'android') {
|
|
150
|
+
let modules = [':app'];
|
|
151
|
+
try {
|
|
152
|
+
const loaded = await loadConfig(projectDir);
|
|
153
|
+
if (loaded.config.platform === 'android')
|
|
154
|
+
modules = loaded.config.android?.modules ?? [':app'];
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
// Config unreadable/invalid; fall back to the default module.
|
|
158
|
+
}
|
|
159
|
+
await printAndroidInstructions(projectDir, modules);
|
|
160
|
+
if (options.writeSnapshotClass) {
|
|
161
|
+
console.log('\n--write-snapshot-class only applies to iOS projects; nothing was written.');
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
printIosInstructions();
|
|
166
|
+
if (options.writeSnapshotClass) {
|
|
167
|
+
console.log('');
|
|
168
|
+
const result = await tryWriteSnapshotClass(projectDir);
|
|
169
|
+
console.log(result.message);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* The ONE exception to `init` never editing your project: writes the missing
|
|
175
|
+
* SnapshotTest subclass to disk when — and only when — it's provably safe to
|
|
176
|
+
* do so without touching project.pbxproj: SnapshotPreviews is wired in, the
|
|
177
|
+
* linking target is identified, that target's source folder is a Xcode
|
|
178
|
+
* filesystem-synchronized group (so a new file there is picked up
|
|
179
|
+
* automatically), and no subclass already exists. Refuses with a clear
|
|
180
|
+
* reason in every other case. Explicit opt-in via `--write-snapshot-class`;
|
|
181
|
+
* default `init` behavior is unaffected.
|
|
182
|
+
*/
|
|
183
|
+
export async function tryWriteSnapshotClass(projectDir) {
|
|
184
|
+
let config;
|
|
185
|
+
try {
|
|
186
|
+
const loaded = await loadConfig(projectDir);
|
|
187
|
+
config = loaded.config;
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
return { ok: false, message: `--write-snapshot-class: ${err.message}` };
|
|
191
|
+
}
|
|
192
|
+
if (config.platform !== 'ios') {
|
|
193
|
+
return { ok: false, message: '--write-snapshot-class only applies to iOS projects; nothing was written.' };
|
|
194
|
+
}
|
|
195
|
+
const ios = config.ios;
|
|
196
|
+
if (!ios?.scheme || (!ios.project && !ios.workspace)) {
|
|
197
|
+
return {
|
|
198
|
+
ok: false,
|
|
199
|
+
message: '--write-snapshot-class: phonebook.config.json: ios.scheme and ios.project/workspace are required; ' +
|
|
200
|
+
'nothing was written.',
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
const projectPath = ios.project ? resolve(projectDir, ios.project) : undefined;
|
|
204
|
+
const pbxprojText = await readPbxprojText(projectDir, projectPath);
|
|
205
|
+
if (!pbxprojText.includes('SnapshotPreviews') && !pbxprojText.includes('SnapshottingTests')) {
|
|
206
|
+
return {
|
|
207
|
+
ok: false,
|
|
208
|
+
message: '--write-snapshot-class: SnapshotPreviews / SnapshottingTests is not wired into the project yet — see ' +
|
|
209
|
+
'the setup steps above first; nothing was written.',
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
const existing = await findSnapshotTestSubclass(projectDir);
|
|
213
|
+
if (existing) {
|
|
214
|
+
return {
|
|
215
|
+
ok: false,
|
|
216
|
+
message: `--write-snapshot-class: a SnapshotTest subclass already exists (${existing.className} at ` +
|
|
217
|
+
`${existing.relativePath}); nothing was written.`,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
const location = findSnapshotTestClassLocation(pbxprojText);
|
|
221
|
+
if (!location) {
|
|
222
|
+
return {
|
|
223
|
+
ok: false,
|
|
224
|
+
message: '--write-snapshot-class: could not identify the target that links SnapshottingTests in the .pbxproj; ' +
|
|
225
|
+
'add the SnapshotTest subclass manually (see the setup steps above). Nothing was written.',
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
if (!location.synchronizedFolder) {
|
|
229
|
+
return {
|
|
230
|
+
ok: false,
|
|
231
|
+
message: `--write-snapshot-class: the "${location.targetName}" target does not use Xcode's synchronized groups, ` +
|
|
232
|
+
'so writing the file would require editing project.pbxproj — which this flag will not do. Create the ' +
|
|
233
|
+
`file and add it to the ${location.targetName} target in Xcode (File > Add Files, check the ` +
|
|
234
|
+
`${location.targetName} box). Nothing was written.`,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
const targetDir = resolve(projectDir, location.synchronizedFolder);
|
|
238
|
+
const filePath = join(targetDir, 'PhonebookSnapshots.swift');
|
|
239
|
+
const contents = IOS_SNAPSHOT_TEST_CLASS_SNIPPET.split('\n')
|
|
240
|
+
.map((line) => line.replace(/^ {5}/, ''))
|
|
241
|
+
.join('\n') + '\n';
|
|
242
|
+
await mkdir(targetDir, { recursive: true });
|
|
243
|
+
await writeFile(filePath, contents);
|
|
244
|
+
return {
|
|
245
|
+
ok: true,
|
|
246
|
+
path: filePath,
|
|
247
|
+
message: `Wrote ${filePath}.\nSafe because the "${location.targetName}" target uses a filesystem-synchronized ` +
|
|
248
|
+
`group (${location.synchronizedFolder}/): Xcode picks up new files under it automatically, so no ` +
|
|
249
|
+
'project.pbxproj edit was needed or made.',
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
async function printAndroidInstructions(projectDir, modules) {
|
|
253
|
+
const detected = await detectKotlinVersion(projectDir);
|
|
254
|
+
let roborazziVersion = DEFAULT_ROBORAZZI_VERSION;
|
|
255
|
+
let cpsVersion = DEFAULT_CPS_VERSION;
|
|
256
|
+
let note;
|
|
257
|
+
if (detected) {
|
|
258
|
+
const [roborazzi, cps] = await Promise.all([
|
|
259
|
+
resolveMaxCompatible(ROBORAZZI_GROUP, ROBORAZZI_ARTIFACT, detected.version),
|
|
260
|
+
resolveMaxCompatible(CPS_GROUP, CPS_ARTIFACT, detected.version),
|
|
261
|
+
]);
|
|
262
|
+
if (roborazzi.best)
|
|
263
|
+
roborazziVersion = roborazzi.best;
|
|
264
|
+
if (cps.best)
|
|
265
|
+
cpsVersion = cps.best;
|
|
266
|
+
const kotlinLabel = `${detected.version.major}.${detected.version.minor}.${detected.version.patch}`;
|
|
267
|
+
if (roborazzi.best && roborazzi.latest && roborazzi.best !== roborazzi.latest) {
|
|
268
|
+
note =
|
|
269
|
+
`note: Roborazzi ${roborazzi.latest} is available but requires Kotlin >= ${roborazzi.latestNeedsKotlin}; ` +
|
|
270
|
+
`your project uses ${kotlinLabel} (${detected.source}). Using ${roborazzi.best}. Upgrade Kotlin to use the latest.`;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
note = `note: could not detect this project's Kotlin version; using Roborazzi ${DEFAULT_ROBORAZZI_VERSION} / ` +
|
|
275
|
+
`ComposablePreviewScanner ${DEFAULT_CPS_VERSION}. Verify these are compatible with your Kotlin version, or ` +
|
|
276
|
+
'run `phonebook doctor` after wiring things up.';
|
|
277
|
+
}
|
|
278
|
+
const moduleBlocks = await Promise.all(modules.map(async (module) => {
|
|
279
|
+
const pkg = await detectAndroidPackage(projectDir, module);
|
|
280
|
+
return pkg
|
|
281
|
+
? { module, packagesLine: `packages = listOf("${pkg}")`, warning: undefined }
|
|
282
|
+
: {
|
|
283
|
+
module,
|
|
284
|
+
packagesLine: 'packages = listOf("REPLACE_ME.your.app.package")',
|
|
285
|
+
warning: `could not detect the package for ${module} — replace REPLACE_ME... before running generate`,
|
|
286
|
+
};
|
|
287
|
+
}));
|
|
288
|
+
const step2 = moduleBlocks
|
|
289
|
+
.map(({ module, packagesLine, warning }) => `
|
|
290
|
+
2. In ${module}'s build.gradle.kts, apply the plugin and add:
|
|
291
|
+
|
|
292
|
+
plugins {
|
|
293
|
+
id("io.github.takahirom.roborazzi")
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
dependencies {
|
|
297
|
+
testImplementation("io.github.takahirom.roborazzi:roborazzi:${roborazziVersion}")
|
|
298
|
+
testImplementation("io.github.takahirom.roborazzi:roborazzi-compose:${roborazziVersion}")
|
|
299
|
+
testImplementation("io.github.takahirom.roborazzi:roborazzi-compose-preview-scanner-support:${roborazziVersion}")
|
|
300
|
+
testImplementation("io.github.sergio-sastre.ComposablePreviewScanner:android:${cpsVersion}")
|
|
301
|
+
testImplementation("org.robolectric:robolectric:4.14.1")
|
|
302
|
+
// version from your Compose BOM, or pin one
|
|
303
|
+
testImplementation("androidx.compose.ui:ui-test-junit4")
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
@OptIn(ExperimentalRoborazziApi::class)
|
|
307
|
+
roborazzi {
|
|
308
|
+
generateComposePreviewRobolectricTests {
|
|
309
|
+
enable = true
|
|
310
|
+
${packagesLine}
|
|
311
|
+
includePrivatePreviews = true
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
android {
|
|
316
|
+
testOptions {
|
|
317
|
+
unitTests {
|
|
318
|
+
isIncludeAndroidResources = true
|
|
319
|
+
all {
|
|
320
|
+
it.systemProperties["robolectric.pixelCopyRenderMode"] = "hardware"
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
${warning ? `\n note: ${warning}\n` : ''}`)
|
|
326
|
+
.join('\n');
|
|
327
|
+
console.log(`
|
|
328
|
+
Next steps to wire up Roborazzi preview recording:
|
|
329
|
+
|
|
330
|
+
1. In the root build.gradle.kts, add the Roborazzi plugin:
|
|
331
|
+
|
|
332
|
+
plugins {
|
|
333
|
+
id("io.github.takahirom.roborazzi") version "${roborazziVersion}" apply false
|
|
334
|
+
}
|
|
335
|
+
${step2}
|
|
336
|
+
3. Run \`phonebook doctor\` to verify the setup.
|
|
337
|
+
${note ? `\n${note}\n` : ''}`);
|
|
338
|
+
const catalogs = await loadVersionCatalog(projectDir);
|
|
339
|
+
if (catalogs.size > 0) {
|
|
340
|
+
const prefix = catalogs.has('libs') ? 'libs' : [...catalogs.keys()][0];
|
|
341
|
+
console.log(catalogInstructions(prefix, roborazziVersion, cpsVersion));
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
/** Builds the version-catalog variant of the setup instructions, for projects that already use one. */
|
|
345
|
+
function catalogInstructions(prefix, roborazziVersion, cpsVersion) {
|
|
346
|
+
const roborazziAlias = 'roborazzi';
|
|
347
|
+
const roborazziComposeAlias = 'roborazzi-compose';
|
|
348
|
+
const roborazziScannerAlias = 'roborazzi-compose-preview-scanner-support';
|
|
349
|
+
const cpsAlias = 'composable-preview-scanner';
|
|
350
|
+
const robolectricAlias = 'robolectric';
|
|
351
|
+
const uiTestJunit4Alias = 'androidx-compose-ui-test-junit4';
|
|
352
|
+
const pluginAlias = 'roborazzi';
|
|
353
|
+
return `
|
|
354
|
+
This project uses a Gradle version catalog ("${prefix}"). Equivalent additions using catalog accessors:
|
|
355
|
+
|
|
356
|
+
1. In gradle/${prefix === 'libs' ? 'libs' : prefix}.versions.toml:
|
|
357
|
+
|
|
358
|
+
[versions]
|
|
359
|
+
roborazzi = "${roborazziVersion}"
|
|
360
|
+
composablePreviewScanner = "${cpsVersion}"
|
|
361
|
+
|
|
362
|
+
[libraries]
|
|
363
|
+
${roborazziAlias} = { module = "io.github.takahirom.roborazzi:roborazzi", version.ref = "roborazzi" }
|
|
364
|
+
${roborazziComposeAlias} = { module = "io.github.takahirom.roborazzi:roborazzi-compose", version.ref = "roborazzi" }
|
|
365
|
+
${roborazziScannerAlias} = { module = "io.github.takahirom.roborazzi:roborazzi-compose-preview-scanner-support", version.ref = "roborazzi" }
|
|
366
|
+
${cpsAlias} = { module = "io.github.sergio-sastre.ComposablePreviewScanner:android", version.ref = "composablePreviewScanner" }
|
|
367
|
+
${robolectricAlias} = { module = "org.robolectric:robolectric", version = "4.14.1" }
|
|
368
|
+
${uiTestJunit4Alias} = { group = "androidx.compose.ui", name = "ui-test-junit4" }
|
|
369
|
+
|
|
370
|
+
[plugins]
|
|
371
|
+
${pluginAlias} = { id = "io.github.takahirom.roborazzi", version.ref = "roborazzi" }
|
|
372
|
+
|
|
373
|
+
2. In each recorded module's build.gradle.kts, apply the plugin and add:
|
|
374
|
+
|
|
375
|
+
plugins {
|
|
376
|
+
alias(${pluginAccessorFor(pluginAlias, prefix)})
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
dependencies {
|
|
380
|
+
testImplementation(${accessorFor(roborazziAlias, prefix)})
|
|
381
|
+
testImplementation(${accessorFor(roborazziComposeAlias, prefix)})
|
|
382
|
+
testImplementation(${accessorFor(roborazziScannerAlias, prefix)})
|
|
383
|
+
testImplementation(${accessorFor(cpsAlias, prefix)})
|
|
384
|
+
testImplementation(${accessorFor(robolectricAlias, prefix)})
|
|
385
|
+
// version from your Compose BOM, or pin one in the catalog
|
|
386
|
+
testImplementation(${accessorFor(uiTestJunit4Alias, prefix)})
|
|
387
|
+
}
|
|
388
|
+
`;
|
|
389
|
+
}
|
|
390
|
+
/** The SnapshotTest subclass snippet printed by `init` and reused by `doctor`'s snapshot-test-class check. */
|
|
391
|
+
export const IOS_SNAPSHOT_TEST_CLASS_SNIPPET = ` import SnapshottingTests
|
|
392
|
+
|
|
393
|
+
class Snapshots: SnapshotTest {
|
|
394
|
+
override class func snapshotPreviews() -> [String]? { nil }
|
|
395
|
+
}`;
|
|
396
|
+
function printIosInstructions() {
|
|
397
|
+
console.log(`
|
|
398
|
+
Next steps to wire up SnapshotPreviews recording:
|
|
399
|
+
|
|
400
|
+
1. Add the Swift package https://github.com/getsentry/SnapshotPreviews to the project.
|
|
401
|
+
|
|
402
|
+
2. Link the SnapshottingTests product into a unit-test target that is hosted in the app
|
|
403
|
+
(set TEST_HOST / BUNDLE_LOADER to the app target).
|
|
404
|
+
|
|
405
|
+
3. Add one test class to that target:
|
|
406
|
+
|
|
407
|
+
${IOS_SNAPSHOT_TEST_CLASS_SNIPPET}
|
|
408
|
+
|
|
409
|
+
4. Recommend applying \`.sizeThatFitsLayout\` traits on component-sized previews so they
|
|
410
|
+
snapshot at their natural size rather than full-screen.
|
|
411
|
+
|
|
412
|
+
5. Run \`phonebook doctor\` to verify the setup.
|
|
413
|
+
`);
|
|
414
|
+
}
|
|
415
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Platform } from './manifest.js';
|
|
2
|
+
export interface PhonebookConfig {
|
|
3
|
+
/** App display name shown in the gallery header */
|
|
4
|
+
appName: string;
|
|
5
|
+
platform: Platform;
|
|
6
|
+
/** Bundle output directory, relative to the config file. Default: "phonebook-out" */
|
|
7
|
+
output?: string;
|
|
8
|
+
android?: {
|
|
9
|
+
/** Gradle modules to record, e.g. [":app"]. Default: [":app"] */
|
|
10
|
+
modules?: string[];
|
|
11
|
+
/** Gradle build variant used for recording. Default: "debug" */
|
|
12
|
+
variant?: string;
|
|
13
|
+
};
|
|
14
|
+
ios?: {
|
|
15
|
+
/** Xcode project (.xcodeproj) or workspace path, relative to the config file. */
|
|
16
|
+
project?: string;
|
|
17
|
+
workspace?: string;
|
|
18
|
+
/** Scheme containing the SnapshotPreviews test target. Required for iOS. */
|
|
19
|
+
scheme?: string;
|
|
20
|
+
/** Simulator destination name. Default: "iPhone 17 Pro" */
|
|
21
|
+
simulator?: string;
|
|
22
|
+
/**
|
|
23
|
+
* -only-testing target[/class] passed to xcodebuild, so generate runs just
|
|
24
|
+
* the snapshot tests instead of the whole suite. Auto-detected from the
|
|
25
|
+
* SnapshotTest subclass when omitted; set to "" to force the full suite.
|
|
26
|
+
*/
|
|
27
|
+
onlyTesting?: string;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export declare function loadConfig(dir: string): Promise<{
|
|
31
|
+
config: PhonebookConfig;
|
|
32
|
+
projectDir: string;
|
|
33
|
+
}>;
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
export async function loadConfig(dir) {
|
|
4
|
+
const projectDir = resolve(dir);
|
|
5
|
+
const path = resolve(projectDir, 'phonebook.config.json');
|
|
6
|
+
let raw;
|
|
7
|
+
try {
|
|
8
|
+
raw = await readFile(path, 'utf8');
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
throw new Error(`No phonebook.config.json found in ${projectDir}`);
|
|
12
|
+
}
|
|
13
|
+
const config = JSON.parse(raw);
|
|
14
|
+
if (!config.appName)
|
|
15
|
+
throw new Error('phonebook.config.json: "appName" is required');
|
|
16
|
+
if (config.platform !== 'android' && config.platform !== 'ios') {
|
|
17
|
+
throw new Error('phonebook.config.json: "platform" must be "android" or "ios"');
|
|
18
|
+
}
|
|
19
|
+
return { config, projectDir };
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW;IAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;IAC1D,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,qCAAqC,UAAU,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACrF,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { PhonebookConfig } from '../config.js';
|
|
2
|
+
import { type Manifest } from '../manifest.js';
|
|
3
|
+
export declare const EMPTY_PREVIEWS_MESSAGE: string;
|
|
4
|
+
/**
|
|
5
|
+
* Guards against `generate` silently succeeding with zero recorded previews.
|
|
6
|
+
* Throws unless `allowEmpty` is set (the `--allow-empty` CLI flag), in which
|
|
7
|
+
* case the caller downgrades this to a warning and still writes the manifest.
|
|
8
|
+
* Pure/exported so it can be unit-tested without spawning Gradle.
|
|
9
|
+
*/
|
|
10
|
+
export declare function checkEmptyEntries(entryCount: number, allowEmpty: boolean): void;
|
|
11
|
+
/**
|
|
12
|
+
* Runs Roborazzi (with ComposablePreviewScanner-generated tests) via Gradle and
|
|
13
|
+
* harvests the recorded PNGs into a Phonebook bundle.
|
|
14
|
+
*/
|
|
15
|
+
export declare function generateAndroid(config: PhonebookConfig, projectDir: string, outputDir: string, options?: {
|
|
16
|
+
quiet?: boolean;
|
|
17
|
+
allowEmpty?: boolean;
|
|
18
|
+
}): Promise<Manifest>;
|
|
19
|
+
interface RoborazziImageMeta {
|
|
20
|
+
fqn: string;
|
|
21
|
+
functionName: string;
|
|
22
|
+
displayName?: string;
|
|
23
|
+
theme?: 'light' | 'dark';
|
|
24
|
+
/** Derived from the package + file-class segments, e.g. "dev/stag/sample/PrimaryButton.kt" */
|
|
25
|
+
sourceFile?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Machine-generated markers Roborazzi appends for @Preview attributes
|
|
28
|
+
* (e.g. "WITH_BACKGROUND" for showBackground = true) that are not a
|
|
29
|
+
* user-chosen display name. See parseRoborazziFileName for classification.
|
|
30
|
+
*/
|
|
31
|
+
tags?: string[];
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Roborazzi + ComposablePreviewScanner names recorded images
|
|
35
|
+
* `<package>.<FileKt>.<PreviewFunction>[.<preview display name>].png`, where a
|
|
36
|
+
* display name containing "/" becomes real subdirectories on disk (verified
|
|
37
|
+
* against Roborazzi 1.72.0):
|
|
38
|
+
* dev.stag.sample.PrimaryButtonKt.PrimaryButtonEnabledPreview.Button/Enabled.png
|
|
39
|
+
* dev.stag.sample.UserCardKt.UserCardPreview.png
|
|
40
|
+
* dev.stag.sample.UserCardKt.UserCardDarkPreview.NIGHT.png (uiMode night)
|
|
41
|
+
*
|
|
42
|
+
* Roborazzi also appends machine-generated ALL-CAPS markers derived from
|
|
43
|
+
* `@Preview` attributes (verified against a real app whose previews are all
|
|
44
|
+
* `@Preview(showBackground = true)`, with no explicit name):
|
|
45
|
+
* com.om.spotifyuiapp...HomeContentKt.HomeContent.WITH_BACKGROUND.png
|
|
46
|
+
* These are not a user-chosen display name and must not become the state;
|
|
47
|
+
* they are collected into `tags` instead. NIGHT/NOTNIGHT (uiMode) become
|
|
48
|
+
* `theme` rather than a tag, as before.
|
|
49
|
+
*
|
|
50
|
+
* `file` is the png path relative to the roborazzi output dir ("/"-separated).
|
|
51
|
+
*/
|
|
52
|
+
export declare function parseRoborazziFileName(file: string): RoborazziImageMeta;
|
|
53
|
+
/**
|
|
54
|
+
* Runs Gradle. When `quiet` is false (the CLI default), output streams
|
|
55
|
+
* straight through to this process's stdout/stderr as it arrives (so a human
|
|
56
|
+
* can watch the build) while a rolling tail is kept alongside it for error
|
|
57
|
+
* translation. When `quiet` is true (used by the MCP server, whose stdout is
|
|
58
|
+
* the JSON-RPC channel and must never carry build output), only the tail is
|
|
59
|
+
* kept and nothing is echoed live; the tail is written to stderr once if the
|
|
60
|
+
* build fails, unless `dumpTailOnFailure` is set to false.
|
|
61
|
+
*
|
|
62
|
+
* `onOutput`, when provided, is called once on exit (success or failure) with
|
|
63
|
+
* the full, untruncated captured output — useful for callers that want to
|
|
64
|
+
* write a complete log file rather than relying on the 200-line tail.
|
|
65
|
+
*/
|
|
66
|
+
export declare function runGradle(projectDir: string, tasks: string[], quiet: boolean, options?: {
|
|
67
|
+
dumpTailOnFailure?: boolean;
|
|
68
|
+
onOutput?: (output: string) => void;
|
|
69
|
+
}): Promise<void>;
|
|
70
|
+
export {};
|