rock 0.3.1 → 0.8.13
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 +51 -196
- package/dist/src/bin.d.ts +2 -0
- package/dist/src/bin.d.ts.map +1 -0
- package/dist/src/bin.js +7 -0
- package/dist/src/bin.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/adHocTemplates.d.ts +13 -0
- package/dist/src/lib/adHocTemplates.js +366 -0
- package/dist/src/lib/adHocTemplates.js.map +1 -0
- package/dist/src/lib/checkDeprecatedOptions.d.ts +1 -0
- package/dist/src/lib/checkDeprecatedOptions.d.ts.map +1 -0
- package/dist/src/lib/checkDeprecatedOptions.js +60 -0
- package/dist/src/lib/checkDeprecatedOptions.js.map +1 -0
- package/dist/src/lib/cli.d.ts +6 -0
- package/dist/src/lib/cli.d.ts.map +1 -0
- package/dist/src/lib/cli.js +101 -0
- package/dist/src/lib/cli.js.map +1 -0
- package/dist/src/lib/plugins/clean.d.ts +2 -0
- package/dist/src/lib/plugins/clean.d.ts.map +1 -0
- package/dist/src/lib/plugins/clean.js +317 -0
- package/dist/src/lib/plugins/clean.js.map +1 -0
- package/dist/src/lib/plugins/fingerprint.d.ts +12 -0
- package/dist/src/lib/plugins/fingerprint.d.ts.map +1 -0
- package/dist/src/lib/plugins/fingerprint.js +72 -0
- package/dist/src/lib/plugins/fingerprint.js.map +1 -0
- package/dist/src/lib/plugins/logConfig.d.ts +14 -0
- package/dist/src/lib/plugins/logConfig.d.ts.map +1 -0
- package/dist/src/lib/plugins/logConfig.js +54 -0
- package/dist/src/lib/plugins/logConfig.js.map +1 -0
- package/dist/src/lib/plugins/remoteCache.d.ts +2 -0
- package/dist/src/lib/plugins/remoteCache.d.ts.map +1 -0
- package/dist/src/lib/plugins/remoteCache.js +335 -0
- package/dist/src/lib/plugins/remoteCache.js.map +1 -0
- package/dist/src/lib/plugins/templateIndexHtml.d.ts +5 -0
- package/dist/src/lib/plugins/templateIndexHtml.js +189 -0
- package/dist/src/lib/plugins/templateIndexHtml.js.map +1 -0
- package/dist/src/lib/plugins/templateManifestPlist.d.ts +8 -0
- package/dist/src/lib/plugins/templateManifestPlist.js +36 -0
- package/dist/src/lib/plugins/templateManifestPlist.js.map +1 -0
- package/package.json +31 -44
- package/.npmignore +0 -1
- package/CHANGELOG.md +0 -61
- package/LICENSE +0 -15
- package/bin/rock +0 -51
- package/lib/rock.js +0 -191
- package/lib/tweezers.js +0 -43
- package/lib/util.js +0 -10
- package/test/mocha.opts +0 -3
- package/test/resources/expect/myapp/LICENSE +0 -15
- package/test/resources/expect/myapp/README.md +0 -18
- package/test/resources/expect/myapp/ignore_this/READTHIS.md +0 -1
- package/test/resources/expect/myapp/lib/cool_module.js +0 -4
- package/test/resources/expect/myapp/test/cool_module.test.js +0 -4
- package/test/resources/rock.conf.json +0 -3
- package/test/resources/rocks/node-lib/.rock/rock.json +0 -9
- package/test/resources/rocks/node-lib/.rock/scripts/bye.js +0 -1
- package/test/resources/rocks/node-lib/.rock/scripts/hi.sh +0 -3
- package/test/resources/rocks/node-lib/LICENSE +0 -15
- package/test/resources/rocks/node-lib/README.md +0 -18
- package/test/resources/rocks/node-lib/ignore_this/READTHIS.md +0 -1
- package/test/resources/rocks/node-lib/lib/{{project-name}}.js +0 -4
- package/test/resources/rocks/node-lib/test/{{project-name}}.test.js +0 -4
- package/test/resources/rocks/node-lib-tmpl/.rock/rock.json +0 -13
- package/test/resources/rocks/node-lib-tmpl/.rock/scripts/bye.js +0 -1
- package/test/resources/rocks/node-lib-tmpl/.rock/scripts/hi.sh +0 -3
- package/test/resources/rocks/node-lib-tmpl/LICENSE +0 -15
- package/test/resources/rocks/node-lib-tmpl/README.md +0 -18
- package/test/resources/rocks/node-lib-tmpl/ignore_this/READTHIS.md +0 -1
- package/test/resources/rocks/node-lib-tmpl/lib/@@project-name@@.js +0 -4
- package/test/resources/rocks/node-lib-tmpl/test/@@project-name@@.test.js +0 -4
- package/test/rock-bin.test.js +0 -81
- package/test/rock-dload-github.test.js +0 -54
- package/test/rock-file.test.js +0 -49
- package/test/rock.test.js +0 -90
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { getProjectRoot, intro, logger, outro, promptMultiselect, RockError, spawn, spinner, } from '@rock-js/tools';
|
|
5
|
+
const CLEANUP_TASK_NAMES = [
|
|
6
|
+
'android',
|
|
7
|
+
'gradle',
|
|
8
|
+
'cocoapods',
|
|
9
|
+
'metro',
|
|
10
|
+
'watchman',
|
|
11
|
+
'node_modules',
|
|
12
|
+
'npm',
|
|
13
|
+
'yarn',
|
|
14
|
+
'bun',
|
|
15
|
+
'pnpm',
|
|
16
|
+
'rock',
|
|
17
|
+
];
|
|
18
|
+
/**
|
|
19
|
+
* Validates that the provided task names are valid cleanup tasks.
|
|
20
|
+
* @param taskNames - Array of task names to validate
|
|
21
|
+
* @throws {RockError} If any task names are invalid
|
|
22
|
+
*/
|
|
23
|
+
function validateCleanupTasks(taskNames) {
|
|
24
|
+
const invalidTasks = taskNames.filter((name) => !CLEANUP_TASK_NAMES.includes(name));
|
|
25
|
+
if (invalidTasks.length > 0) {
|
|
26
|
+
throw new RockError(`Invalid cleanup task(s): ${invalidTasks.join(', ')}. ` +
|
|
27
|
+
`Valid options are: ${CLEANUP_TASK_NAMES.join(', ')}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function removeDirectorySync(dirPath) {
|
|
31
|
+
if (fs.existsSync(dirPath)) {
|
|
32
|
+
try {
|
|
33
|
+
fs.rmSync(dirPath, { recursive: true, force: true });
|
|
34
|
+
logger.debug(`Cleaned directory: ${dirPath}`);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
logger.debug(`Failed to clean directory ${dirPath}: ${error}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Checks if a project has Metro configuration.
|
|
43
|
+
* @param projectRoot - The root directory of the project
|
|
44
|
+
* @returns True if the project has Metro configuration, false otherwise
|
|
45
|
+
*/
|
|
46
|
+
function hasMetroProject(projectRoot) {
|
|
47
|
+
const metroConfig = path.join(projectRoot, 'metro.config.js');
|
|
48
|
+
const metroConfigTs = path.join(projectRoot, 'metro.config.ts');
|
|
49
|
+
const packageJsonPath = path.join(projectRoot, 'package.json');
|
|
50
|
+
if (fs.existsSync(metroConfig) || fs.existsSync(metroConfigTs)) {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
54
|
+
try {
|
|
55
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
56
|
+
return (packageJson.dependencies?.metro || packageJson.devDependencies?.metro);
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Cleans temporary directories that match a given pattern.
|
|
66
|
+
* @param pattern - The pattern to match temporary directory names
|
|
67
|
+
*/
|
|
68
|
+
function cleanTempDirectoryPattern(pattern) {
|
|
69
|
+
const tmpDir = os.tmpdir();
|
|
70
|
+
try {
|
|
71
|
+
const tmpDirContents = fs.readdirSync(tmpDir);
|
|
72
|
+
const matchingFiles = tmpDirContents
|
|
73
|
+
.filter((name) => name.startsWith(pattern))
|
|
74
|
+
.map((name) => path.join(tmpDir, name));
|
|
75
|
+
for (const file of matchingFiles) {
|
|
76
|
+
removeDirectorySync(file);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
logger.debug(`${pattern} cache cleanup failed: ${error}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Cleans multiple directories by removing them recursively.
|
|
85
|
+
* @param directories - Array of directory paths to clean
|
|
86
|
+
* @param baseDir - Base directory to resolve relative paths from
|
|
87
|
+
*/
|
|
88
|
+
function cleanDirectories(directories, baseDir) {
|
|
89
|
+
for (const dir of directories) {
|
|
90
|
+
const fullPath = path.isAbsolute(dir) ? dir : path.join(baseDir, dir);
|
|
91
|
+
removeDirectorySync(fullPath);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Creates an array of cleanup tasks for a specific project.
|
|
96
|
+
* @param projectRoot - The root directory of the project
|
|
97
|
+
* @param options - Clean options that affect task creation
|
|
98
|
+
* @returns Array of cleanup tasks with their configurations
|
|
99
|
+
*/
|
|
100
|
+
function createCleanupTasks(projectRoot, options) {
|
|
101
|
+
const tasks = [];
|
|
102
|
+
// Android cleanup
|
|
103
|
+
tasks.push({
|
|
104
|
+
name: 'android',
|
|
105
|
+
description: '[Android] Gradle build and cache (.gradle, build, .cxx)',
|
|
106
|
+
enabled: true,
|
|
107
|
+
action: async () => {
|
|
108
|
+
const androidDir = path.join(projectRoot, 'android');
|
|
109
|
+
if (fs.existsSync(androidDir)) {
|
|
110
|
+
// Clean Android build directories
|
|
111
|
+
const directoriesToClean = ['.gradle', 'build', '.cxx'];
|
|
112
|
+
cleanDirectories(directoriesToClean, androidDir);
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
// Gradlew cleanup (separate task for slower operation)
|
|
117
|
+
tasks.push({
|
|
118
|
+
name: 'gradle',
|
|
119
|
+
description: '[Android] gradlew clean',
|
|
120
|
+
enabled: true,
|
|
121
|
+
action: async () => {
|
|
122
|
+
const androidDir = path.join(projectRoot, 'android');
|
|
123
|
+
const gradlewPath = path.join(androidDir, 'gradlew');
|
|
124
|
+
if (fs.existsSync(gradlewPath)) {
|
|
125
|
+
await spawn(gradlewPath, ['clean'], { cwd: androidDir });
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
// CocoaPods cleanup
|
|
130
|
+
tasks.push({
|
|
131
|
+
name: 'cocoapods',
|
|
132
|
+
description: '[iOS] CocoaPods cache and Pods directory',
|
|
133
|
+
enabled: true,
|
|
134
|
+
action: async () => {
|
|
135
|
+
const iosDir = path.join(projectRoot, 'ios');
|
|
136
|
+
if (fs.existsSync(iosDir)) {
|
|
137
|
+
// Remove Pods directory
|
|
138
|
+
cleanDirectories(['Pods'], iosDir);
|
|
139
|
+
// Clean CocoaPods cache
|
|
140
|
+
try {
|
|
141
|
+
await spawn('bundle', ['exec', 'pod', 'cache', 'clean', '--all'], {
|
|
142
|
+
cwd: iosDir,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
logger.debug(`Bundle exec pod cache clean failed: ${error}`);
|
|
147
|
+
await spawn('pod', ['cache', 'clean', '--all'], { cwd: iosDir });
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
cleanDirectories(['.cocoapods'], os.homedir());
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
// Metro cleanup
|
|
154
|
+
tasks.push({
|
|
155
|
+
name: 'metro',
|
|
156
|
+
description: '[JS] Metro and haste-map caches',
|
|
157
|
+
enabled: true,
|
|
158
|
+
action: async () => {
|
|
159
|
+
cleanTempDirectoryPattern('metro-');
|
|
160
|
+
cleanTempDirectoryPattern('haste-map');
|
|
161
|
+
},
|
|
162
|
+
});
|
|
163
|
+
// Watchman cleanup (only for Metro projects)
|
|
164
|
+
const hasMetro = hasMetroProject(projectRoot);
|
|
165
|
+
tasks.push({
|
|
166
|
+
name: 'watchman',
|
|
167
|
+
description: '[JS] Watchman cache for this project',
|
|
168
|
+
enabled: hasMetro,
|
|
169
|
+
action: async () => {
|
|
170
|
+
if (hasMetro) {
|
|
171
|
+
await spawn('watchman', ['watch-del', projectRoot]);
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
});
|
|
175
|
+
// node_modules cleanup
|
|
176
|
+
tasks.push({
|
|
177
|
+
name: 'node_modules',
|
|
178
|
+
description: '[JS] node_modules',
|
|
179
|
+
enabled: true,
|
|
180
|
+
action: async () => {
|
|
181
|
+
cleanDirectories(['node_modules'], projectRoot);
|
|
182
|
+
},
|
|
183
|
+
});
|
|
184
|
+
// NPM cleanup
|
|
185
|
+
tasks.push({
|
|
186
|
+
name: 'npm',
|
|
187
|
+
description: '[JS] NPM cache ',
|
|
188
|
+
enabled: options['verify-cache'] ?? false,
|
|
189
|
+
action: async () => {
|
|
190
|
+
await spawn('npm', ['cache', 'verify']);
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
// Yarn cleanup
|
|
194
|
+
tasks.push({
|
|
195
|
+
name: 'yarn',
|
|
196
|
+
description: '[JS] Yarn cache',
|
|
197
|
+
enabled: true,
|
|
198
|
+
action: async () => {
|
|
199
|
+
await spawn('yarn', ['cache', 'clean']);
|
|
200
|
+
},
|
|
201
|
+
});
|
|
202
|
+
// Bun cleanup
|
|
203
|
+
tasks.push({
|
|
204
|
+
name: 'bun',
|
|
205
|
+
description: '[JS] Bun cache',
|
|
206
|
+
enabled: true,
|
|
207
|
+
action: async () => {
|
|
208
|
+
await spawn('bun', ['pm', 'cache', 'rm']);
|
|
209
|
+
},
|
|
210
|
+
});
|
|
211
|
+
// PNPM cleanup
|
|
212
|
+
tasks.push({
|
|
213
|
+
name: 'pnpm',
|
|
214
|
+
description: '[JS] pnpm cache',
|
|
215
|
+
enabled: true,
|
|
216
|
+
action: async () => {
|
|
217
|
+
await spawn('pnpm', ['store', 'prune']);
|
|
218
|
+
},
|
|
219
|
+
});
|
|
220
|
+
// Rock cleanup
|
|
221
|
+
tasks.push({
|
|
222
|
+
name: 'rock',
|
|
223
|
+
description: '[Rock] project cache and build artifacts (iOS/Android)',
|
|
224
|
+
enabled: true,
|
|
225
|
+
action: async () => {
|
|
226
|
+
const rockCacheDir = path.join(projectRoot, '.rock', 'cache');
|
|
227
|
+
// Clean project cache file
|
|
228
|
+
const projectCacheFile = path.join(rockCacheDir, 'project.json');
|
|
229
|
+
removeDirectorySync(projectCacheFile);
|
|
230
|
+
// Clean remote build cache directory
|
|
231
|
+
cleanDirectories(['remote-build'], rockCacheDir);
|
|
232
|
+
// Clean iOS archive and export cache directory
|
|
233
|
+
cleanDirectories(['ios'], rockCacheDir);
|
|
234
|
+
// Clean Android build cache directory
|
|
235
|
+
cleanDirectories(['android'], rockCacheDir);
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
return tasks;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Executes cleanup tasks for a specific project.
|
|
242
|
+
* @param projectRoot - The root directory of the project to clean
|
|
243
|
+
* @param options - Clean options that determine which tasks to run
|
|
244
|
+
*/
|
|
245
|
+
async function cleanProject(projectRoot, options) {
|
|
246
|
+
const tasks = createCleanupTasks(projectRoot, options);
|
|
247
|
+
let selectedTasks;
|
|
248
|
+
const availableTasks = tasks.filter((task) => task.enabled);
|
|
249
|
+
if (options.include && options.include.length > 0) {
|
|
250
|
+
validateCleanupTasks(options.include);
|
|
251
|
+
selectedTasks = tasks.filter((task) => options.include?.includes(task.name) && task.enabled);
|
|
252
|
+
}
|
|
253
|
+
else if (options.all) {
|
|
254
|
+
selectedTasks = availableTasks;
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
const selected = await promptMultiselect({
|
|
258
|
+
message: 'Select caches to clean:',
|
|
259
|
+
options: availableTasks.map((task) => ({
|
|
260
|
+
value: task.name,
|
|
261
|
+
label: task.description,
|
|
262
|
+
})),
|
|
263
|
+
});
|
|
264
|
+
selectedTasks = tasks.filter((task) => selected.includes(task.name));
|
|
265
|
+
}
|
|
266
|
+
for (const task of selectedTasks) {
|
|
267
|
+
const taskSpinner = spinner();
|
|
268
|
+
taskSpinner.start(`Cleaning ${task.description}`);
|
|
269
|
+
try {
|
|
270
|
+
await task.action();
|
|
271
|
+
taskSpinner.stop(`Success: ${task.description}`);
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
taskSpinner.stop(`Failure: ${task.description}`, 1);
|
|
275
|
+
logger.debug(`Task ${task.name} failed: ${error}`);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Main command function that handles the overall clean operation.
|
|
281
|
+
* @param options - Clean options that control the cleanup behavior
|
|
282
|
+
*/
|
|
283
|
+
async function cleanCommand(options) {
|
|
284
|
+
intro('🧹 Rock Clean');
|
|
285
|
+
const projectRoot = getProjectRoot();
|
|
286
|
+
await cleanProject(projectRoot, options);
|
|
287
|
+
outro('Success 🎉.');
|
|
288
|
+
}
|
|
289
|
+
export const cleanPlugin = () => (api) => {
|
|
290
|
+
api.registerCommand({
|
|
291
|
+
name: 'clean',
|
|
292
|
+
description: 'Clean caches and build artifacts for Rock projects',
|
|
293
|
+
action: async (options) => {
|
|
294
|
+
await cleanCommand(options);
|
|
295
|
+
},
|
|
296
|
+
options: [
|
|
297
|
+
{
|
|
298
|
+
name: '--include <list>',
|
|
299
|
+
description: `Comma-separated list of caches to clear (${CLEANUP_TASK_NAMES.join(', ')})`,
|
|
300
|
+
parse: (val) => val.split(','),
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
name: '--verify-cache',
|
|
304
|
+
description: 'Whether to verify the cache (currently only applies to npm cache)',
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
name: '--all',
|
|
308
|
+
description: 'Clean all available caches without interactive prompt',
|
|
309
|
+
},
|
|
310
|
+
],
|
|
311
|
+
});
|
|
312
|
+
return {
|
|
313
|
+
name: 'internal_clean',
|
|
314
|
+
description: 'Clean plugin for Rock projects',
|
|
315
|
+
};
|
|
316
|
+
};
|
|
317
|
+
//# sourceMappingURL=clean.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clean.js","sourceRoot":"","sources":["../../../../src/lib/plugins/clean.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PluginApi } from '@rock-js/config';
|
|
2
|
+
import type { FingerprintSources } from '@rock-js/tools';
|
|
3
|
+
type NativeFingerprintCommandOptions = {
|
|
4
|
+
platform: 'ios' | 'android';
|
|
5
|
+
raw?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare function nativeFingerprintCommand(path: string, { extraSources, ignorePaths }: FingerprintSources, options: NativeFingerprintCommandOptions): Promise<void>;
|
|
8
|
+
export declare const fingerprintPlugin: () => (api: PluginApi) => {
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../../../src/lib/plugins/fingerprint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAYtD,KAAK,+BAA+B,GAAG;IACrC,QAAQ,EAAE,KAAK,GAAG,SAAS,CAAC;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,EACZ,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,kBAAkB,EACjD,OAAO,EAAE,+BAA+B,iBAqDzC;AAeD,eAAO,MAAM,iBAAiB,SAAU,KAAK,SAAS;;;CA4BrD,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { performance } from 'node:perf_hooks';
|
|
2
|
+
import { color, intro, isInteractive, logger, nativeFingerprint, outro, RockError, spinner, } from '@rock-js/tools';
|
|
3
|
+
export async function nativeFingerprintCommand(path, { extraSources, ignorePaths }, options) {
|
|
4
|
+
validateOptions(options);
|
|
5
|
+
const platform = options.platform;
|
|
6
|
+
const readablePlatformName = platform === 'ios' ? 'iOS' : 'Android';
|
|
7
|
+
if (options.raw || !isInteractive()) {
|
|
8
|
+
const fingerprint = await nativeFingerprint(path, {
|
|
9
|
+
platform,
|
|
10
|
+
extraSources,
|
|
11
|
+
ignorePaths,
|
|
12
|
+
});
|
|
13
|
+
console.log(fingerprint.hash);
|
|
14
|
+
// log sources to stderr to avoid polluting the standard output
|
|
15
|
+
console.error(JSON.stringify({
|
|
16
|
+
hash: fingerprint.hash,
|
|
17
|
+
sources: fingerprint.sources.filter((source) => source.hash != null),
|
|
18
|
+
}, null, 2));
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
intro(`${readablePlatformName} Fingerprint`);
|
|
22
|
+
const loader = spinner();
|
|
23
|
+
loader.start("Calculating fingerprint for the project's native parts");
|
|
24
|
+
const start = performance.now();
|
|
25
|
+
const fingerprint = await nativeFingerprint(path, {
|
|
26
|
+
platform,
|
|
27
|
+
extraSources,
|
|
28
|
+
ignorePaths,
|
|
29
|
+
});
|
|
30
|
+
const duration = performance.now() - start;
|
|
31
|
+
loader.stop(`Fingerprint calculated: ${color.bold(color.magenta(fingerprint.hash))}`);
|
|
32
|
+
logger.debug('Sources:', JSON.stringify(fingerprint.sources.filter((source) => source.hash != null), null, 2));
|
|
33
|
+
logger.debug(`Duration: ${(duration / 1000).toFixed(1)}s`);
|
|
34
|
+
outro('Success 🎉.');
|
|
35
|
+
}
|
|
36
|
+
function validateOptions(options) {
|
|
37
|
+
if (!options.platform) {
|
|
38
|
+
throw new RockError('The --platform flag is required. Please specify either "ios" or "android".');
|
|
39
|
+
}
|
|
40
|
+
if (options.platform !== 'ios' && options.platform !== 'android') {
|
|
41
|
+
throw new RockError(`Unsupported platform "${options.platform}". Please specify either "ios" or "android".`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export const fingerprintPlugin = () => (api) => {
|
|
45
|
+
api.registerCommand({
|
|
46
|
+
name: 'fingerprint',
|
|
47
|
+
description: 'Calculate fingerprint for given platform',
|
|
48
|
+
action: async (path, options) => {
|
|
49
|
+
const fingerprintOptions = api.getFingerprintOptions();
|
|
50
|
+
const dir = path || api.getProjectRoot();
|
|
51
|
+
await nativeFingerprintCommand(dir, fingerprintOptions, options);
|
|
52
|
+
},
|
|
53
|
+
options: [
|
|
54
|
+
{
|
|
55
|
+
name: '-p, --platform <string>',
|
|
56
|
+
description: 'Select platform, e.g. ios or android',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: '--raw',
|
|
60
|
+
description: 'Output the raw fingerprint hash for piping',
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
args: [
|
|
64
|
+
{ name: '[path]', description: 'Directory to calculate fingerprint for' },
|
|
65
|
+
],
|
|
66
|
+
});
|
|
67
|
+
return {
|
|
68
|
+
name: 'internal_fingerprint',
|
|
69
|
+
description: 'Fingerprint plugin',
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=fingerprint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../../../src/lib/plugins/fingerprint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ConfigOutput, PluginApi } from '@rock-js/config';
|
|
2
|
+
export declare const logConfig: (args: {
|
|
3
|
+
platform?: string;
|
|
4
|
+
}, ownConfig: {
|
|
5
|
+
platforms: ConfigOutput["platforms"];
|
|
6
|
+
root: ConfigOutput["root"];
|
|
7
|
+
}) => Promise<void>;
|
|
8
|
+
export declare const logConfigPlugin: (ownConfig: {
|
|
9
|
+
platforms: ConfigOutput["platforms"];
|
|
10
|
+
root: ConfigOutput["root"];
|
|
11
|
+
}) => (api: PluginApi) => {
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logConfig.d.ts","sourceRoot":"","sources":["../../../../src/lib/plugins/logConfig.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AA4B5D,eAAO,MAAM,SAAS,GACpB,MAAM;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3B,WAAW;IACT,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACrC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;CAC5B,kBAoBF,CAAC;AAEF,eAAO,MAAM,eAAe,GACzB,WAAW;IACV,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACrC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;CAC5B,MACA,KAAK,SAAS;;;CAmBd,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
function isValidRNDependency(config) {
|
|
2
|
+
return (Object.keys(config.platforms).filter((key) => Boolean(config.platforms[key])).length !== 0);
|
|
3
|
+
}
|
|
4
|
+
function filterConfig(config) {
|
|
5
|
+
const filtered = { ...config };
|
|
6
|
+
// `react-native` is not a dependency. When loading it through community CLI it's not an issue,
|
|
7
|
+
// but in our case we don't install `@react-native-community/cli-platform-*` as a dependencies
|
|
8
|
+
// so the config.platforms key is empty, which makes autolinking treat it as a dependency.
|
|
9
|
+
delete filtered.dependencies['react-native'];
|
|
10
|
+
const dependencies = {};
|
|
11
|
+
Object.keys(filtered.dependencies).forEach((item) => {
|
|
12
|
+
if (isValidRNDependency(filtered.dependencies[item])) {
|
|
13
|
+
dependencies[item] = filtered.dependencies[item];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
return {
|
|
17
|
+
...filtered,
|
|
18
|
+
dependencies,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export const logConfig = async (args, ownConfig) => {
|
|
22
|
+
const { loadConfigAsync } = await import('@react-native-community/cli-config');
|
|
23
|
+
const config = await loadConfigAsync({
|
|
24
|
+
projectRoot: ownConfig.root,
|
|
25
|
+
selectedPlatform: args.platform,
|
|
26
|
+
});
|
|
27
|
+
const platforms = ownConfig.platforms && args.platform
|
|
28
|
+
? { [args.platform]: ownConfig.platforms[args.platform] }
|
|
29
|
+
: ownConfig.platforms;
|
|
30
|
+
for (const platform in platforms) {
|
|
31
|
+
config.project[platform] = platforms[platform].autolinkingConfig.project;
|
|
32
|
+
}
|
|
33
|
+
console.log(JSON.stringify(filterConfig(config), null, 2));
|
|
34
|
+
};
|
|
35
|
+
export const logConfigPlugin = (ownConfig) => (api) => {
|
|
36
|
+
api.registerCommand({
|
|
37
|
+
name: 'config',
|
|
38
|
+
description: 'Output autolinking config',
|
|
39
|
+
action: async (args) => {
|
|
40
|
+
await logConfig(args, ownConfig);
|
|
41
|
+
},
|
|
42
|
+
options: [
|
|
43
|
+
{
|
|
44
|
+
name: '-p, --platform <string>',
|
|
45
|
+
description: 'Select platform, e.g. ios or android',
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
});
|
|
49
|
+
return {
|
|
50
|
+
name: 'internal_config',
|
|
51
|
+
description: 'Configuration plugin',
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=logConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logConfig.js","sourceRoot":"","sources":["../../../../src/lib/plugins/logConfig.ts"],"names":[],"mappings":"AAMA,SAAS,mBAAmB,CAAC,MAAwB;IACnD,OAAO,CACL,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAC3C,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAC/B,CAAC,MAAM,KAAK,CAAC,CACf,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAAc;IAClC,MAAM,QAAQ,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC/B,+FAA+F;IAC/F,8FAA8F;IAC9F,0FAA0F;IAC1F,OAAO,QAAQ,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAqC,EAAE,CAAC;IAC1D,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAClD,IAAI,mBAAmB,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACrD,YAAY,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO;QACL,GAAG,QAAQ;QACX,YAAY;KACb,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAC5B,IAA2B,EAC3B,SAGC,EACD,EAAE;IACF,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CACtC,oCAAoC,CACrC,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC;QACnC,WAAW,EAAE,SAAS,CAAC,IAAI;QAC3B,gBAAgB,EAAE,IAAI,CAAC,QAAQ;KAChC,CAAC,CAAC;IAEH,MAAM,SAAS,GACb,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ;QAClC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;QACzD,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC;IAE1B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC;IAC3E,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAC1B,CAAC,SAGA,EAAE,EAAE,CACL,CAAC,GAAc,EAAE,EAAE;IACjB,GAAG,CAAC,eAAe,CAAC;QAClB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,2BAA2B;QACxC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACrB,MAAM,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,yBAAyB;gBAC/B,WAAW,EAAE,sCAAsC;aACpD;SACF;KACF,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,sBAAsB;KACpC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remoteCache.d.ts","sourceRoot":"","sources":["../../../../src/lib/plugins/remoteCache.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAiP5D,eAAO,MAAM,iBAAiB,SAE3B,KAAK,SAAS,KAAG,YA6DjB,CAAC"}
|