create-gui 8.3.0 → 8.3.2
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/dist/cjs/create-gui-constants.js +5 -0
- package/dist/cjs/create-gui-constants.js.map +1 -0
- package/dist/cjs/helpers/asciiArts.js +43 -0
- package/dist/cjs/helpers/asciiArts.js.map +1 -0
- package/dist/cjs/helpers/cloneStarter.js +192 -0
- package/dist/cjs/helpers/cloneStarter.js.map +1 -0
- package/dist/cjs/helpers/getProjectName.js +46 -0
- package/dist/cjs/helpers/getProjectName.js.map +1 -0
- package/dist/cjs/helpers/getTemplateInfo.js +31 -0
- package/dist/cjs/helpers/getTemplateInfo.js.map +1 -0
- package/dist/cjs/helpers/installDependencies.js +26 -0
- package/dist/cjs/helpers/installDependencies.js.map +1 -0
- package/dist/cjs/helpers/rainbowChalk.js +20 -0
- package/dist/cjs/helpers/rainbowChalk.js.map +1 -0
- package/dist/cjs/helpers/validateNpmPackage.js +16 -0
- package/dist/cjs/helpers/validateNpmPackage.js.map +1 -0
- package/dist/cjs/here.js +6 -0
- package/dist/cjs/here.js.map +1 -0
- package/dist/cjs/index.js +165 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/manifest.js +8 -0
- package/dist/cjs/manifest.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/steps/expo-router.js +18 -0
- package/dist/cjs/steps/expo-router.js.map +1 -0
- package/dist/cjs/steps/remix.js +22 -0
- package/dist/cjs/steps/remix.js.map +1 -0
- package/dist/cjs/steps/starter-free.js +35 -0
- package/dist/cjs/steps/starter-free.js.map +1 -0
- package/dist/cjs/steps/takeout.js +174 -0
- package/dist/cjs/steps/takeout.js.map +1 -0
- package/dist/cjs/steps/types.js +3 -0
- package/dist/cjs/steps/types.js.map +1 -0
- package/dist/cjs/templates.js +97 -0
- package/dist/cjs/templates.js.map +1 -0
- package/dist/esm/create-gui-constants.js +2 -0
- package/dist/esm/create-gui-constants.js.map +1 -0
- package/dist/esm/helpers/asciiArts.js +39 -0
- package/dist/esm/helpers/asciiArts.js.map +1 -0
- package/dist/esm/helpers/cloneStarter.js +187 -0
- package/dist/esm/helpers/cloneStarter.js.map +1 -0
- package/dist/esm/helpers/getProjectName.js +41 -0
- package/dist/esm/helpers/getProjectName.js.map +1 -0
- package/dist/esm/helpers/getTemplateInfo.js +26 -0
- package/dist/esm/helpers/getTemplateInfo.js.map +1 -0
- package/dist/esm/helpers/installDependencies.js +22 -0
- package/dist/esm/helpers/installDependencies.js.map +1 -0
- package/dist/esm/helpers/rainbowChalk.js +15 -0
- package/dist/esm/helpers/rainbowChalk.js.map +1 -0
- package/dist/esm/helpers/validateNpmPackage.js +12 -0
- package/dist/esm/helpers/validateNpmPackage.js.map +1 -0
- package/dist/esm/here.js +3 -0
- package/dist/esm/here.js.map +1 -0
- package/dist/esm/index.js +162 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/manifest.js +5 -0
- package/dist/esm/manifest.js.map +1 -0
- package/dist/esm/steps/expo-router.js +15 -0
- package/dist/esm/steps/expo-router.js.map +1 -0
- package/dist/esm/steps/remix.js +19 -0
- package/dist/esm/steps/remix.js.map +1 -0
- package/dist/esm/steps/starter-free.js +32 -0
- package/dist/esm/steps/starter-free.js.map +1 -0
- package/dist/esm/steps/takeout.js +171 -0
- package/dist/esm/steps/takeout.js.map +1 -0
- package/dist/esm/steps/types.js +2 -0
- package/dist/esm/steps/types.js.map +1 -0
- package/dist/esm/templates.js +93 -0
- package/dist/esm/templates.js.map +1 -0
- package/package.json +38 -30
- package/src/create-gui-constants.ts +1 -0
- package/src/helpers/asciiArts.ts +49 -0
- package/src/helpers/cloneStarter.ts +220 -0
- package/src/helpers/getProjectName.ts +48 -0
- package/src/helpers/getTemplateInfo.ts +34 -0
- package/src/helpers/installDependencies.ts +23 -0
- package/src/helpers/rainbowChalk.ts +17 -0
- package/src/helpers/validateNpmPackage.ts +16 -0
- package/src/here.cjs.ts +3 -0
- package/src/here.ts +2 -0
- package/src/index.ts +223 -0
- package/src/manifest.ts +10 -0
- package/src/steps/expo-router.ts +20 -0
- package/src/steps/remix.ts +24 -0
- package/src/steps/starter-free.ts +40 -0
- package/src/steps/takeout.ts +210 -0
- package/src/steps/types.ts +5 -0
- package/src/templates.ts +116 -0
- package/types/create-gui-constants.d.ts +2 -0
- package/types/create-gui-constants.d.ts.map +1 -0
- package/types/helpers/asciiArts.d.ts +5 -0
- package/types/helpers/asciiArts.d.ts.map +1 -0
- package/types/helpers/cloneStarter.d.ts +3 -0
- package/types/helpers/cloneStarter.d.ts.map +1 -0
- package/types/helpers/getProjectName.d.ts +2 -0
- package/types/helpers/getProjectName.d.ts.map +1 -0
- package/types/helpers/getTemplateInfo.d.ts +3 -0
- package/types/helpers/getTemplateInfo.d.ts.map +1 -0
- package/types/helpers/installDependencies.d.ts +2 -0
- package/types/helpers/installDependencies.d.ts.map +1 -0
- package/types/helpers/rainbowChalk.d.ts +3 -0
- package/types/helpers/rainbowChalk.d.ts.map +1 -0
- package/types/helpers/validateNpmPackage.d.ts +5 -0
- package/types/helpers/validateNpmPackage.d.ts.map +1 -0
- package/types/here.d.ts +2 -0
- package/types/here.d.ts.map +1 -0
- package/types/index.d.ts +3 -0
- package/types/index.d.ts.map +1 -0
- package/types/manifest.d.ts +5 -0
- package/types/manifest.d.ts.map +1 -0
- package/types/steps/expo-router.d.ts +4 -0
- package/types/steps/expo-router.d.ts.map +1 -0
- package/types/steps/remix.d.ts +4 -0
- package/types/steps/remix.d.ts.map +1 -0
- package/types/steps/starter-free.d.ts +4 -0
- package/types/steps/starter-free.d.ts.map +1 -0
- package/types/steps/takeout.d.ts +4 -0
- package/types/steps/takeout.d.ts.map +1 -0
- package/types/steps/types.d.ts +6 -0
- package/types/steps/types.d.ts.map +1 -0
- package/types/templates.d.ts +16 -0
- package/types/templates.d.ts.map +1 -0
- package/dist/index.cjs +0 -929
- package/dist/index.native.js +0 -930
- package/run.js +0 -12
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
5
|
+
const packageManager = 'bun';
|
|
6
|
+
const runCommand = (scriptName) => `${packageManager} run ${scriptName}`;
|
|
7
|
+
const main = async ({ isFullClone, projectName }) => {
|
|
8
|
+
if (isFullClone) {
|
|
9
|
+
console.info(`
|
|
10
|
+
${chalk_1.default.green.bold('Done!')} created a new project under ./${projectName}
|
|
11
|
+
|
|
12
|
+
visit your project:
|
|
13
|
+
${chalk_1.default.green('cd')} ${projectName}
|
|
14
|
+
`);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
exports.default = main;
|
|
18
|
+
//# sourceMappingURL=expo-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expo-router.js","sourceRoot":"","sources":["../../../src/steps/expo-router.ts"],"names":[],"mappings":";;;AAAA,0DAAyB;AAIzB,MAAM,cAAc,GAAG,KAAK,CAAA;AAE5B,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,GAAG,cAAc,QAAQ,UAAU,EAAE,CAAA;AAEhF,MAAM,IAAI,GAAe,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;IAC9D,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC;IACb,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,kCAAkC,WAAW;;;IAGtE,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW;CACnC,CAAC,CAAA;IACA,CAAC;AACH,CAAC,CAAA;kBAEc,IAAI"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
5
|
+
const packageManager = 'bun';
|
|
6
|
+
const runCommand = (scriptName) => `${packageManager} run ${scriptName}`;
|
|
7
|
+
const main = async ({ isFullClone, projectName }) => {
|
|
8
|
+
if (isFullClone) {
|
|
9
|
+
console.info(`
|
|
10
|
+
${chalk_1.default.green.bold('Done!')} created a new project under ./${projectName}
|
|
11
|
+
|
|
12
|
+
visit your project:
|
|
13
|
+
${chalk_1.default.green('cd')} ${projectName}
|
|
14
|
+
`);
|
|
15
|
+
}
|
|
16
|
+
console.info(`
|
|
17
|
+
To start the Remix development server, run:
|
|
18
|
+
${chalk_1.default.green(runCommand('dev'))}
|
|
19
|
+
`);
|
|
20
|
+
};
|
|
21
|
+
exports.default = main;
|
|
22
|
+
//# sourceMappingURL=remix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remix.js","sourceRoot":"","sources":["../../../src/steps/remix.ts"],"names":[],"mappings":";;;AAAA,0DAAyB;AAIzB,MAAM,cAAc,GAAG,KAAK,CAAA;AAE5B,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,GAAG,cAAc,QAAQ,UAAU,EAAE,CAAA;AAEhF,MAAM,IAAI,GAAe,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;IAC9D,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC;IACb,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,kCAAkC,WAAW;;;IAGtE,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW;CACnC,CAAC,CAAA;IACA,CAAC;IACD,OAAO,CAAC,IAAI,CAAC;;MAET,eAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;CACnC,CAAC,CAAA;AACF,CAAC,CAAA;kBAEc,IAAI"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
5
|
+
const packageManager = 'bun';
|
|
6
|
+
const runCommand = (scriptName) => `${packageManager} run ${scriptName}`;
|
|
7
|
+
const main = async ({ isFullClone, projectName }) => {
|
|
8
|
+
console.info(`Note: you need bun for this repo.`);
|
|
9
|
+
if (isFullClone) {
|
|
10
|
+
console.info(`${chalk_1.default.green.bold('Done!')} created a new project under ./${projectName}
|
|
11
|
+
|
|
12
|
+
visit your project:
|
|
13
|
+
${chalk_1.default.green('cd')} ${projectName}
|
|
14
|
+
`);
|
|
15
|
+
}
|
|
16
|
+
console.info(`
|
|
17
|
+
To start the Next.js development server, run:
|
|
18
|
+
${chalk_1.default.green(runCommand('web'))}
|
|
19
|
+
|
|
20
|
+
To start Expo Go for mobile development, run:
|
|
21
|
+
${chalk_1.default.green(runCommand('native'))}
|
|
22
|
+
|
|
23
|
+
You can also create Expo development builds by doing:
|
|
24
|
+
|
|
25
|
+
${chalk_1.default.green(`cd apps/expo`)}
|
|
26
|
+
then:
|
|
27
|
+
${chalk_1.default.green(runCommand('ios'))}
|
|
28
|
+
or...
|
|
29
|
+
${chalk_1.default.green(runCommand('android'))}
|
|
30
|
+
|
|
31
|
+
Be sure to replace yourprojectsname in app.json with the uid you'd like for your app.
|
|
32
|
+
`);
|
|
33
|
+
};
|
|
34
|
+
exports.default = main;
|
|
35
|
+
//# sourceMappingURL=starter-free.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"starter-free.js","sourceRoot":"","sources":["../../../src/steps/starter-free.ts"],"names":[],"mappings":";;;AAAA,0DAAyB;AAIzB,MAAM,cAAc,GAAG,KAAK,CAAA;AAE5B,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,EAAE,CAAC,GAAG,cAAc,QAAQ,UAAU,EAAE,CAAA;AAEhF,MAAM,IAAI,GAAe,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;IAC9D,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;IAEjD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,IAAI,CAC9B,OAAO,CACR,kCAAkC,WAAW;;;IAG9C,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW;CACnC,CAAC,CAAA;IACA,CAAC;IACD,OAAO,CAAC,IAAI,CAAC;;MAET,eAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;;;MAG9B,eAAK,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;;;;MAIjC,eAAK,CAAC,KAAK,CAAC,cAAc,CAAC;;MAE3B,eAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;;MAE9B,eAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;;;CAGvC,CAAC,CAAA;AACF,CAAC,CAAA;kBAEc,IAAI"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const node_child_process_1 = require("node:child_process");
|
|
5
|
+
const node_fs_1 = require("node:fs");
|
|
6
|
+
const promises_1 = tslib_1.__importDefault(require("node:fs/promises"));
|
|
7
|
+
const node_path_1 = tslib_1.__importDefault(require("node:path"));
|
|
8
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
9
|
+
const prompts_1 = tslib_1.__importDefault(require("prompts"));
|
|
10
|
+
const asciiArts_ts_1 = require("../helpers/asciiArts.js");
|
|
11
|
+
const packageManager = 'bun';
|
|
12
|
+
const runCommand = (scriptName) => `${packageManager} run ${scriptName}`;
|
|
13
|
+
const main = async ({ isFullClone, projectName, projectPath }) => {
|
|
14
|
+
console.info(`
|
|
15
|
+
${asciiArts_ts_1.hanzoguiRainbowAsciiArt
|
|
16
|
+
.split('\n')
|
|
17
|
+
.map((line) => ` ${line}`)
|
|
18
|
+
.join('\n')}
|
|
19
|
+
${asciiArts_ts_1.takeoutAsciiArt}
|
|
20
|
+
|
|
21
|
+
`);
|
|
22
|
+
console.info();
|
|
23
|
+
const { setupSupabase } = await (0, prompts_1.default)({
|
|
24
|
+
name: 'setupSupabase',
|
|
25
|
+
message: 'Set up Supabase?',
|
|
26
|
+
type: 'confirm',
|
|
27
|
+
initial: true,
|
|
28
|
+
});
|
|
29
|
+
if (setupSupabase) {
|
|
30
|
+
console.info();
|
|
31
|
+
const { startLocalSupabase } = await (0, prompts_1.default)({
|
|
32
|
+
name: 'startLocalSupabase',
|
|
33
|
+
type: 'confirm',
|
|
34
|
+
message: 'Start local Supabase instance for you? (Requires Docker)',
|
|
35
|
+
initial: true,
|
|
36
|
+
});
|
|
37
|
+
if (startLocalSupabase) {
|
|
38
|
+
const supabaseStarted = await runRetryableCommand(`bun run supa start`);
|
|
39
|
+
if (supabaseStarted) {
|
|
40
|
+
console.info();
|
|
41
|
+
const { setUpSupabaseEnv } = await (0, prompts_1.default)({
|
|
42
|
+
name: 'setUpSupabaseEnv',
|
|
43
|
+
type: 'confirm',
|
|
44
|
+
message: 'Do you want us to add the local env variables for you? This will create a file called .env.local.',
|
|
45
|
+
initial: true,
|
|
46
|
+
});
|
|
47
|
+
if (setUpSupabaseEnv) {
|
|
48
|
+
const envs = getEnvFromSupabaseStatus((0, node_child_process_1.execSync)('bun run supa status').toString());
|
|
49
|
+
const newEnvContent = Object.entries(envs)
|
|
50
|
+
.map(([key, value]) => `${key}=${value}`)
|
|
51
|
+
.join('\n');
|
|
52
|
+
if ((0, node_fs_1.existsSync)(node_path_1.default.join(projectPath, '.env.local'))) {
|
|
53
|
+
if ((0, node_fs_1.readFileSync)(node_path_1.default.join(projectPath, '.env.local')).toString() !==
|
|
54
|
+
newEnvContent) {
|
|
55
|
+
(0, node_fs_1.renameSync)(node_path_1.default.join(projectPath, '.env.local'), node_path_1.default.join(projectPath, `.env.local.old-${Number(new Date())}`));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
await promises_1.default.writeFile(node_path_1.default.join(projectPath, './.env.local'), newEnvContent);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
console.info();
|
|
63
|
+
const { setupRemoteSupabase } = await (0, prompts_1.default)({
|
|
64
|
+
name: 'setupRemoteSupabase',
|
|
65
|
+
type: 'confirm',
|
|
66
|
+
message: 'Link remote Supabase instance for you? (Create a project on https://app.supabase.com/projects first)',
|
|
67
|
+
initial: true,
|
|
68
|
+
});
|
|
69
|
+
if (setupRemoteSupabase) {
|
|
70
|
+
await runRetryableCommand(`npx supabase login`);
|
|
71
|
+
console.info();
|
|
72
|
+
await linkSupabase();
|
|
73
|
+
// console.info()
|
|
74
|
+
// const { runSupabaseMigrations } = await prompts({ name: 'runSupabaseMigrations', type: 'confirm', message: 'Run Supabase migrations on your remote Supabase instance?' })
|
|
75
|
+
// if (runSupabaseMigrations) {
|
|
76
|
+
// execSync(`yarn supa migrate`, { stdio: 'inherit' })
|
|
77
|
+
// }
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (isFullClone) {
|
|
81
|
+
console.info(`
|
|
82
|
+
${chalk_1.default.green.bold('Done!')} created a new project under ./${projectName}
|
|
83
|
+
|
|
84
|
+
visit your project:
|
|
85
|
+
${chalk_1.default.green(' cd')} ${projectName}
|
|
86
|
+
`);
|
|
87
|
+
}
|
|
88
|
+
console.info(`
|
|
89
|
+
To start the Next.js development server, run:
|
|
90
|
+
${chalk_1.default.green(runCommand('web'))}
|
|
91
|
+
|
|
92
|
+
To start developing with Expo for native, run:
|
|
93
|
+
${chalk_1.default.green(runCommand('native'))}
|
|
94
|
+
|
|
95
|
+
To start developing for Expo dev build, run:
|
|
96
|
+
${chalk_1.default.green(runCommand('ios'))}
|
|
97
|
+
${chalk_1.default.green(runCommand('android'))}
|
|
98
|
+
|
|
99
|
+
To run Supabase scripts, cd into the supabase package:
|
|
100
|
+
${chalk_1.default.green('cd supabase')}
|
|
101
|
+
|
|
102
|
+
${chalk_1.default.green('yarn reset')} - Resets local database
|
|
103
|
+
${chalk_1.default.green('yarn generate')} - Generates new types
|
|
104
|
+
|
|
105
|
+
Find info on the rest of the scripts in ${chalk_1.default.cyan(`supabase/README.md`)}
|
|
106
|
+
|
|
107
|
+
If you've purchased and gained access to font and icon packages, you can run:
|
|
108
|
+
${chalk_1.default.green('yarn add:icon')}
|
|
109
|
+
${chalk_1.default.green('yarn add:font')}
|
|
110
|
+
`);
|
|
111
|
+
};
|
|
112
|
+
exports.default = main;
|
|
113
|
+
async function runRetryableCommand(cmd, retriesCount = 0) {
|
|
114
|
+
try {
|
|
115
|
+
(0, node_child_process_1.execSync)(cmd, { stdio: 'inherit' });
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
const { tryAgain } = await (0, prompts_1.default)({
|
|
120
|
+
name: 'tryAgain',
|
|
121
|
+
message: 'An error occurred. Do you want to try again?',
|
|
122
|
+
type: 'confirm',
|
|
123
|
+
initial: true,
|
|
124
|
+
});
|
|
125
|
+
if (tryAgain) {
|
|
126
|
+
await runRetryableCommand(cmd, retriesCount + 1);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
console.info(chalk_1.default.yellow(`⚠️ Skipping this step. You can try running this command later. The failed command was \`${chalk_1.default.underline(cmd)}\`.`));
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
async function linkSupabase() {
|
|
135
|
+
const { supabaseRefId } = await (0, prompts_1.default)({
|
|
136
|
+
name: 'supabaseRefId',
|
|
137
|
+
type: 'text',
|
|
138
|
+
message: "Enter your supabase project's ID (e.g. abcdefghijklmnopqrst)",
|
|
139
|
+
initial: true,
|
|
140
|
+
});
|
|
141
|
+
const cmd = `npx supabase link --project-ref ${supabaseRefId.trim()}`;
|
|
142
|
+
try {
|
|
143
|
+
(0, node_child_process_1.execSync)(cmd, {
|
|
144
|
+
stdio: 'inherit',
|
|
145
|
+
});
|
|
146
|
+
return true;
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
const { tryAgain } = await (0, prompts_1.default)({
|
|
150
|
+
name: 'tryAgain',
|
|
151
|
+
message: 'An error occurred. Do you want to try again?',
|
|
152
|
+
type: 'confirm',
|
|
153
|
+
initial: true,
|
|
154
|
+
});
|
|
155
|
+
if (tryAgain) {
|
|
156
|
+
await linkSupabase();
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
console.info(chalk_1.default.yellow(`⚠️ Skipping this step. You can try running this command later. The failed command was \`${chalk_1.default.underline(cmd)}\`.`));
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
function getEnvFromSupabaseStatus(status) {
|
|
165
|
+
return {
|
|
166
|
+
NEXT_PUBLIC_SUPABASE_URL: status.match(/API URL: (.*)/)?.[1],
|
|
167
|
+
NEXT_PUBLIC_SUPABASE_GRAPHQL_URL: status.match(/GraphQL URL: (.*)/)?.[1],
|
|
168
|
+
SUPABASE_DB_URL: status.match(/DB URL: (.*)/)?.[1],
|
|
169
|
+
NEXT_PUBLIC_SUPABASE_ANON_KEY: status.match(/anon key: (.*)/)?.[1],
|
|
170
|
+
SUPABASE_SERVICE_ROLE: status.match(/service_role key: (.*)/)?.[1],
|
|
171
|
+
SUPABASE_JWT_SECRET: status.match(/JWT secret: (.*)/)?.[1],
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=takeout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"takeout.js","sourceRoot":"","sources":["../../../src/steps/takeout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/steps/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.templates = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
6
|
+
const expo_router_ts_1 = tslib_1.__importDefault(require("./steps/expo-router.js"));
|
|
7
|
+
const remix_ts_1 = tslib_1.__importDefault(require("./steps/remix.js"));
|
|
8
|
+
const starter_free_ts_1 = tslib_1.__importDefault(require("./steps/starter-free.js"));
|
|
9
|
+
const takeout_ts_1 = tslib_1.__importDefault(require("./steps/takeout.js"));
|
|
10
|
+
exports.templates = [
|
|
11
|
+
{
|
|
12
|
+
title: `${chalk_1.default.bold.underline(`🥡 ${chalk_1.default.magenta('Takeout')} ${chalk_1.default.green('Free')}`)} - Full stack starter: https://hanzogui.dev/takeout`,
|
|
13
|
+
value: 'takeout-free',
|
|
14
|
+
type: 'free',
|
|
15
|
+
hidden: false,
|
|
16
|
+
packageManager: 'bun',
|
|
17
|
+
repo: {
|
|
18
|
+
url: `https://github.com/hanzogui/takeout-free`,
|
|
19
|
+
sshFallback: `git@github.com:hanzogui/takeout-free.git`,
|
|
20
|
+
dir: [],
|
|
21
|
+
branch: 'main',
|
|
22
|
+
},
|
|
23
|
+
extraSteps: starter_free_ts_1.default,
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
title: `${chalk_1.default.bold.underline(`🥡 ${chalk_1.default.magenta('Takeout')} ${chalk_1.default.red('Pro')}`)} - Full featured starter: https://hanzogui.dev/takeout`,
|
|
27
|
+
value: `takeout-pro`,
|
|
28
|
+
type: 'premium',
|
|
29
|
+
packageManager: 'yarn',
|
|
30
|
+
hidden: false,
|
|
31
|
+
repo: {
|
|
32
|
+
url: `https://github.com/hanzogui/takeout2`,
|
|
33
|
+
sshFallback: `git@github.com:hanzogui/takeout2.git`,
|
|
34
|
+
dir: [],
|
|
35
|
+
branch: 'main',
|
|
36
|
+
},
|
|
37
|
+
extraSteps: takeout_ts_1.default,
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
title: `${chalk_1.default.bold.underline(`🥡 ${chalk_1.default.magenta('Takeout')} ${chalk_1.default.yellow('Pro Classic')}`)} - Original Pro starter: https://hanzogui.dev/takeout`,
|
|
41
|
+
value: `takeout-pro-classic`,
|
|
42
|
+
type: 'premium',
|
|
43
|
+
packageManager: 'yarn',
|
|
44
|
+
hidden: false,
|
|
45
|
+
repo: {
|
|
46
|
+
url: `https://github.com/hanzogui/takeout`,
|
|
47
|
+
sshFallback: `git@github.com:hanzogui/takeout.git`,
|
|
48
|
+
dir: [],
|
|
49
|
+
branch: 'main',
|
|
50
|
+
},
|
|
51
|
+
extraSteps: takeout_ts_1.default,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
title: `Expo Router - Expo with file-based routing`,
|
|
55
|
+
value: 'expo-router',
|
|
56
|
+
type: 'free',
|
|
57
|
+
hidden: false,
|
|
58
|
+
packageManager: 'bun',
|
|
59
|
+
repo: {
|
|
60
|
+
url: `https://github.com/hanzoai/gui`,
|
|
61
|
+
sshFallback: `git@github.com:hanzoai/gui.git`,
|
|
62
|
+
dir: ['apps', 'starters', 'expo-router'],
|
|
63
|
+
branch: 'main',
|
|
64
|
+
},
|
|
65
|
+
extraSteps: expo_router_ts_1.default,
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
title: `Remix - Remix with Vite`,
|
|
69
|
+
value: 'remix',
|
|
70
|
+
type: 'free',
|
|
71
|
+
hidden: false,
|
|
72
|
+
packageManager: 'bun',
|
|
73
|
+
repo: {
|
|
74
|
+
url: `https://github.com/hanzoai/gui`,
|
|
75
|
+
sshFallback: `git@github.com:hanzoai/gui.git`,
|
|
76
|
+
dir: ['apps', 'starters', 'remix'],
|
|
77
|
+
branch: 'main',
|
|
78
|
+
},
|
|
79
|
+
extraSteps: remix_ts_1.default,
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
title: `Next + Expo - Production ready monorepo`,
|
|
83
|
+
value: 'starter-free',
|
|
84
|
+
type: 'free',
|
|
85
|
+
hidden: false,
|
|
86
|
+
packageManager: 'yarn',
|
|
87
|
+
repo: {
|
|
88
|
+
url: process.env.STARTER_FREE_REPO_SOURCE ||
|
|
89
|
+
`https://github.com/hanzogui/starter-free.git`,
|
|
90
|
+
sshFallback: `git@github.com:hanzogui/starter-free.git`,
|
|
91
|
+
dir: [],
|
|
92
|
+
branch: 'main',
|
|
93
|
+
},
|
|
94
|
+
extraSteps: starter_free_ts_1.default,
|
|
95
|
+
},
|
|
96
|
+
];
|
|
97
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-gui-constants.js","sourceRoot":"","sources":["../../src/create-gui-constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { rainbowColors } from './rainbowChalk.js';
|
|
3
|
+
export const hanzoguiAsciiArt = `▀█▀ ▄▀█ █▀▄▀█ ▄▀█ █▀▀ █ █ █
|
|
4
|
+
█ █▀█ █ ▀ █ █▀█ █▄█ █▄█ █`;
|
|
5
|
+
export const hanzoguiRainbowAsciiArt = (function () {
|
|
6
|
+
const char0_1 = chalk.hex(rainbowColors[0])('▀█▀');
|
|
7
|
+
const char0_2 = chalk.hex(rainbowColors[0])(' █ ');
|
|
8
|
+
const char1_1 = chalk.hex(rainbowColors[1])('▄▀█');
|
|
9
|
+
const char1_2 = chalk.hex(rainbowColors[1])('█▀█');
|
|
10
|
+
const char2_1 = chalk.hex(rainbowColors[2])('█▀▄▀█');
|
|
11
|
+
const char2_2 = chalk.hex(rainbowColors[2])('█ ▀ █');
|
|
12
|
+
const char3_1 = chalk.hex(rainbowColors[3])('▄▀█');
|
|
13
|
+
const char3_2 = chalk.hex(rainbowColors[3])('█▀█');
|
|
14
|
+
const char4_1 = chalk.hex(rainbowColors[4])('█▀▀');
|
|
15
|
+
const char4_2 = chalk.hex(rainbowColors[4])('█▄█');
|
|
16
|
+
const char5_1 = chalk.hex(rainbowColors[5])('█ █');
|
|
17
|
+
const char5_2 = chalk.hex(rainbowColors[5])('█▄█');
|
|
18
|
+
const char6_1 = chalk.hex(rainbowColors[6])('█');
|
|
19
|
+
const char6_2 = chalk.hex(rainbowColors[6])('█');
|
|
20
|
+
return `${char0_1} ${char1_1} ${char2_1} ${char3_1} ${char4_1} ${char5_1} ${char6_1}
|
|
21
|
+
${char0_2} ${char1_2} ${char2_2} ${char3_2} ${char4_2} ${char5_2} ${char6_2}
|
|
22
|
+
`;
|
|
23
|
+
})();
|
|
24
|
+
export const takeoutAsciiArt = `████████╗░█████╗░██╗░░██╗███████╗░█████╗░██╗░░░██╗████████╗
|
|
25
|
+
╚══██╔══╝██╔══██╗██║░██╔╝██╔════╝██╔══██╗██║░░░██║╚══██╔══╝
|
|
26
|
+
░░░██║░░░███████║█████═╝░█████╗░░██║░░██║██║░░░██║░░░██║░░░
|
|
27
|
+
░░░██║░░░██╔══██║██╔═██╗░██╔══╝░░██║░░██║██║░░░██║░░░██║░░░
|
|
28
|
+
░░░██║░░░██║░░██║██║░╚██╗███████╗╚█████╔╝╚██████╔╝░░░██║░░░
|
|
29
|
+
░░░╚═╝░░░╚═╝░░╚═╝╚═╝░░╚═╝╚══════╝░╚════╝░░╚═════╝░░░░╚═╝░░░`;
|
|
30
|
+
export const hanzoguiDuckAsciiArt = ` ████████████
|
|
31
|
+
██ ██
|
|
32
|
+
██ ██ ██████
|
|
33
|
+
██ ██ ██
|
|
34
|
+
██ ████████
|
|
35
|
+
██ ██
|
|
36
|
+
██ ████
|
|
37
|
+
██ ██
|
|
38
|
+
██ ██ `;
|
|
39
|
+
//# sourceMappingURL=asciiArts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asciiArts.js","sourceRoot":"","sources":["../../../src/helpers/asciiArts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,MAAM,CAAC,MAAM,gBAAgB,GAAG;4BACJ,CAAA;AAE5B,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAClD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAElD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAClD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAElD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IACpD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAEpD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAClD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAElD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAClD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAElD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAClD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAElD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAChD,OAAO,GAAG,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO;EACnF,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO;CAC1E,CAAA;AACD,CAAC,CAAC,EAAE,CAAA;AAEJ,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;4DAK6B,CAAA;AAE5D,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;+BAQL,CAAA"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { execSync } from 'node:child_process';
|
|
2
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import { copy, ensureDir, pathExists, remove } from 'fs-extra/esm';
|
|
7
|
+
import { rimraf } from 'rimraf';
|
|
8
|
+
import open from 'opener';
|
|
9
|
+
const exec = (cmd, options) => {
|
|
10
|
+
console.info(`$ `, cmd);
|
|
11
|
+
return execSync(cmd, {
|
|
12
|
+
stdio: process.env.DEBUG ? 'inherit' : 'ignore',
|
|
13
|
+
...options,
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
const hanzoguiDir = join(homedir(), '.hanzogui-repo-cache');
|
|
17
|
+
let targetGitDir = '';
|
|
18
|
+
export const cloneStarter = async (template, resolvedProjectPath, projectName) => {
|
|
19
|
+
targetGitDir = join(hanzoguiDir, 'hanzogui', template.repo.url.split('/').at(-1));
|
|
20
|
+
console.info();
|
|
21
|
+
await setupGuiDotDir(template);
|
|
22
|
+
const starterDir = join(targetGitDir, ...template.repo.dir);
|
|
23
|
+
console.info();
|
|
24
|
+
console.info(`Copying starter from ${starterDir} into ${chalk.blueBright(projectName)}...`);
|
|
25
|
+
console.info();
|
|
26
|
+
// if (!(await pathExists(starterDir))) {
|
|
27
|
+
// console.error(`Missing template for ${template.value} in ${starterDir}`)
|
|
28
|
+
// process.exit(1)
|
|
29
|
+
// }
|
|
30
|
+
await copy(starterDir, resolvedProjectPath);
|
|
31
|
+
await rimraf(`${resolvedProjectPath}/.git`);
|
|
32
|
+
// rewrite workspace:* versions to real published versions
|
|
33
|
+
rewriteWorkspaceVersions(resolvedProjectPath);
|
|
34
|
+
console.info(chalk.green(`${projectName} created!`));
|
|
35
|
+
console.info();
|
|
36
|
+
};
|
|
37
|
+
async function setupGuiDotDir(template) {
|
|
38
|
+
console.info(`Setting up ${chalk.blueBright(targetGitDir)}...`);
|
|
39
|
+
if (process.env.GITHUB_HEAD_REF) {
|
|
40
|
+
try {
|
|
41
|
+
execSync(`git switch -c ${process.env.GITHUB_HEAD_REF}`, {
|
|
42
|
+
cwd: targetGitDir,
|
|
43
|
+
stdio: 'ignore',
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// re-tries branch already exists
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const branch = template.repo.branch;
|
|
51
|
+
await ensureDir(hanzoguiDir);
|
|
52
|
+
const isInSubDir = template.repo.dir.length > 0;
|
|
53
|
+
const sourceGitRepo = template.repo.url;
|
|
54
|
+
const sourceGitRepoSshFallback = template.repo.sshFallback;
|
|
55
|
+
if (!(await pathExists(targetGitDir))) {
|
|
56
|
+
console.info(`Cloning hanzogui base directory`);
|
|
57
|
+
console.info();
|
|
58
|
+
const cmd = `git clone --branch ${branch} ${isInSubDir ? '--depth 1 --sparse --filter=blob:none ' : ''}${sourceGitRepo} "${targetGitDir}"`;
|
|
59
|
+
try {
|
|
60
|
+
try {
|
|
61
|
+
console.info(`$ ${cmd}`);
|
|
62
|
+
console.info();
|
|
63
|
+
exec(cmd);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (cmd.includes('https://')) {
|
|
67
|
+
console.info(`https failed - trying with ssh now...`);
|
|
68
|
+
const sshCmd = cmd.replace(sourceGitRepo, sourceGitRepoSshFallback);
|
|
69
|
+
console.info(`$ ${sshCmd}`);
|
|
70
|
+
console.info();
|
|
71
|
+
exec(sshCmd);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
throw error;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
if (error instanceof Error) {
|
|
80
|
+
if (template.value === 'takeout-pro' ||
|
|
81
|
+
template.value === 'takeout-pro-classic') {
|
|
82
|
+
if (error?.stderr?.includes('Repository not found')) {
|
|
83
|
+
console.info(chalk.yellow(`You don't have access to this starter. Check 🥡 Gui Takeout (https://hanzogui.dev/takeout) for more info.`));
|
|
84
|
+
open('https://hanzogui.dev/takeout');
|
|
85
|
+
process.exit(0);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
throw error;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
if (!(await pathExists(join(targetGitDir, '.git')))) {
|
|
94
|
+
console.error(`Corrupt Gui directory, please delete ${targetGitDir} and re-run`);
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (isInSubDir) {
|
|
99
|
+
const cmd = `git sparse-checkout set apps/starters`;
|
|
100
|
+
exec(cmd, { cwd: targetGitDir });
|
|
101
|
+
console.info();
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
const remoteName = getDefaultRemoteName();
|
|
105
|
+
if (await pathExists(join(targetGitDir, '.git'))) {
|
|
106
|
+
const cmd2 = `git pull --rebase --allow-unrelated-histories --depth 1 ${remoteName} ${branch}`;
|
|
107
|
+
// this can fail with "could not parse commit" but if you re-run it generally works
|
|
108
|
+
try {
|
|
109
|
+
exec(cmd2, {
|
|
110
|
+
cwd: targetGitDir,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
// so lets just retry on first failure at least
|
|
115
|
+
exec(cmd2, {
|
|
116
|
+
cwd: targetGitDir,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
console.info();
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
console.warn(`Warning: ${targetGitDir} is not a git repository. Skipping pull operation.`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
await remove(targetGitDir);
|
|
127
|
+
console.info(`Error updating: ${err.message} ${err.stack}`);
|
|
128
|
+
console.info(`We removed the old template cache, so re-running may fix. If not, please file an issue: https://github.com/hanzoai/gui/issues/new?assignees=&labels=&template=bug_report.md&title=`);
|
|
129
|
+
process.exit(1);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function rewriteWorkspaceVersions(projectPath) {
|
|
133
|
+
const pkgPath = join(projectPath, 'package.json');
|
|
134
|
+
try {
|
|
135
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
136
|
+
// if the copied project is itself a workspace root (e.g. takeout-pro copies
|
|
137
|
+
// the whole monorepo, packages/* included), leave `workspace:*` alone —
|
|
138
|
+
// bun/yarn/pnpm resolve it natively against the local packages. rewriting
|
|
139
|
+
// would point at versions that don't exist on npm.
|
|
140
|
+
if (pkg.workspaces) {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
// read create-gui's own version as the target
|
|
144
|
+
const ctPkgPath = require.resolve('create-gui/package.json');
|
|
145
|
+
const ctPkg = JSON.parse(readFileSync(ctPkgPath, 'utf-8'));
|
|
146
|
+
const version = `^${ctPkg.version}`;
|
|
147
|
+
let changed = false;
|
|
148
|
+
for (const field of ['dependencies', 'devDependencies']) {
|
|
149
|
+
const deps = pkg[field];
|
|
150
|
+
if (!deps)
|
|
151
|
+
continue;
|
|
152
|
+
for (const [key, val] of Object.entries(deps)) {
|
|
153
|
+
if (val === 'workspace:*') {
|
|
154
|
+
deps[key] = version;
|
|
155
|
+
changed = true;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (changed) {
|
|
160
|
+
writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
|
|
161
|
+
console.info(chalk.dim(` Rewrote workspace:* → ${version}`));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
// non-fatal, user can fix manually
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// Get the default remote name
|
|
169
|
+
const getDefaultRemoteName = () => {
|
|
170
|
+
try {
|
|
171
|
+
if (!pathExists(join(targetGitDir, '.git'))) {
|
|
172
|
+
console.warn('Warning: Not in a git repository. Using default remote name "origin".');
|
|
173
|
+
return 'origin';
|
|
174
|
+
}
|
|
175
|
+
const remotes = execSync('git remote', { cwd: targetGitDir })
|
|
176
|
+
.toString()
|
|
177
|
+
.trim()
|
|
178
|
+
.split('\n');
|
|
179
|
+
return remotes[0] || 'origin';
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
console.warn('Error getting default remote name:', error);
|
|
183
|
+
console.warn('Using default remote name "origin".');
|
|
184
|
+
return 'origin';
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
//# sourceMappingURL=cloneStarter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloneStarter.js","sourceRoot":"","sources":["../../../src/helpers/cloneStarter.ts"],"names":[],"mappings":"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"}
|