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.
- package/README.md +51 -182
- 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 -50
- package/.npmignore +0 -1
- package/.travis.yml +0 -4
- package/CHANGELOG.md +0 -61
- package/LICENSE +0 -15
- package/bin/rock +0 -43
- package/docs/predefined-tokens.md +0 -31
- package/lib/rock.js +0 -213
- package/lib/tweezers.js +0 -37
- package/lib/util.js +0 -9
- package/test/mocha.opts +0 -3
- package/test/resources/expect/myapp/LICENSE +0 -15
- package/test/resources/expect/myapp/README.md +0 -17
- 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/date.txt +0 -1
- package/test/resources/rocks/literal-alt.txt +0 -1
- package/test/resources/rocks/literal.txt +0 -1
- 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 -17
- 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 -17
- 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 -73
- package/test/rock-dload-github.test.js +0 -41
- package/test/rock-file.test.js +0 -47
- package/test/rock.predefined-locals.js +0 -52
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|