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.
Files changed (74) hide show
  1. package/README.md +67 -0
  2. package/dist/e2e/e2e.test.d.ts +1 -0
  3. package/dist/e2e/e2e.test.d.ts.map +1 -0
  4. package/dist/e2e/e2e.test.js +98 -0
  5. package/dist/e2e/e2e.test.js.map +1 -0
  6. package/dist/src/bin.d.ts +2 -0
  7. package/dist/src/bin.d.ts.map +1 -0
  8. package/dist/src/bin.js +10 -0
  9. package/dist/src/bin.js.map +1 -0
  10. package/dist/src/index.d.ts +1 -0
  11. package/dist/src/index.d.ts.map +1 -0
  12. package/dist/src/index.js +2 -0
  13. package/dist/src/index.js.map +1 -0
  14. package/dist/src/lib/bin.d.ts +4 -0
  15. package/dist/src/lib/bin.d.ts.map +1 -0
  16. package/dist/src/lib/bin.js +210 -0
  17. package/dist/src/lib/bin.js.map +1 -0
  18. package/dist/src/lib/steps/git-init.d.ts +3 -0
  19. package/dist/src/lib/steps/git-init.d.ts.map +1 -0
  20. package/dist/src/lib/steps/git-init.js +51 -0
  21. package/dist/src/lib/steps/git-init.js.map +1 -0
  22. package/dist/src/lib/templates.d.ts +23 -0
  23. package/dist/src/lib/templates.d.ts.map +1 -0
  24. package/dist/src/lib/templates.js +122 -0
  25. package/dist/src/lib/templates.js.map +1 -0
  26. package/dist/src/lib/utils/edit-template.d.ts +10 -0
  27. package/dist/src/lib/utils/edit-template.d.ts.map +1 -0
  28. package/dist/src/lib/utils/edit-template.js +48 -0
  29. package/dist/src/lib/utils/edit-template.js.map +1 -0
  30. package/dist/src/lib/utils/fs.d.ts +10 -0
  31. package/dist/src/lib/utils/fs.d.ts.map +1 -0
  32. package/dist/src/lib/utils/fs.js +49 -0
  33. package/dist/src/lib/utils/fs.js.map +1 -0
  34. package/dist/src/lib/utils/getPkgManager.d.ts +1 -0
  35. package/dist/src/lib/utils/getPkgManager.js +21 -0
  36. package/dist/src/lib/utils/getPkgManager.js.map +1 -0
  37. package/dist/src/lib/utils/initInExistingProject.d.ts +1 -0
  38. package/dist/src/lib/utils/initInExistingProject.js +243 -0
  39. package/dist/src/lib/utils/initInExistingProject.js.map +1 -0
  40. package/dist/src/lib/utils/isRnefProject.d.ts +1 -0
  41. package/dist/src/lib/utils/isRnefProject.js +2 -0
  42. package/dist/src/lib/utils/isRnefProject.js.map +1 -0
  43. package/dist/src/lib/utils/migrateRnefProject.d.ts +2 -0
  44. package/dist/src/lib/utils/migrateRnefProject.js +206 -0
  45. package/dist/src/lib/utils/migrateRnefProject.js.map +1 -0
  46. package/dist/src/lib/utils/package-json.d.ts +2 -0
  47. package/dist/src/lib/utils/package-json.d.ts.map +1 -0
  48. package/dist/src/lib/utils/package-json.js +65 -0
  49. package/dist/src/lib/utils/package-json.js.map +1 -0
  50. package/dist/src/lib/utils/parse-cli-options.d.ts +14 -0
  51. package/dist/src/lib/utils/parse-cli-options.d.ts.map +1 -0
  52. package/dist/src/lib/utils/parse-cli-options.js +35 -0
  53. package/dist/src/lib/utils/parse-cli-options.js.map +1 -0
  54. package/dist/src/lib/utils/parsers.d.ts +10 -0
  55. package/dist/src/lib/utils/parsers.d.ts.map +1 -0
  56. package/dist/src/lib/utils/parsers.js +22 -0
  57. package/dist/src/lib/utils/parsers.js.map +1 -0
  58. package/dist/src/lib/utils/project-name.d.ts +8 -0
  59. package/dist/src/lib/utils/project-name.d.ts.map +1 -0
  60. package/dist/src/lib/utils/project-name.js +88 -0
  61. package/dist/src/lib/utils/project-name.js.map +1 -0
  62. package/dist/src/lib/utils/prompts.d.ts +14 -0
  63. package/dist/src/lib/utils/prompts.d.ts.map +1 -0
  64. package/dist/src/lib/utils/prompts.js +141 -0
  65. package/dist/src/lib/utils/prompts.js.map +1 -0
  66. package/dist/src/lib/utils/tarball.d.ts +8 -0
  67. package/dist/src/lib/utils/tarball.d.ts.map +1 -0
  68. package/dist/src/lib/utils/tarball.js +47 -0
  69. package/dist/src/lib/utils/tarball.js.map +1 -0
  70. package/dist/src/lib/utils/version.d.ts +1 -0
  71. package/dist/src/lib/utils/version.d.ts.map +1 -0
  72. package/dist/src/lib/utils/version.js +18 -0
  73. package/dist/src/lib/utils/version.js.map +1 -0
  74. package/package.json +34 -6
@@ -0,0 +1,122 @@
1
+ import * as path from 'node:path';
2
+ import { resolveAbsolutePath } from '@rock-js/tools';
3
+ export const TEMPLATES = [
4
+ {
5
+ type: 'npm',
6
+ name: 'default',
7
+ packageName: '@rock-js/template-default',
8
+ version: 'latest',
9
+ directory: '.',
10
+ },
11
+ ];
12
+ export const PLUGINS = [
13
+ {
14
+ type: 'npm',
15
+ name: 'brownfield-ios',
16
+ packageName: '@rock-js/plugin-brownfield-ios',
17
+ version: 'latest',
18
+ directory: 'template',
19
+ importName: 'pluginBrownfieldIos',
20
+ },
21
+ {
22
+ type: 'npm',
23
+ name: 'brownfield-android',
24
+ packageName: '@rock-js/plugin-brownfield-android',
25
+ version: 'latest',
26
+ directory: 'template',
27
+ importName: 'pluginBrownfieldAndroid',
28
+ },
29
+ ];
30
+ export const BUNDLERS = [
31
+ {
32
+ type: 'npm',
33
+ name: 'metro',
34
+ packageName: '@rock-js/plugin-metro',
35
+ version: 'latest',
36
+ directory: 'template',
37
+ importName: 'pluginMetro',
38
+ },
39
+ {
40
+ type: 'npm',
41
+ name: 'repack',
42
+ packageName: '@rock-js/plugin-repack',
43
+ version: 'latest',
44
+ directory: 'template',
45
+ importName: 'pluginRepack',
46
+ },
47
+ ];
48
+ export const PLATFORMS = [
49
+ {
50
+ type: 'npm',
51
+ name: 'ios',
52
+ packageName: '@rock-js/platform-ios',
53
+ version: 'latest',
54
+ directory: 'template',
55
+ importName: 'platformIOS',
56
+ },
57
+ {
58
+ type: 'npm',
59
+ name: 'android',
60
+ packageName: '@rock-js/platform-android',
61
+ version: 'latest',
62
+ directory: 'template',
63
+ importName: 'platformAndroid',
64
+ },
65
+ ];
66
+ export function resolveTemplate(templates, name) {
67
+ // Check if the template is a template from the list
68
+ const templateFromList = templates.find((t) => t.name === name);
69
+ if (templateFromList) {
70
+ return templateFromList;
71
+ }
72
+ // Check filesystem paths: both folders and .tgz
73
+ if (name.startsWith('./') ||
74
+ name.startsWith('../') ||
75
+ name.startsWith('/') ||
76
+ name.startsWith('file:///')) {
77
+ if (name.startsWith('file://')) {
78
+ name = name.slice(7);
79
+ }
80
+ const basename = path.basename(name);
81
+ const ext = path.extname(basename);
82
+ return {
83
+ type: 'local',
84
+ name: basename.slice(0, basename.length - ext.length),
85
+ localPath: resolveAbsolutePath(name),
86
+ directory: '.',
87
+ packageName: basename.slice(0, basename.length - ext.length),
88
+ };
89
+ }
90
+ // @todo: handle cases when template is github repo url
91
+ // Otherwise, assume it's a npm package
92
+ return {
93
+ type: 'npm',
94
+ name: getNpmLibraryName(name),
95
+ packageName: getNpmLibraryName(name),
96
+ directory: '.',
97
+ version: getNpmLibraryVersion(name) ?? 'latest',
98
+ };
99
+ }
100
+ // handles `package@x.y.z` and `@scoped/package@x.y.z` package naming schemes
101
+ function getNpmLibraryVersion(name) {
102
+ const splitName = name.split('@');
103
+ if (splitName.length === 3 && splitName[0] === '') {
104
+ return splitName[2];
105
+ }
106
+ else if (splitName.length === 2 && splitName[0] !== '') {
107
+ return splitName[1];
108
+ }
109
+ return null;
110
+ }
111
+ // handles `package@x.y.z` and `@scoped/package@x.y.z` package naming schemes
112
+ function getNpmLibraryName(name) {
113
+ const splitName = name.split('@');
114
+ if (splitName.length === 3 && splitName[0] === '') {
115
+ return `@${splitName[1]}`;
116
+ }
117
+ else if (splitName.length === 2 && splitName[0] !== '') {
118
+ return splitName[0];
119
+ }
120
+ return name;
121
+ }
122
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/lib/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Rename common files that cannot be put into template literaly, e.g. .gitignore.
3
+ */
4
+ export declare function renameCommonFiles(projectPath: string): void;
5
+ /**
6
+ * Replace placeholder with project nae in whole template:
7
+ * - Rename paths containing placeholder
8
+ * - Replace placeholder in text files
9
+ */
10
+ export declare function replacePlaceholder(projectPath: string, normalizedName: string): void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-template.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/edit-template.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,QAOpD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,QAuBvB"}
@@ -0,0 +1,48 @@
1
+ import * as fs from 'node:fs';
2
+ import * as path from 'node:path';
3
+ import { renameFile, walkDirectory } from './fs.js';
4
+ /**
5
+ * Placeholder name used in template, that should be replaced with normalized project name.
6
+ */
7
+ const PLACEHOLDER_NAME = 'HelloWorld';
8
+ /**
9
+ * Rename common files that cannot be put into template literaly, e.g. .gitignore.
10
+ */
11
+ export function renameCommonFiles(projectPath) {
12
+ const sourceGitIgnorePath = path.join(projectPath, 'gitignore');
13
+ if (!fs.existsSync(sourceGitIgnorePath)) {
14
+ return;
15
+ }
16
+ fs.renameSync(sourceGitIgnorePath, path.join(projectPath, '.gitignore'));
17
+ }
18
+ /**
19
+ * Replace placeholder with project nae in whole template:
20
+ * - Rename paths containing placeholder
21
+ * - Replace placeholder in text files
22
+ */
23
+ export function replacePlaceholder(projectPath, normalizedName) {
24
+ if (normalizedName === PLACEHOLDER_NAME) {
25
+ return;
26
+ }
27
+ for (const filePath of walkDirectory(projectPath).reverse()) {
28
+ if (!fs.statSync(filePath).isDirectory()) {
29
+ replacePlaceholderInTextFile(filePath, normalizedName);
30
+ }
31
+ if (path.basename(filePath).includes(PLACEHOLDER_NAME)) {
32
+ renameFile(filePath, PLACEHOLDER_NAME, normalizedName);
33
+ }
34
+ else if (path.basename(filePath).includes(PLACEHOLDER_NAME.toLowerCase())) {
35
+ renameFile(filePath, PLACEHOLDER_NAME.toLowerCase(), normalizedName.toLowerCase());
36
+ }
37
+ }
38
+ }
39
+ function replacePlaceholderInTextFile(filePath, normalizedName) {
40
+ const fileContent = fs.readFileSync(filePath, 'utf8');
41
+ const replacedFileContent = fileContent
42
+ .replaceAll(PLACEHOLDER_NAME, normalizedName)
43
+ .replaceAll(PLACEHOLDER_NAME.toLowerCase(), normalizedName.toLowerCase());
44
+ if (fileContent !== replacedFileContent) {
45
+ fs.writeFileSync(filePath, replacedFileContent, 'utf8');
46
+ }
47
+ }
48
+ //# sourceMappingURL=edit-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-template.js","sourceRoot":"","sources":["../../../../src/lib/utils/edit-template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEpD;;GAEG;AACH,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAEtC;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAChE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACxC,OAAO;IACT,CAAC;IAED,EAAE,CAAC,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,WAAmB,EACnB,cAAsB;IAEtB,IAAI,cAAc,KAAK,gBAAgB,EAAE,CAAC;QACxC,OAAO;IACT,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5D,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACzC,4BAA4B,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACvD,UAAU,CAAC,QAAQ,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;QACzD,CAAC;aAAM,IACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAChE,CAAC;YACD,UAAU,CACR,QAAQ,EACR,gBAAgB,CAAC,WAAW,EAAE,EAC9B,cAAc,CAAC,WAAW,EAAE,CAC7B,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,4BAA4B,CACnC,QAAgB,EAChB,cAAsB;IAEtB,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,mBAAmB,GAAG,WAAW;SACpC,UAAU,CAAC,gBAAgB,EAAE,cAAc,CAAC;SAC5C,UAAU,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC;IAE5E,IAAI,WAAW,KAAK,mBAAmB,EAAE,CAAC;QACxC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare function isEmptyDirSync(path: string): boolean;
2
+ type CopyDirOptions = {
3
+ skipFiles?: string[];
4
+ };
5
+ export declare function copyDirSync(from: string, to: string, { skipFiles }?: CopyDirOptions): void;
6
+ export declare function removeDirSync(path: string): void;
7
+ export declare function walkDirectory(currentPath: string): string[];
8
+ export declare function renameFile(filePath: string, oldName: string, newName: string): void;
9
+ export declare function getNameWithoutExtension(filePath: string): string;
10
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils/fs.ts"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,WAG1C;AAED,KAAK,cAAc,GAAG;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,EAAE,SAAc,EAAE,GAAE,cAAmB,QAmBxC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,QAIzC;AAED,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAS3D;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,QAO5E;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,UAEvD"}
@@ -0,0 +1,49 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import nodePath from 'node:path';
4
+ import { mergePackageJsons } from './package-json.js';
5
+ export function isEmptyDirSync(path) {
6
+ const files = fs.readdirSync(path);
7
+ return files.length === 0 || (files.length === 1 && files[0] === '.git');
8
+ }
9
+ export function copyDirSync(from, to, { skipFiles = [] } = {}) {
10
+ fs.mkdirSync(to, { recursive: true });
11
+ for (const file of fs.readdirSync(from)) {
12
+ const srcFile = nodePath.resolve(from, file);
13
+ const stat = fs.statSync(srcFile);
14
+ const distFile = nodePath.resolve(to, file);
15
+ if (stat.isDirectory()) {
16
+ copyDirSync(srcFile, distFile, { skipFiles });
17
+ }
18
+ else {
19
+ if (nodePath.basename(srcFile) === 'package.json') {
20
+ mergePackageJsons(srcFile, distFile);
21
+ }
22
+ else {
23
+ fs.copyFileSync(srcFile, distFile);
24
+ }
25
+ }
26
+ }
27
+ }
28
+ export function removeDirSync(path) {
29
+ if (fs.existsSync(path)) {
30
+ fs.rmSync(path, { recursive: true });
31
+ }
32
+ }
33
+ export function walkDirectory(currentPath) {
34
+ if (!fs.lstatSync(currentPath).isDirectory()) {
35
+ return [currentPath];
36
+ }
37
+ const childPaths = fs
38
+ .readdirSync(currentPath)
39
+ .flatMap((childName) => walkDirectory(path.join(currentPath, childName)));
40
+ return [currentPath, ...childPaths];
41
+ }
42
+ export function renameFile(filePath, oldName, newName) {
43
+ const newFileName = nodePath.join(nodePath.dirname(filePath), nodePath.basename(filePath).replaceAll(oldName, newName));
44
+ fs.renameSync(filePath, newFileName);
45
+ }
46
+ export function getNameWithoutExtension(filePath) {
47
+ return path.basename(filePath, path.extname(filePath));
48
+ }
49
+ //# sourceMappingURL=fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../../src/lib/utils/fs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function getPkgManager(): string;
@@ -0,0 +1,21 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { parsePackageManagerFromUserAgent } from './parsers.js';
4
+ export function getPkgManager() {
5
+ const fromUserAgent = parsePackageManagerFromUserAgent(process.env['npm_config_user_agent']);
6
+ if (fromUserAgent) {
7
+ return fromUserAgent.name;
8
+ }
9
+ if (fs.existsSync(path.join(process.cwd(), 'pnpm-lock.yaml'))) {
10
+ return 'pnpm';
11
+ }
12
+ if (fs.existsSync(path.join(process.cwd(), 'yarn.lock'))) {
13
+ return 'yarn';
14
+ }
15
+ if (fs.existsSync(path.join(process.cwd(), 'bun.lockb')) ||
16
+ fs.existsSync(path.join(process.cwd(), 'bun.lock'))) {
17
+ return 'bun';
18
+ }
19
+ return 'npm';
20
+ }
21
+ //# sourceMappingURL=getPkgManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPkgManager.js","sourceRoot":"","sources":["../../../../src/lib/utils/getPkgManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,gCAAgC,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,UAAU,aAAa;IAC3B,MAAM,aAAa,GAAG,gCAAgC,CACpD,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CACrC,CAAC;IACF,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC,IAAI,CAAC;IAC5B,CAAC;IACD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;QAC9D,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IACE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QACpD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC,EACnD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function initInExistingProject(projectRoot: string): Promise<void>;
@@ -0,0 +1,243 @@
1
+ import fs from 'node:fs';
2
+ import { createRequire } from 'node:module';
3
+ import path from 'node:path';
4
+ import { color, colorLink, logger, note, outro, spawn, spinner, } from '@rock-js/tools';
5
+ import { getPkgManager } from './getPkgManager.js';
6
+ export async function initInExistingProject(projectRoot) {
7
+ const pkgManager = getPkgManager();
8
+ const loader = spinner();
9
+ // 1) Install Rock dev dependencies
10
+ const rockPackages = [
11
+ 'rock',
12
+ '@rock-js/plugin-metro',
13
+ '@rock-js/platform-android',
14
+ '@rock-js/platform-ios',
15
+ ];
16
+ loader.start(`Adding ${color.bold('Rock')} dependencies with ${color.bold(pkgManager)}`);
17
+ await addDevDependencies(projectRoot, pkgManager, rockPackages);
18
+ loader.stop(`Added ${color.bold('Rock')} dependencies`);
19
+ // 2) Remove community CLI deps
20
+ const rnCliPackages = [
21
+ '@react-native-community/cli',
22
+ '@react-native-community/cli-platform-android',
23
+ '@react-native-community/cli-platform-ios',
24
+ ];
25
+ loader.start(`Removing ${color.bold('React Native Community CLI')} packages`);
26
+ await removeDependencies(projectRoot, pkgManager, rnCliPackages);
27
+ loader.stop(`Removed ${color.bold('React Native Community CLI')} packages`);
28
+ // 3) Ensure .gitignore includes .rock/
29
+ loader.start(`Adding ${color.bold('.gitignore')} entry for .rock/`);
30
+ ensureGitignoreEntry(projectRoot, '.rock/');
31
+ loader.stop(`Added ${color.bold('.gitignore')} entry for .rock/`);
32
+ // 4) Generate rock.config.mjs (optionally migrate a bit from react-native.config.js)
33
+ loader.start(`Generating ${color.bold('rock.config.mjs')}`);
34
+ const platformArgs = readPlatformArgsFromReactNativeConfig(projectRoot);
35
+ createMigrationConfig(projectRoot, platformArgs);
36
+ loader.stop(`Generated ${color.bold('rock.config.mjs')}`);
37
+ const iosSourceDir = platformArgs.ios?.sourceDir ?? 'ios';
38
+ const androidSourceDir = platformArgs.android?.sourceDir ?? 'android';
39
+ // 5) Android file changes
40
+ loader.start(`Updating ${color.bold(`${androidSourceDir}/app/build.gradle`)} and ${color.bold(`${androidSourceDir}/settings.gradle`)}`);
41
+ updateAndroidBuildGradle(projectRoot, androidSourceDir);
42
+ updateAndroidSettingsGradle(projectRoot, androidSourceDir);
43
+ loader.stop(`Updated ${color.bold(`${androidSourceDir}/app/build.gradle`)} and ${color.bold(`${androidSourceDir}/settings.gradle`)}`);
44
+ // 6) Podfile changes
45
+ loader.start(`Updating ${color.bold(`${iosSourceDir}/Podfile`)}`);
46
+ updatePodfile(projectRoot, iosSourceDir);
47
+ loader.stop(`Updated ${color.bold(`${iosSourceDir}/Podfile`)}`);
48
+ // 7) Xcode project changes
49
+ loader.start(`Updating ${color.bold(`${iosSourceDir}/project.pbxproj`)}`);
50
+ updateXcodeProject(projectRoot, iosSourceDir);
51
+ loader.stop(`Updated ${color.bold(`${iosSourceDir}/project.pbxproj`)}`);
52
+ // 8) Update package.json scripts
53
+ loader.start(`Updating ${color.bold('package.json')} scripts`);
54
+ updatePackageJsonScripts(projectRoot);
55
+ loader.stop(`Updated ${color.bold('package.json')} scripts`);
56
+ note([
57
+ `1. Run ${color.bold('git diff')} to see the changes. Adjust as necessary e.g.:`,
58
+ ` - paths in monorepo`,
59
+ ` - commands in shell scripts`,
60
+ ` - commands in CI workflows`,
61
+ `2. Run the dev server as you would normally do`,
62
+ `3. Run iOS and Android apps as you would normally do`,
63
+ `4. Setup Remote Cache: ${colorLink('https://rockjs.dev/docs/configuration#remote-cache-configuration')}`,
64
+ ].join('\n'), 'Next steps');
65
+ outro('Success 🎉.');
66
+ }
67
+ function ensureGitignoreEntry(projectRoot, entry) {
68
+ const gitignorePath = path.join(projectRoot, '.gitignore');
69
+ if (fs.existsSync(gitignorePath) &&
70
+ !fs.readFileSync(gitignorePath, 'utf8').includes(entry)) {
71
+ fs.appendFileSync(gitignorePath, `\n# Rock\n${entry}\n`);
72
+ return;
73
+ }
74
+ }
75
+ function readPlatformArgsFromReactNativeConfig(projectRoot) {
76
+ const rnConfigPath = path.join(projectRoot, 'react-native.config.js');
77
+ if (!fs.existsSync(rnConfigPath)) {
78
+ return {};
79
+ }
80
+ try {
81
+ const require = createRequire(import.meta.url);
82
+ const rnConfig = require(rnConfigPath);
83
+ return { ios: rnConfig.project?.ios, android: rnConfig.project?.android };
84
+ }
85
+ catch {
86
+ return {};
87
+ }
88
+ }
89
+ function createMigrationConfig(projectRoot, platformArgs) {
90
+ const rockConfigPath = path.join(projectRoot, 'rock.config.mjs');
91
+ const iosArgs = platformArgs.ios
92
+ ? `({
93
+ ${Object.entries(platformArgs.ios)
94
+ .map(([key, value]) => `${key}: '${value}'`)
95
+ .join(',\n ')},
96
+ })`
97
+ : '()';
98
+ const androidArgs = platformArgs.android
99
+ ? `({
100
+ ${Object.entries(platformArgs.android)
101
+ .map(([key, value]) => `${key}: '${value}'`)
102
+ .join(',\n ')},
103
+ })`
104
+ : '()';
105
+ const content = `// @ts-check
106
+ import { platformIOS } from '@rock-js/platform-ios';
107
+ import { platformAndroid } from '@rock-js/platform-android';
108
+ import { pluginMetro } from '@rock-js/plugin-metro';
109
+
110
+ /** @type {import('rock').Config} */
111
+ export default {
112
+ bundler: pluginMetro(),
113
+ platforms: {
114
+ ios: platformIOS${iosArgs},
115
+ android: platformAndroid${androidArgs},
116
+ },
117
+ remoteCacheProvider: null,
118
+ };
119
+ `;
120
+ fs.writeFileSync(rockConfigPath, content);
121
+ }
122
+ function updateAndroidBuildGradle(projectRoot, sourceDir) {
123
+ const filePath = path.join(projectRoot, sourceDir, 'app', 'build.gradle');
124
+ if (!fs.existsSync(filePath)) {
125
+ return;
126
+ }
127
+ const desired = 'cliFile = file("../../node_modules/rock/dist/src/bin.js")';
128
+ const content = fs.readFileSync(filePath, 'utf8');
129
+ const replaced = content.replace(/\/\/\s+cliFile\s*=\s*file\([^)]*\)/g, desired);
130
+ if (!content.includes(desired) && replaced !== content) {
131
+ fs.writeFileSync(filePath, replaced);
132
+ return;
133
+ }
134
+ }
135
+ function updateAndroidSettingsGradle(projectRoot, sourceDir) {
136
+ const filePath = path.join(projectRoot, sourceDir, 'settings.gradle');
137
+ if (!fs.existsSync(filePath)) {
138
+ return;
139
+ }
140
+ const content = fs.readFileSync(filePath, 'utf8');
141
+ const target = "extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand(['npx', 'rock', 'config', '-p', 'android']) }";
142
+ let replaced = content.replace(/extensions\.configure\(com\.facebook\.react\.ReactSettingsExtension\)\{[^}]*autolinkLibrariesFromCommand\([^)]*\)[^}]*\}/gs, target);
143
+ if (replaced === content) {
144
+ // Try to replace only the inner call if block structure differs
145
+ replaced = content.replace(/autolinkLibrariesFromCommand\([^)]*\)/g, "autolinkLibrariesFromCommand(['npx', 'rock', 'config', '-p', 'android'])");
146
+ }
147
+ if (replaced !== content) {
148
+ fs.writeFileSync(filePath, replaced);
149
+ }
150
+ }
151
+ function updateXcodeProject(projectRoot, sourceDir) {
152
+ const toReplace = 'shellScript = "set -e\\n\\nWITH_ENVIRONMENT=\\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\\"\\nREACT_NATIVE_XCODE=\\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\\"\\n\\n/bin/sh -c \\"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\\"\\n";';
153
+ const expected = 'shellScript = "set -e\\nif [[ -f \\"$PODS_ROOT/../.xcode.env\\" ]]; then\\nsource \\"$PODS_ROOT/../.xcode.env\\"\\nfi\\nif [[ -f \\"$PODS_ROOT/../.xcode.env.local\\" ]]; then\\nsource \\"$PODS_ROOT/../.xcode.env.local\\"\\nfi\\nexport CONFIG_CMD=\\"dummy-workaround-value\\"\\nexport CLI_PATH=\\"$(\\"$NODE_BINARY\\" --print \\"require(\'path\').dirname(require.resolve(\'rock/package.json\')) + \'/dist/src/bin.js\'\\")\\"\\nWITH_ENVIRONMENT=\\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\\"\\n";';
154
+ const xcodeProjectFolder = fs
155
+ .readdirSync(path.join(projectRoot, sourceDir))
156
+ .find((file) => file.endsWith('.xcodeproj'));
157
+ const xcodeProjectPath = xcodeProjectFolder
158
+ ? path.join(projectRoot, sourceDir, xcodeProjectFolder, 'project.pbxproj')
159
+ : undefined;
160
+ if (!xcodeProjectPath) {
161
+ logger.debug(`No Xcode project found in ${sourceDir}`);
162
+ return;
163
+ }
164
+ const content = fs.readFileSync(xcodeProjectPath, 'utf8');
165
+ const replaced = content.replace(toReplace, expected);
166
+ if (replaced !== content) {
167
+ fs.writeFileSync(xcodeProjectPath, replaced);
168
+ }
169
+ else {
170
+ logger.warn(`Unable to update ${color.bold(xcodeProjectPath)}.
171
+ Please update the "Bundle React Native code and images" build phase manually with:
172
+ set -e
173
+ if [[ -f "$PODS_ROOT/../.xcode.env" ]]; then
174
+ source "$PODS_ROOT/../.xcode.env"
175
+ fi
176
+ if [[ -f "$PODS_ROOT/../.xcode.env.local" ]]; then
177
+ source "$PODS_ROOT/../.xcode.env.local"
178
+ fi
179
+ export CONFIG_CMD="dummy-workaround-value"
180
+ export CLI_PATH="$("$NODE_BINARY" --print "require('path').dirname(require.resolve('rock/package.json')) + '/dist/src/bin.js'")"
181
+ WITH_ENVIRONMENT="$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh"
182
+ `);
183
+ }
184
+ }
185
+ function updatePodfile(projectRoot, sourceDir) {
186
+ const filePath = path.join(projectRoot, sourceDir, 'Podfile');
187
+ if (!fs.existsSync(filePath)) {
188
+ return;
189
+ }
190
+ const content = fs.readFileSync(filePath, 'utf8');
191
+ const replaced = content.replace(/(config\s*=\s*use_native_modules!)(\s*)/g, "$1(['npx', 'rock', 'config', '-p', 'ios'])$2");
192
+ if (!content.includes(`(['npx', 'rock', 'config', '-p', 'ios'])`) &&
193
+ replaced !== content) {
194
+ fs.writeFileSync(filePath, replaced);
195
+ }
196
+ }
197
+ function updatePackageJsonScripts(projectRoot) {
198
+ const packageJsonPath = path.join(projectRoot, 'package.json');
199
+ if (!fs.existsSync(packageJsonPath)) {
200
+ return;
201
+ }
202
+ const content = fs.readFileSync(packageJsonPath, 'utf8');
203
+ const replaced = content
204
+ .replaceAll('react-native start', 'rock start')
205
+ .replaceAll('react-native run-android', 'rock run:android')
206
+ .replaceAll('react-native build-android', 'rock build:android')
207
+ .replaceAll('react-native run-ios', 'rock run:ios')
208
+ .replaceAll('react-native build-ios', 'rock build:ios')
209
+ .replaceAll(/run:android(.*)--mode(.*)/g, 'run:android$1--variant$2')
210
+ .replaceAll(/run:ios(.*)--mode(.*)/g, 'run:ios$1--configuration$2')
211
+ .replaceAll(/build:android(.*)--mode(.*)/g, 'build:android$1--variant$2')
212
+ .replaceAll(/build:ios(.*)--mode(.*)/g, 'build:ios$1--configuration$2')
213
+ .replaceAll('--appId', '--app-id')
214
+ .replaceAll('--appIdSuffix', '--app-id-suffix')
215
+ .replaceAll('--buildFolder', '--build-folder');
216
+ fs.writeFileSync(packageJsonPath, replaced);
217
+ }
218
+ async function addDevDependencies(projectRoot, pkgManager, packages) {
219
+ const argsByManager = {
220
+ npm: ['install', '-D', ...packages],
221
+ pnpm: ['add', '-D', ...packages],
222
+ yarn: ['add', '-D', ...packages],
223
+ bun: ['add', '-D', ...packages],
224
+ };
225
+ const args = argsByManager[pkgManager] ?? ['install', '-D', ...packages];
226
+ await spawn(pkgManager, args, { cwd: projectRoot });
227
+ }
228
+ async function removeDependencies(projectRoot, pkgManager, packages) {
229
+ const argsByManager = {
230
+ npm: ['remove', ...packages],
231
+ pnpm: ['remove', ...packages],
232
+ yarn: ['remove', ...packages],
233
+ bun: ['remove', ...packages],
234
+ };
235
+ const args = argsByManager[pkgManager] ?? ['remove', ...packages];
236
+ try {
237
+ await spawn(pkgManager, args, { cwd: projectRoot });
238
+ }
239
+ catch (error) {
240
+ logger.debug(error.message, 'Continuing with the rest of the steps\n');
241
+ }
242
+ }
243
+ //# sourceMappingURL=initInExistingProject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initInExistingProject.js","sourceRoot":"","sources":["../../../../src/lib/utils/initInExistingProject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=isRnefProject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isRnefProject.js","sourceRoot":"","sources":["../../../../src/lib/utils/isRnefProject.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ declare function migrateRnefProject(projectRoot: string): Promise<void>;
2
+ export { migrateRnefProject };