create-rock 0.0.1 → 0.9.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/README.md +67 -0
- package/dist/e2e/e2e.test.d.ts +1 -0
- package/dist/e2e/e2e.test.d.ts.map +1 -0
- package/dist/e2e/e2e.test.js +98 -0
- package/dist/e2e/e2e.test.js.map +1 -0
- package/dist/src/bin.d.ts +2 -0
- package/dist/src/bin.d.ts.map +1 -0
- package/dist/src/bin.js +10 -0
- package/dist/src/bin.js.map +1 -0
- package/dist/src/index.d.ts +1 -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/bin.d.ts +4 -0
- package/dist/src/lib/bin.d.ts.map +1 -0
- package/dist/src/lib/bin.js +210 -0
- package/dist/src/lib/bin.js.map +1 -0
- package/dist/src/lib/steps/git-init.d.ts +3 -0
- package/dist/src/lib/steps/git-init.d.ts.map +1 -0
- package/dist/src/lib/steps/git-init.js +51 -0
- package/dist/src/lib/steps/git-init.js.map +1 -0
- package/dist/src/lib/templates.d.ts +23 -0
- package/dist/src/lib/templates.d.ts.map +1 -0
- package/dist/src/lib/templates.js +122 -0
- package/dist/src/lib/templates.js.map +1 -0
- package/dist/src/lib/utils/edit-template.d.ts +10 -0
- package/dist/src/lib/utils/edit-template.d.ts.map +1 -0
- package/dist/src/lib/utils/edit-template.js +48 -0
- package/dist/src/lib/utils/edit-template.js.map +1 -0
- package/dist/src/lib/utils/fs.d.ts +10 -0
- package/dist/src/lib/utils/fs.d.ts.map +1 -0
- package/dist/src/lib/utils/fs.js +49 -0
- package/dist/src/lib/utils/fs.js.map +1 -0
- package/dist/src/lib/utils/getPkgManager.d.ts +1 -0
- package/dist/src/lib/utils/getPkgManager.js +21 -0
- package/dist/src/lib/utils/getPkgManager.js.map +1 -0
- package/dist/src/lib/utils/initInExistingProject.d.ts +1 -0
- package/dist/src/lib/utils/initInExistingProject.js +243 -0
- package/dist/src/lib/utils/initInExistingProject.js.map +1 -0
- package/dist/src/lib/utils/isRnefProject.d.ts +1 -0
- package/dist/src/lib/utils/isRnefProject.js +2 -0
- package/dist/src/lib/utils/isRnefProject.js.map +1 -0
- package/dist/src/lib/utils/migrateRnefProject.d.ts +2 -0
- package/dist/src/lib/utils/migrateRnefProject.js +206 -0
- package/dist/src/lib/utils/migrateRnefProject.js.map +1 -0
- package/dist/src/lib/utils/package-json.d.ts +2 -0
- package/dist/src/lib/utils/package-json.d.ts.map +1 -0
- package/dist/src/lib/utils/package-json.js +65 -0
- package/dist/src/lib/utils/package-json.js.map +1 -0
- package/dist/src/lib/utils/parse-cli-options.d.ts +14 -0
- package/dist/src/lib/utils/parse-cli-options.d.ts.map +1 -0
- package/dist/src/lib/utils/parse-cli-options.js +35 -0
- package/dist/src/lib/utils/parse-cli-options.js.map +1 -0
- package/dist/src/lib/utils/parsers.d.ts +10 -0
- package/dist/src/lib/utils/parsers.d.ts.map +1 -0
- package/dist/src/lib/utils/parsers.js +22 -0
- package/dist/src/lib/utils/parsers.js.map +1 -0
- package/dist/src/lib/utils/project-name.d.ts +8 -0
- package/dist/src/lib/utils/project-name.d.ts.map +1 -0
- package/dist/src/lib/utils/project-name.js +88 -0
- package/dist/src/lib/utils/project-name.js.map +1 -0
- package/dist/src/lib/utils/prompts.d.ts +14 -0
- package/dist/src/lib/utils/prompts.d.ts.map +1 -0
- package/dist/src/lib/utils/prompts.js +141 -0
- package/dist/src/lib/utils/prompts.js.map +1 -0
- package/dist/src/lib/utils/tarball.d.ts +8 -0
- package/dist/src/lib/utils/tarball.d.ts.map +1 -0
- package/dist/src/lib/utils/tarball.js +47 -0
- package/dist/src/lib/utils/tarball.js.map +1 -0
- package/dist/src/lib/utils/version.d.ts +1 -0
- package/dist/src/lib/utils/version.d.ts.map +1 -0
- package/dist/src/lib/utils/version.js +18 -0
- package/dist/src/lib/utils/version.js.map +1 -0
- package/package.json +34 -6
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { color, logger, note, outro, spawn, spinner } from '@rock-js/tools';
|
|
4
|
+
import { getPkgManager } from './getPkgManager.js';
|
|
5
|
+
async function migrateRnefProject(projectRoot) {
|
|
6
|
+
const pkgManager = getPkgManager();
|
|
7
|
+
const loader = spinner();
|
|
8
|
+
const packagesMap = {
|
|
9
|
+
'@rnef/cli': 'rock',
|
|
10
|
+
'@rnef/platform-android': '@rock-js/platform-android',
|
|
11
|
+
'@rnef/platform-ios': '@rock-js/platform-ios',
|
|
12
|
+
'@rnef/plugin-metro': '@rock-js/plugin-metro',
|
|
13
|
+
'@rnef/plugin-repack': '@rock-js/plugin-repack',
|
|
14
|
+
'@rnef/provider-github': '@rock-js/provider-github',
|
|
15
|
+
'@rnef/provider-s3': '@rock-js/provider-s3',
|
|
16
|
+
'@rnef/welcome-screen': '@rock-js/welcome-screen',
|
|
17
|
+
};
|
|
18
|
+
const rnefDependencies = collectCurrentRnefDependencies(projectRoot);
|
|
19
|
+
// 1) Remove RNEF packages and add Rock counterparts
|
|
20
|
+
loader.start(`Removing ${color.bold('RNEF')} packages`);
|
|
21
|
+
await removeDependencies(projectRoot, pkgManager, rnefDependencies);
|
|
22
|
+
loader.stop(`Removed ${color.bold('RNEF')} packages`);
|
|
23
|
+
loader.start(`Adding ${color.bold('Rock')} packages with ${color.bold(pkgManager)}`);
|
|
24
|
+
await addDevDependencies(projectRoot, pkgManager, rnefDependencies.map((dependency) => packagesMap[dependency]));
|
|
25
|
+
loader.stop(`Added ${color.bold('Rock')} packages`);
|
|
26
|
+
// 2) Update .gitignore
|
|
27
|
+
loader.start(`Updating ${color.bold('.gitignore')}`);
|
|
28
|
+
updateGitignore(projectRoot);
|
|
29
|
+
loader.stop(`Updated ${color.bold('.gitignore')}`);
|
|
30
|
+
// 3) Rename .rnef/ directory to .rock/
|
|
31
|
+
loader.start(`Updating cache`);
|
|
32
|
+
renameRnefDirectory(projectRoot);
|
|
33
|
+
updateCacheFilenames(projectRoot);
|
|
34
|
+
loader.stop(`Updated cache`);
|
|
35
|
+
// 4) Rename and update rnef.config.mjs
|
|
36
|
+
loader.start(`Renaming and updating ${color.bold('rnef.config.mjs')} to ${color.bold('rock.config.mjs')}`);
|
|
37
|
+
renameAndUpdateConfig(projectRoot);
|
|
38
|
+
loader.stop(`Renamed and updated ${color.bold('rnef.config.mjs')} to ${color.bold('rock.config.mjs')}`);
|
|
39
|
+
// 5) Update Android build.gradle
|
|
40
|
+
loader.start(`Updating ${color.bold('android/app/build.gradle')}`);
|
|
41
|
+
updateAndroidBuildGradle(projectRoot);
|
|
42
|
+
loader.stop(`Updated ${color.bold('android/app/build.gradle')}`);
|
|
43
|
+
// 6) Update iOS Podfile
|
|
44
|
+
loader.start(`Updating ${color.bold('ios/Podfile')}`);
|
|
45
|
+
updatePodfile(projectRoot);
|
|
46
|
+
loader.stop(`Updated ${color.bold('ios/Podfile')}`);
|
|
47
|
+
// 7) Update Android settings.gradle
|
|
48
|
+
loader.start(`Updating ${color.bold('android/settings.gradle')}`);
|
|
49
|
+
updateAndroidSettingsGradle(projectRoot);
|
|
50
|
+
loader.stop(`Updated ${color.bold('android/settings.gradle')}`);
|
|
51
|
+
// 8) Update Xcode project.pbxproj
|
|
52
|
+
loader.start(`Updating ${color.bold('ios/project.pbxproj')}`);
|
|
53
|
+
updateXcodeProject(projectRoot);
|
|
54
|
+
loader.stop(`Updated ${color.bold('ios/project.pbxproj')}`);
|
|
55
|
+
// 9) Update package.json scripts
|
|
56
|
+
loader.start(`Updating ${color.bold('package.json')} scripts`);
|
|
57
|
+
updatePackageJsonScripts(projectRoot);
|
|
58
|
+
loader.stop(`Updated ${color.bold('package.json')} scripts`);
|
|
59
|
+
note([
|
|
60
|
+
`1. Run ${color.bold('git diff')} to see the changes. Adjust as necessary e.g.:`,
|
|
61
|
+
` - paths in monorepo`,
|
|
62
|
+
` - commands in shell scripts`,
|
|
63
|
+
` - commands in CI workflows`,
|
|
64
|
+
`2. Run the dev server as you would normally do`,
|
|
65
|
+
`3. Run iOS and Android apps as you would normally do`,
|
|
66
|
+
`4. Setup Remote Cache: ${color.bold('https://rockjs.dev/docs/configuration#remote-cache-configuration')}`,
|
|
67
|
+
].join('\n'), 'Next steps');
|
|
68
|
+
outro('RNEF to Rock migration completed successfully 🎉.');
|
|
69
|
+
}
|
|
70
|
+
function collectCurrentRnefDependencies(projectRoot) {
|
|
71
|
+
const packageJsonPath = path.join(projectRoot, 'package.json');
|
|
72
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
|
|
73
|
+
const rnefDependencies = Object.keys(packageJson.dependencies).filter((dependency) => dependency.startsWith('@rnef/'));
|
|
74
|
+
const rnefDevDependencies = Object.keys(packageJson.devDependencies).filter((dependency) => dependency.startsWith('@rnef/'));
|
|
75
|
+
return [...rnefDependencies, ...rnefDevDependencies];
|
|
76
|
+
}
|
|
77
|
+
function updateGitignore(projectRoot) {
|
|
78
|
+
const gitignorePath = path.join(projectRoot, '.gitignore');
|
|
79
|
+
if (fs.existsSync(gitignorePath)) {
|
|
80
|
+
let content = fs.readFileSync(gitignorePath, 'utf8');
|
|
81
|
+
content = content.replace(/\.rnef\//g, '.rock/');
|
|
82
|
+
fs.writeFileSync(gitignorePath, content);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function renameRnefDirectory(projectRoot) {
|
|
86
|
+
const rnefPath = path.join(projectRoot, '.rnef');
|
|
87
|
+
const rockPath = path.join(projectRoot, '.rock');
|
|
88
|
+
if (fs.existsSync(rnefPath)) {
|
|
89
|
+
if (fs.existsSync(rockPath)) {
|
|
90
|
+
// If .rock already exists, remove it first
|
|
91
|
+
fs.rmSync(rockPath, { recursive: true, force: true });
|
|
92
|
+
}
|
|
93
|
+
fs.renameSync(rnefPath, rockPath);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function updateCacheFilenames(projectRoot) {
|
|
97
|
+
const cachePath = path.join(projectRoot, '.rock', 'cache', 'remote-build');
|
|
98
|
+
if (!fs.existsSync(cachePath)) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const files = fs.readdirSync(cachePath);
|
|
102
|
+
files.forEach((file) => {
|
|
103
|
+
if (file.includes('rnef')) {
|
|
104
|
+
const newName = file.replace(/rnef/g, 'rock');
|
|
105
|
+
const oldPath = path.join(cachePath, file);
|
|
106
|
+
const newPath = path.join(cachePath, newName);
|
|
107
|
+
fs.renameSync(oldPath, newPath);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
function renameAndUpdateConfig(projectRoot) {
|
|
112
|
+
const rnefConfigPath = path.join(projectRoot, 'rnef.config.mjs');
|
|
113
|
+
const rockConfigPath = path.join(projectRoot, 'rock.config.mjs');
|
|
114
|
+
if (fs.existsSync(rnefConfigPath)) {
|
|
115
|
+
let content = fs.readFileSync(rnefConfigPath, 'utf8');
|
|
116
|
+
// Replace package names
|
|
117
|
+
content = content.replace(/@rnef\//g, '@rock-js/');
|
|
118
|
+
content = content.replace(/@rnef\/cli/g, 'rock');
|
|
119
|
+
// Write to new file
|
|
120
|
+
fs.writeFileSync(rockConfigPath, content);
|
|
121
|
+
// Remove old file
|
|
122
|
+
fs.unlinkSync(rnefConfigPath);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
function updateAndroidBuildGradle(projectRoot) {
|
|
126
|
+
const filePath = path.join(projectRoot, 'android', 'app', 'build.gradle');
|
|
127
|
+
if (!fs.existsSync(filePath)) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
let content = fs.readFileSync(filePath, 'utf8');
|
|
131
|
+
content = content.replace(/@rnef\/cli\/dist\/src\/bin\.js/g, 'rock/dist/src/bin.js');
|
|
132
|
+
fs.writeFileSync(filePath, content);
|
|
133
|
+
}
|
|
134
|
+
function updatePodfile(projectRoot) {
|
|
135
|
+
const filePath = path.join(projectRoot, 'ios', 'Podfile');
|
|
136
|
+
if (!fs.existsSync(filePath)) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
let content = fs.readFileSync(filePath, 'utf8');
|
|
140
|
+
content = content.replace(/rnef/g, 'rock');
|
|
141
|
+
fs.writeFileSync(filePath, content);
|
|
142
|
+
}
|
|
143
|
+
function updateAndroidSettingsGradle(projectRoot) {
|
|
144
|
+
const filePath = path.join(projectRoot, 'android', 'settings.gradle');
|
|
145
|
+
if (!fs.existsSync(filePath)) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
let content = fs.readFileSync(filePath, 'utf8');
|
|
149
|
+
content = content.replace(/rnef/g, 'rock');
|
|
150
|
+
fs.writeFileSync(filePath, content);
|
|
151
|
+
}
|
|
152
|
+
function updateXcodeProject(projectRoot) {
|
|
153
|
+
const iosPath = path.join(projectRoot, 'ios');
|
|
154
|
+
if (!fs.existsSync(iosPath)) {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
const xcodeProjectFolder = fs
|
|
158
|
+
.readdirSync(iosPath)
|
|
159
|
+
.find((file) => file.endsWith('.xcodeproj'));
|
|
160
|
+
if (!xcodeProjectFolder) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const xcodeProjectPath = path.join(iosPath, xcodeProjectFolder, 'project.pbxproj');
|
|
164
|
+
if (!fs.existsSync(xcodeProjectPath)) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
let content = fs.readFileSync(xcodeProjectPath, 'utf8');
|
|
168
|
+
content = content.replace(/@rnef\/cli/g, 'rock');
|
|
169
|
+
fs.writeFileSync(xcodeProjectPath, content);
|
|
170
|
+
}
|
|
171
|
+
function updatePackageJsonScripts(projectRoot) {
|
|
172
|
+
const packageJsonPath = path.join(projectRoot, 'package.json');
|
|
173
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
let content = fs.readFileSync(packageJsonPath, 'utf8');
|
|
177
|
+
content = content.replace(/rnef/g, 'rock');
|
|
178
|
+
fs.writeFileSync(packageJsonPath, content);
|
|
179
|
+
}
|
|
180
|
+
async function addDevDependencies(projectRoot, pkgManager, packages) {
|
|
181
|
+
const argsByManager = {
|
|
182
|
+
npm: ['install', '-D', ...packages],
|
|
183
|
+
pnpm: ['add', '-D', ...packages],
|
|
184
|
+
yarn: ['add', '-D', ...packages],
|
|
185
|
+
bun: ['add', '-D', ...packages],
|
|
186
|
+
};
|
|
187
|
+
const args = argsByManager[pkgManager] ?? ['install', '-D', ...packages];
|
|
188
|
+
await spawn(pkgManager, args, { cwd: projectRoot });
|
|
189
|
+
}
|
|
190
|
+
async function removeDependencies(projectRoot, pkgManager, packages) {
|
|
191
|
+
const argsByManager = {
|
|
192
|
+
npm: ['remove', ...packages],
|
|
193
|
+
pnpm: ['remove', ...packages],
|
|
194
|
+
yarn: ['remove', ...packages],
|
|
195
|
+
bun: ['remove', ...packages],
|
|
196
|
+
};
|
|
197
|
+
const args = argsByManager[pkgManager] ?? ['remove', ...packages];
|
|
198
|
+
try {
|
|
199
|
+
await spawn(pkgManager, args, { cwd: projectRoot });
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
logger.debug(error.message, 'Continuing with the rest of the steps\n');
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
export { migrateRnefProject };
|
|
206
|
+
//# sourceMappingURL=migrateRnefProject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrateRnefProject.js","sourceRoot":"","sources":["../../../../src/lib/utils/migrateRnefProject.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/package-json.ts"],"names":[],"mappings":"AAGA,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAczD;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,QAoC1E"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
export function mergePackageJsons(from, to) {
|
|
4
|
+
const src = JSON.parse(fs.readFileSync(from, 'utf-8'));
|
|
5
|
+
if (!fs.existsSync(to)) {
|
|
6
|
+
fs.copyFileSync(from, to);
|
|
7
|
+
}
|
|
8
|
+
const dist = JSON.parse(fs.readFileSync(to, 'utf-8'));
|
|
9
|
+
// @todo consider adding a warning when src keys are different from dist keys
|
|
10
|
+
dist.scripts = { ...dist.scripts, ...src.scripts };
|
|
11
|
+
dist.dependencies = { ...dist.dependencies, ...src.dependencies };
|
|
12
|
+
dist.devDependencies = { ...dist.devDependencies, ...src.devDependencies };
|
|
13
|
+
dist.peerDependencies = { ...dist.peerDependencies, ...src.peerDependencies };
|
|
14
|
+
fs.writeFileSync(to, JSON.stringify(dist, null, 2));
|
|
15
|
+
}
|
|
16
|
+
export function rewritePackageJson(projectPath, packageName) {
|
|
17
|
+
const packageJsonPath = path.join(projectPath, 'package.json');
|
|
18
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
22
|
+
// Override fields from template
|
|
23
|
+
packageJson.name = packageName;
|
|
24
|
+
packageJson.version = '1.0.0';
|
|
25
|
+
packageJson.private = true;
|
|
26
|
+
delete packageJson.publishConfig;
|
|
27
|
+
if (packageJson.dependencies) {
|
|
28
|
+
packageJson.dependencies = Object.fromEntries(Object.entries(packageJson.dependencies).sort());
|
|
29
|
+
}
|
|
30
|
+
if (packageJson.devDependencies) {
|
|
31
|
+
packageJson.devDependencies = Object.fromEntries(Object.entries(packageJson.devDependencies).sort());
|
|
32
|
+
}
|
|
33
|
+
if (packageJson.peerDependencies) {
|
|
34
|
+
packageJson.peerDependencies = Object.fromEntries(Object.entries(packageJson.peerDependencies).sort());
|
|
35
|
+
}
|
|
36
|
+
fs.writeFileSync(packageJsonPath, JSON.stringify(sortPackageJson(packageJson), null, 2));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Sort fields in package.json to make it cleaner.
|
|
40
|
+
* @param packageJson
|
|
41
|
+
* @returns
|
|
42
|
+
*/
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
44
|
+
function sortPackageJson(packageJson) {
|
|
45
|
+
const { name, version, private: privateValue, scripts, dependencies, devDependencies, peerDependencies, ...rest } = packageJson;
|
|
46
|
+
const result = {};
|
|
47
|
+
setField(result, 'name', name);
|
|
48
|
+
setField(result, 'version', version);
|
|
49
|
+
setField(result, 'private', privateValue);
|
|
50
|
+
setField(result, 'scripts', scripts);
|
|
51
|
+
setField(result, 'dependencies', dependencies);
|
|
52
|
+
setField(result, 'devDependencies', devDependencies);
|
|
53
|
+
setField(result, 'peerDependencies', peerDependencies);
|
|
54
|
+
for (const key in rest) {
|
|
55
|
+
result[key] = rest[key];
|
|
56
|
+
}
|
|
57
|
+
return result;
|
|
58
|
+
}
|
|
59
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
60
|
+
function setField(packageJson, key, value) {
|
|
61
|
+
if (value !== undefined) {
|
|
62
|
+
packageJson[key] = value;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=package-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../../../src/lib/utils/package-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type CliOptions = {
|
|
2
|
+
name?: string;
|
|
3
|
+
template?: string;
|
|
4
|
+
platforms?: string[];
|
|
5
|
+
plugins?: string[];
|
|
6
|
+
bundler?: string;
|
|
7
|
+
help: boolean;
|
|
8
|
+
version: boolean;
|
|
9
|
+
dir?: string;
|
|
10
|
+
override: boolean;
|
|
11
|
+
remoteCacheProvider?: string | undefined | false;
|
|
12
|
+
install: boolean;
|
|
13
|
+
};
|
|
14
|
+
export declare function parseCliOptions(argv: string[]): CliOptions;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-cli-options.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/parse-cli-options.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAeF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAoB1D"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import minimist from 'minimist';
|
|
2
|
+
export function parseCliOptions(argv) {
|
|
3
|
+
const options = minimist(argv, {
|
|
4
|
+
alias: { h: 'help', v: 'version', p: 'platform', t: 'template', d: 'dir' },
|
|
5
|
+
boolean: ['help', 'version', 'override', 'install'],
|
|
6
|
+
string: ['template', 'platform', 'dir', 'plugin', 'bundler'],
|
|
7
|
+
});
|
|
8
|
+
return {
|
|
9
|
+
name: options._[0],
|
|
10
|
+
template: ensureOptionalString(options.template),
|
|
11
|
+
platforms: ensureOpitonalArray(options.platform),
|
|
12
|
+
plugins: ensureOpitonalArray(options.plugin),
|
|
13
|
+
bundler: options.bundler,
|
|
14
|
+
help: options.help,
|
|
15
|
+
version: options.version,
|
|
16
|
+
dir: ensureOptionalString(options.dir),
|
|
17
|
+
override: options.override,
|
|
18
|
+
remoteCacheProvider: options['remote-cache-provider'],
|
|
19
|
+
install: options.install,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function ensureOptionalString(value) {
|
|
23
|
+
if (value == undefined) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
// Last element of the array wins
|
|
27
|
+
return Array.isArray(value) ? value[value.length - 1] : value;
|
|
28
|
+
}
|
|
29
|
+
function ensureOpitonalArray(value) {
|
|
30
|
+
if (value == undefined) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
return Array.isArray(value) ? value : [value];
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=parse-cli-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-cli-options.js","sourceRoot":"","sources":["../../../../src/lib/utils/parse-cli-options.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AA6BhC,MAAM,UAAU,eAAe,CAAC,IAAc;IAC5C,MAAM,OAAO,GAAG,QAAQ,CAAkB,IAAI,EAAE;QAC9C,KAAK,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE;QAC1E,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC;QACnD,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;KAC7D,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,QAAQ,EAAE,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC;QAChD,SAAS,EAAE,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC;QAChD,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;QAC5C,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,GAAG,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC;QACtC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,mBAAmB,EAAE,OAAO,CAAC,uBAAuB,CAAsB;QAC1E,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAoC;IAEpC,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,iCAAiC;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAChE,CAAC;AAED,SAAS,mBAAmB,CAAI,KAA0B;IACxD,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type PackageInfo = {
|
|
2
|
+
packageName: string;
|
|
3
|
+
targetDir: string;
|
|
4
|
+
};
|
|
5
|
+
export declare function parsePackageInfo(input: string): PackageInfo;
|
|
6
|
+
export type PackageManagerInfo = {
|
|
7
|
+
name: string;
|
|
8
|
+
version: string;
|
|
9
|
+
};
|
|
10
|
+
export declare function parsePackageManagerFromUserAgent(userAgent: string | undefined): PackageManagerInfo | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/parsers.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAS3D;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,kBAAkB,GAAG,SAAS,CAYhC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
export function parsePackageInfo(input) {
|
|
3
|
+
const targetDir = input.trim().replace(/\/+$/g, '');
|
|
4
|
+
return {
|
|
5
|
+
packageName: targetDir.startsWith('@')
|
|
6
|
+
? targetDir
|
|
7
|
+
: path.basename(targetDir),
|
|
8
|
+
targetDir,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export function parsePackageManagerFromUserAgent(userAgent) {
|
|
12
|
+
if (!userAgent) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
const pkgSpec = userAgent.split(' ')[0];
|
|
16
|
+
const pkgSpecArr = pkgSpec.split('/');
|
|
17
|
+
return {
|
|
18
|
+
name: pkgSpecArr[0],
|
|
19
|
+
version: pkgSpecArr[1],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=parsers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../../../src/lib/utils/parsers.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAEpD,OAAO;QACL,WAAW,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;YACpC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC5B,SAAS;KACV,CAAC;AACJ,CAAC;AAOD,MAAM,UAAU,gCAAgC,CAC9C,SAA6B;IAE7B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEtC,OAAO;QACL,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;QACnB,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;KACvB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function validateProjectName(name: string): string | undefined;
|
|
2
|
+
/**
|
|
3
|
+
* Transform project name to PascalCase. The input name can be in either kebab-case or PascalCase.
|
|
4
|
+
*
|
|
5
|
+
* @param name - Project name
|
|
6
|
+
* @returns PascalCase project name
|
|
7
|
+
*/
|
|
8
|
+
export declare function normalizeProjectName(name: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-name.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/project-name.ts"],"names":[],"mappings":"AA8DA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,sBAe/C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,UAQhD"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Allow for alphanumeric, hyphen (kebab-case), and underscore (_).
|
|
3
|
+
* Has to start with a letter.
|
|
4
|
+
*/
|
|
5
|
+
const NAME_REGEX = /^[A-Z][0-9A-Z_-]*$/i;
|
|
6
|
+
// ref: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
|
|
7
|
+
const javaKeywords = [
|
|
8
|
+
'abstract',
|
|
9
|
+
'continue',
|
|
10
|
+
'for',
|
|
11
|
+
'new',
|
|
12
|
+
'switch',
|
|
13
|
+
'assert',
|
|
14
|
+
'default',
|
|
15
|
+
'goto',
|
|
16
|
+
'package',
|
|
17
|
+
'synchronized',
|
|
18
|
+
'boolean',
|
|
19
|
+
'do',
|
|
20
|
+
'if',
|
|
21
|
+
'private',
|
|
22
|
+
'this',
|
|
23
|
+
'break',
|
|
24
|
+
'double',
|
|
25
|
+
'implements',
|
|
26
|
+
'protected',
|
|
27
|
+
'throw',
|
|
28
|
+
'byte',
|
|
29
|
+
'else',
|
|
30
|
+
'import',
|
|
31
|
+
'public',
|
|
32
|
+
'throws',
|
|
33
|
+
'case',
|
|
34
|
+
'enum',
|
|
35
|
+
'instanceof',
|
|
36
|
+
'return',
|
|
37
|
+
'transient',
|
|
38
|
+
'catch',
|
|
39
|
+
'extends',
|
|
40
|
+
'int',
|
|
41
|
+
'short',
|
|
42
|
+
'try',
|
|
43
|
+
'char',
|
|
44
|
+
'final',
|
|
45
|
+
'interface',
|
|
46
|
+
'static',
|
|
47
|
+
'void',
|
|
48
|
+
'class',
|
|
49
|
+
'finally',
|
|
50
|
+
'long',
|
|
51
|
+
'strictfp',
|
|
52
|
+
'volatile',
|
|
53
|
+
'const',
|
|
54
|
+
'float',
|
|
55
|
+
'native',
|
|
56
|
+
'super',
|
|
57
|
+
'while',
|
|
58
|
+
];
|
|
59
|
+
const reservedNames = ['react', 'react-native', ...javaKeywords];
|
|
60
|
+
export function validateProjectName(name) {
|
|
61
|
+
if (name.length === 0) {
|
|
62
|
+
return 'Project name cannot be empty.';
|
|
63
|
+
}
|
|
64
|
+
if (!name.match(NAME_REGEX)) {
|
|
65
|
+
return `Invalid project name: "${name}". Please use a valid identifier name (alphanumeric, hyphen, underscore).`;
|
|
66
|
+
}
|
|
67
|
+
const lowerCaseName = name.toLowerCase();
|
|
68
|
+
if (reservedNames.includes(lowerCaseName)) {
|
|
69
|
+
return `Invalid project name: "${name}". Can't use reserved name. Please use another name.`;
|
|
70
|
+
}
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Transform project name to PascalCase. The input name can be in either kebab-case or PascalCase.
|
|
75
|
+
*
|
|
76
|
+
* @param name - Project name
|
|
77
|
+
* @returns PascalCase project name
|
|
78
|
+
*/
|
|
79
|
+
export function normalizeProjectName(name) {
|
|
80
|
+
if (!name)
|
|
81
|
+
return '';
|
|
82
|
+
return name
|
|
83
|
+
.split('-')
|
|
84
|
+
.filter(Boolean)
|
|
85
|
+
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
86
|
+
.join('');
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=project-name.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-name.js","sourceRoot":"","sources":["../../../../src/lib/utils/project-name.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAEzC,gFAAgF;AAChF,MAAM,YAAY,GAAG;IACnB,UAAU;IACV,UAAU;IACV,KAAK;IACL,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,MAAM;IACN,SAAS;IACT,cAAc;IACd,SAAS;IACT,IAAI;IACJ,IAAI;IACJ,SAAS;IACT,MAAM;IACN,OAAO;IACP,QAAQ;IACR,YAAY;IACZ,WAAW;IACX,OAAO;IACP,MAAM;IACN,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,MAAM;IACN,YAAY;IACZ,QAAQ;IACR,WAAW;IACX,OAAO;IACP,SAAS;IACT,KAAK;IACL,OAAO;IACP,KAAK;IACL,MAAM;IACN,OAAO;IACP,WAAW;IACX,QAAQ;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,MAAM;IACN,UAAU;IACV,UAAU;IACV,OAAO;IACP,OAAO;IACP,QAAQ;IACR,OAAO;IACP,OAAO;CACR,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC,CAAC;AAEjE,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,+BAA+B,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,0BAA0B,IAAI,2EAA2E,CAAC;IACnH,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACzC,IAAI,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1C,OAAO,0BAA0B,IAAI,sDAAsD,CAAC;IAC9F,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,OAAO,IAAI;SACR,KAAK,CAAC,GAAG,CAAC;SACV,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC3D,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type SupportedRemoteCacheProviders } from '@rock-js/tools';
|
|
2
|
+
import type { TemplateInfo } from '../templates.js';
|
|
3
|
+
export declare function printHelpMessage(templates: TemplateInfo[], platforms: TemplateInfo[]): void;
|
|
4
|
+
export declare function printVersionMessage(): void;
|
|
5
|
+
export declare function printWelcomeMessage(): void;
|
|
6
|
+
export declare function printByeMessage(targetDir: string, pkgManager: string, installDeps: boolean): void;
|
|
7
|
+
export declare function promptProjectName(name?: string): Promise<string>;
|
|
8
|
+
export declare function promptTemplate(templates: TemplateInfo[]): Promise<TemplateInfo>;
|
|
9
|
+
export declare function promptPlatforms(platforms: TemplateInfo[]): Promise<TemplateInfo[]>;
|
|
10
|
+
export declare function promptPlugins(plugins: TemplateInfo[]): Promise<TemplateInfo[] | null>;
|
|
11
|
+
export declare function promptBundlers(bundlers: TemplateInfo[]): Promise<TemplateInfo>;
|
|
12
|
+
export declare function promptRemoteCacheProvider(): Promise<SupportedRemoteCacheProviders | null>;
|
|
13
|
+
export declare function confirmOverrideFiles(targetDir: string): Promise<boolean>;
|
|
14
|
+
export declare function promptInstallDependencies(): Promise<boolean>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,KAAK,6BAA6B,EACnC,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIpD,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,YAAY,EAAE,EACzB,SAAS,EAAE,YAAY,EAAE,QAwB1B;AAED,wBAAgB,mBAAmB,SAElC;AAED,wBAAgB,mBAAmB,SAGlC;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,OAAO,QAgBrB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMhE;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,YAAY,EAAE,GACxB,OAAO,CAAC,YAAY,CAAC,CAavB;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,YAAY,EAAE,GACxB,OAAO,CAAC,YAAY,EAAE,CAAC,CAkBzB;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,YAAY,EAAE,GACtB,OAAO,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,CAchC;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,YAAY,EAAE,GACvB,OAAO,CAAC,YAAY,CAAC,CAcvB;AAED,wBAAgB,yBAAyB,IAAI,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAazF;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,oBAMrD;AAED,wBAAgB,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAM5D"}
|