rock 0.4.0 → 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.
Files changed (83) hide show
  1. package/README.md +51 -182
  2. package/dist/src/bin.d.ts +2 -0
  3. package/dist/src/bin.d.ts.map +1 -0
  4. package/dist/src/bin.js +7 -0
  5. package/dist/src/bin.js.map +1 -0
  6. package/dist/src/index.d.ts +2 -0
  7. package/dist/src/index.d.ts.map +1 -0
  8. package/dist/src/index.js +2 -0
  9. package/dist/src/index.js.map +1 -0
  10. package/dist/src/lib/adHocTemplates.d.ts +13 -0
  11. package/dist/src/lib/adHocTemplates.js +366 -0
  12. package/dist/src/lib/adHocTemplates.js.map +1 -0
  13. package/dist/src/lib/checkDeprecatedOptions.d.ts +1 -0
  14. package/dist/src/lib/checkDeprecatedOptions.d.ts.map +1 -0
  15. package/dist/src/lib/checkDeprecatedOptions.js +60 -0
  16. package/dist/src/lib/checkDeprecatedOptions.js.map +1 -0
  17. package/dist/src/lib/cli.d.ts +6 -0
  18. package/dist/src/lib/cli.d.ts.map +1 -0
  19. package/dist/src/lib/cli.js +101 -0
  20. package/dist/src/lib/cli.js.map +1 -0
  21. package/dist/src/lib/plugins/clean.d.ts +2 -0
  22. package/dist/src/lib/plugins/clean.d.ts.map +1 -0
  23. package/dist/src/lib/plugins/clean.js +317 -0
  24. package/dist/src/lib/plugins/clean.js.map +1 -0
  25. package/dist/src/lib/plugins/fingerprint.d.ts +12 -0
  26. package/dist/src/lib/plugins/fingerprint.d.ts.map +1 -0
  27. package/dist/src/lib/plugins/fingerprint.js +72 -0
  28. package/dist/src/lib/plugins/fingerprint.js.map +1 -0
  29. package/dist/src/lib/plugins/logConfig.d.ts +14 -0
  30. package/dist/src/lib/plugins/logConfig.d.ts.map +1 -0
  31. package/dist/src/lib/plugins/logConfig.js +54 -0
  32. package/dist/src/lib/plugins/logConfig.js.map +1 -0
  33. package/dist/src/lib/plugins/remoteCache.d.ts +2 -0
  34. package/dist/src/lib/plugins/remoteCache.d.ts.map +1 -0
  35. package/dist/src/lib/plugins/remoteCache.js +335 -0
  36. package/dist/src/lib/plugins/remoteCache.js.map +1 -0
  37. package/dist/src/lib/plugins/templateIndexHtml.d.ts +5 -0
  38. package/dist/src/lib/plugins/templateIndexHtml.js +189 -0
  39. package/dist/src/lib/plugins/templateIndexHtml.js.map +1 -0
  40. package/dist/src/lib/plugins/templateManifestPlist.d.ts +8 -0
  41. package/dist/src/lib/plugins/templateManifestPlist.js +36 -0
  42. package/dist/src/lib/plugins/templateManifestPlist.js.map +1 -0
  43. package/package.json +31 -50
  44. package/.npmignore +0 -1
  45. package/.travis.yml +0 -4
  46. package/CHANGELOG.md +0 -61
  47. package/LICENSE +0 -15
  48. package/bin/rock +0 -43
  49. package/docs/predefined-tokens.md +0 -31
  50. package/lib/rock.js +0 -213
  51. package/lib/tweezers.js +0 -37
  52. package/lib/util.js +0 -9
  53. package/test/mocha.opts +0 -3
  54. package/test/resources/expect/myapp/LICENSE +0 -15
  55. package/test/resources/expect/myapp/README.md +0 -17
  56. package/test/resources/expect/myapp/ignore_this/READTHIS.md +0 -1
  57. package/test/resources/expect/myapp/lib/cool_module.js +0 -4
  58. package/test/resources/expect/myapp/test/cool_module.test.js +0 -4
  59. package/test/resources/rock.conf.json +0 -3
  60. package/test/resources/rocks/date.txt +0 -1
  61. package/test/resources/rocks/literal-alt.txt +0 -1
  62. package/test/resources/rocks/literal.txt +0 -1
  63. package/test/resources/rocks/node-lib/.rock/rock.json +0 -9
  64. package/test/resources/rocks/node-lib/.rock/scripts/bye.js +0 -1
  65. package/test/resources/rocks/node-lib/.rock/scripts/hi.sh +0 -3
  66. package/test/resources/rocks/node-lib/LICENSE +0 -15
  67. package/test/resources/rocks/node-lib/README.md +0 -17
  68. package/test/resources/rocks/node-lib/ignore_this/READTHIS.md +0 -1
  69. package/test/resources/rocks/node-lib/lib/{{project-name}}.js +0 -4
  70. package/test/resources/rocks/node-lib/test/{{project-name}}.test.js +0 -4
  71. package/test/resources/rocks/node-lib-tmpl/.rock/rock.json +0 -13
  72. package/test/resources/rocks/node-lib-tmpl/.rock/scripts/bye.js +0 -1
  73. package/test/resources/rocks/node-lib-tmpl/.rock/scripts/hi.sh +0 -3
  74. package/test/resources/rocks/node-lib-tmpl/LICENSE +0 -15
  75. package/test/resources/rocks/node-lib-tmpl/README.md +0 -17
  76. package/test/resources/rocks/node-lib-tmpl/ignore_this/READTHIS.md +0 -1
  77. package/test/resources/rocks/node-lib-tmpl/lib/@@project-name@@.js +0 -4
  78. package/test/resources/rocks/node-lib-tmpl/test/@@project-name@@.test.js +0 -4
  79. package/test/rock-bin.test.js +0 -73
  80. package/test/rock-dload-github.test.js +0 -41
  81. package/test/rock-file.test.js +0 -47
  82. package/test/rock.predefined-locals.js +0 -52
  83. package/test/rock.test.js +0 -78
@@ -0,0 +1 @@
1
+ export declare const checkDeprecatedOptions: (argv: string[]) => void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkDeprecatedOptions.d.ts","sourceRoot":"","sources":["../../../src/lib/checkDeprecatedOptions.ts"],"names":[],"mappings":"AAgFA,eAAO,MAAM,sBAAsB,GAAI,MAAM,MAAM,EAAE,SAapD,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { color, logger } from '@rock-js/tools';
2
+ const npxBin = 'npx rock';
3
+ const checkDeprecatedCommand = (argv, oldCmd, newCmd, deprecatedFlags) => {
4
+ if (argv.includes(oldCmd)) {
5
+ const args = argv.slice(argv.indexOf(oldCmd) + 1);
6
+ const formattedFlags = getFormattedFlagsArray(deprecatedFlags, args);
7
+ logger.error(`The "${oldCmd}" command was renamed to "${newCmd}".`);
8
+ logFlagsAndCommand(formattedFlags, newCmd, args, deprecatedFlags);
9
+ process.exit(1);
10
+ }
11
+ };
12
+ const checkCurrentCommand = (argv, cmd, deprecatedFlags) => {
13
+ if (argv.includes(cmd)) {
14
+ const args = argv.slice(argv.indexOf(cmd) + 1);
15
+ const formattedFlags = getFormattedFlagsArray(deprecatedFlags, args);
16
+ if (formattedFlags.length > 0) {
17
+ logFlagsAndCommand(formattedFlags, cmd, args, deprecatedFlags);
18
+ process.exit(1);
19
+ }
20
+ }
21
+ };
22
+ function getFormattedFlagsArray(flags, args) {
23
+ return flags
24
+ .map(({ old, new: newFlag }) => args.includes(old)
25
+ ? `• "${color.bold(old)}" changed to "${color.bold(newFlag)}"`
26
+ : undefined)
27
+ .filter(Boolean);
28
+ }
29
+ function logFlagsAndCommand(formattedFlags, cmd, args, deprecatedFlags) {
30
+ if (formattedFlags.length > 0) {
31
+ logger.error(`Found deprecated flags:
32
+ ${formattedFlags.join('\n')}`);
33
+ }
34
+ const newArgs = args.map((arg) => {
35
+ const newFlag = deprecatedFlags.find((flag) => arg === flag.old);
36
+ return newFlag ? newFlag.new : arg;
37
+ });
38
+ logger.error(`Use new command${formattedFlags ? ' with new flags' : ''}:
39
+ ${color.bold(npxBin)} ${color.bold(cmd)} ${color.bold(newArgs.join(' '))}`);
40
+ }
41
+ const deprecatedAndroidFlags = [
42
+ { old: '--mode', new: '--variant' },
43
+ { old: '--appId', new: '--app-id' },
44
+ { old: '--appIdSuffix', new: '--app-id-suffix' },
45
+ { old: '--no-remote-cache', new: '--local' },
46
+ ];
47
+ const deprecatedIosFlags = [
48
+ { old: '--mode', new: '--configuration' },
49
+ { old: '--buildFolder', new: '--build-folder' },
50
+ { old: '--no-remote-cache', new: '--local' },
51
+ ];
52
+ export const checkDeprecatedOptions = (argv) => {
53
+ // Check deprecated commands
54
+ checkDeprecatedCommand(argv, 'run-android', 'run:android', deprecatedAndroidFlags);
55
+ checkDeprecatedCommand(argv, 'run-ios', 'run:ios', deprecatedIosFlags);
56
+ // Check current commands for deprecated flags
57
+ checkCurrentCommand(argv, 'run:android', deprecatedAndroidFlags);
58
+ checkCurrentCommand(argv, 'run:ios', deprecatedIosFlags);
59
+ };
60
+ //# sourceMappingURL=checkDeprecatedOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkDeprecatedOptions.js","sourceRoot":"","sources":["../../../src/lib/checkDeprecatedOptions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ type CliOptions = {
2
+ cwd: string;
3
+ argv: string[];
4
+ };
5
+ export declare const cli: ({ cwd, argv }: CliOptions) => Promise<void>;
6
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../../src/lib/cli.ts"],"names":[],"mappings":"AAgBA,KAAK,UAAU,GAAG;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,GAAG,GAAU,eAAe,UAAU,kBAqElD,CAAC"}
@@ -0,0 +1,101 @@
1
+ import { createRequire } from 'node:module';
2
+ import { dirname } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ import { getConfig } from '@rock-js/config';
5
+ import { colorLink, logger, resolveFilenameUp, RockError } from '@rock-js/tools';
6
+ import { Command } from 'commander';
7
+ import { checkDeprecatedOptions } from './checkDeprecatedOptions.js';
8
+ import { cleanPlugin } from './plugins/clean.js';
9
+ import { fingerprintPlugin } from './plugins/fingerprint.js';
10
+ import { logConfigPlugin } from './plugins/logConfig.js';
11
+ import { remoteCachePlugin } from './plugins/remoteCache.js';
12
+ const require = createRequire(import.meta.url);
13
+ const __dirname = dirname(fileURLToPath(import.meta.url));
14
+ const { version } = require(resolveFilenameUp(__dirname, 'package.json'));
15
+ export const cli = async ({ cwd, argv }) => {
16
+ if (argv) {
17
+ logger.setVerbose(argv.includes('--verbose'));
18
+ checkDeprecatedOptions(argv);
19
+ }
20
+ const program = new Command();
21
+ program
22
+ .name('rock')
23
+ .description('Rock CLI.')
24
+ .option('--verbose', 'enable verbose logging')
25
+ .version(version);
26
+ const internalPlugins = [
27
+ remoteCachePlugin,
28
+ logConfigPlugin,
29
+ fingerprintPlugin,
30
+ cleanPlugin,
31
+ ];
32
+ // Register commands from the config
33
+ const config = await getConfig(cwd, internalPlugins);
34
+ ensureUniqueCommands(config.commands);
35
+ config.commands?.forEach((command) => {
36
+ const cmd = program
37
+ .command(command.name)
38
+ .description(command.description || '')
39
+ .action(async (...args) => {
40
+ try {
41
+ await command.action(...args);
42
+ }
43
+ catch (error) {
44
+ if (error instanceof RockError) {
45
+ if (logger.isVerbose()) {
46
+ logger.error(error);
47
+ }
48
+ else {
49
+ logger.error(error.message);
50
+ if (error.cause) {
51
+ logger.error(`Cause: ${error.cause}`);
52
+ }
53
+ }
54
+ }
55
+ else {
56
+ logger.error(`Unexpected error while running "${command.name}":`, error);
57
+ }
58
+ process.exit(1);
59
+ }
60
+ });
61
+ // Positional args
62
+ for (const arg of command.args || []) {
63
+ cmd.argument(arg.name, arg.description, arg.default);
64
+ }
65
+ // Flags
66
+ for (const opt of command.options || []) {
67
+ // Note: we cannot use default idempotent parse, as it prevents us from using variadic options.
68
+ if (opt.parse) {
69
+ cmd.option(opt.name, opt.description, opt.parse, opt.default);
70
+ }
71
+ else {
72
+ cmd.option(opt.name, opt.description, opt.default);
73
+ }
74
+ }
75
+ });
76
+ await program.parseAsync(argv);
77
+ };
78
+ function ensureUniqueCommands(commands) {
79
+ if (!commands)
80
+ return;
81
+ const commandNames = new Map();
82
+ for (const command of commands) {
83
+ if (commandNames.has(command.name)) {
84
+ const duplicate = commandNames.get(command.name);
85
+ const samePluginTwice = command.__origin === duplicate.__origin;
86
+ if (samePluginTwice) {
87
+ logger.error(`Found duplicated command "${command.name}" registered twice by the same "${command.__origin}" plugin in ${colorLink('rock.config.mjs')} file.
88
+ Please declare the plugin only once.`);
89
+ }
90
+ else {
91
+ logger.error(`Found duplicated command "${command.name}" registered by 2 plugins in ${colorLink('rock.config.mjs')} file:
92
+ 1. Added by "${command.__origin}" plugin
93
+ 2. Added by "${duplicate.__origin}" plugin
94
+ Command names must be unique. Please check if you import a plugin multiple times or use incompatible plugins.`);
95
+ }
96
+ process.exit(1);
97
+ }
98
+ commandNames.set(command.name, command);
99
+ }
100
+ }
101
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/lib/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { PluginApi, PluginOutput } from '@rock-js/config';
2
+ export declare const cleanPlugin: () => (api: PluginApi) => PluginOutput;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../../../src/lib/plugins/clean.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AA8V5D,eAAO,MAAM,WAAW,SAErB,KAAK,SAAS,KAAG,YAgCjB,CAAC"}
@@ -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"}