@apps-in-toss/cli 0.0.0-dev.1743134070910 → 0.0.0-dev.1744801739343
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/index.cjs +146 -69
- package/dist/index.js +147 -70
- package/package.json +2 -2
package/dist/index.cjs
CHANGED
|
@@ -2367,6 +2367,12 @@ var WEB_FRAMEWORK_CONFIG_TEMPLATE = `import { defineConfig } from '@apps-in-toss
|
|
|
2367
2367
|
|
|
2368
2368
|
export default defineConfig({
|
|
2369
2369
|
appName: '%%appName%%',
|
|
2370
|
+
brand: {
|
|
2371
|
+
displayName: '%%appName%%', // \uD654\uBA74\uC5D0 \uB178\uCD9C\uB420 \uC571\uC758 \uD55C\uAE00 \uC774\uB984\uC73C\uB85C \uBC14\uAFD4\uC8FC\uC138\uC694.
|
|
2372
|
+
primaryColor: '#3182F6', // \uD654\uBA74\uC5D0 \uB178\uCD9C\uB420 \uC571\uC758 \uAE30\uBCF8 \uC0C9\uC0C1\uC73C\uB85C \uBC14\uAFD4\uC8FC\uC138\uC694.
|
|
2373
|
+
icon: null, // \uD654\uBA74\uC5D0 \uB178\uCD9C\uB420 \uC571\uC758 \uC544\uC774\uCF58 \uC774\uBBF8\uC9C0 \uC8FC\uC18C\uB85C \uBC14\uAFD4\uC8FC\uC138\uC694.
|
|
2374
|
+
bridgeColorMode: 'basic',
|
|
2375
|
+
},
|
|
2370
2376
|
web: {
|
|
2371
2377
|
host: 'localhost',
|
|
2372
2378
|
port: %%webPort%%,
|
|
@@ -2379,6 +2385,47 @@ export default defineConfig({
|
|
|
2379
2385
|
outdir: 'dist',
|
|
2380
2386
|
});
|
|
2381
2387
|
`;
|
|
2388
|
+
var REACT_NATIVE_FRAMEWORK_CONFIG_TEMPLATE = `import { appsInToss } from '@apps-in-toss/framework/plugins';
|
|
2389
|
+
import { defineConfig } from 'react-native-bedrock/config';
|
|
2390
|
+
|
|
2391
|
+
export default defineConfig({
|
|
2392
|
+
appName: '%%appName%%',
|
|
2393
|
+
plugins: [
|
|
2394
|
+
appsInToss({
|
|
2395
|
+
brand: {
|
|
2396
|
+
displayName: '%%appName%%', // \uD654\uBA74\uC5D0 \uB178\uCD9C\uB420 \uC571\uC758 \uD55C\uAE00 \uC774\uB984\uC73C\uB85C \uBC14\uAFD4\uC8FC\uC138\uC694.
|
|
2397
|
+
primaryColor: '#3182F6', // \uD654\uBA74\uC5D0 \uB178\uCD9C\uB420 \uC571\uC758 \uAE30\uBCF8 \uC0C9\uC0C1\uC73C\uB85C \uBC14\uAFD4\uC8FC\uC138\uC694.
|
|
2398
|
+
icon: null, // \uD654\uBA74\uC5D0 \uB178\uCD9C\uB420 \uC571\uC758 \uC544\uC774\uCF58 \uC774\uBBF8\uC9C0 \uC8FC\uC18C\uB85C \uBC14\uAFD4\uC8FC\uC138\uC694.
|
|
2399
|
+
bridgeColorMode: 'basic',
|
|
2400
|
+
},
|
|
2401
|
+
permissions: [],
|
|
2402
|
+
}),
|
|
2403
|
+
],
|
|
2404
|
+
});
|
|
2405
|
+
`;
|
|
2406
|
+
var APP_TEMPLATE = `import { AppsInToss } from '@apps-in-toss/framework';
|
|
2407
|
+
import { PropsWithChildren } from 'react';
|
|
2408
|
+
import { InitialProps } from 'react-native-bedrock';
|
|
2409
|
+
import { context } from '../require.context';
|
|
2410
|
+
|
|
2411
|
+
function AppContainer({ children }: PropsWithChildren<InitialProps>) {
|
|
2412
|
+
return <>{children}</>;
|
|
2413
|
+
}
|
|
2414
|
+
|
|
2415
|
+
export default AppsInToss.registerApp(AppContainer, { context });
|
|
2416
|
+
`;
|
|
2417
|
+
|
|
2418
|
+
// src/utils/ensureSelect.ts
|
|
2419
|
+
init_cjs_shims();
|
|
2420
|
+
async function ensureSelect({
|
|
2421
|
+
value,
|
|
2422
|
+
prompt
|
|
2423
|
+
}) {
|
|
2424
|
+
if (value) {
|
|
2425
|
+
return value;
|
|
2426
|
+
}
|
|
2427
|
+
return await prompt();
|
|
2428
|
+
}
|
|
2382
2429
|
|
|
2383
2430
|
// src/utils/transformTemplate.ts
|
|
2384
2431
|
init_cjs_shims();
|
|
@@ -2392,13 +2439,48 @@ function transformTemplate(templateString, values) {
|
|
|
2392
2439
|
}
|
|
2393
2440
|
|
|
2394
2441
|
// src/InitCommand.ts
|
|
2395
|
-
async function templateWebFramework({
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2442
|
+
async function templateWebFramework({ appName, cwd, skipInput }) {
|
|
2443
|
+
const packageJson = await import_fs4.default.promises.readFile(import_path3.default.join(cwd, "package.json"), {
|
|
2444
|
+
encoding: "utf-8"
|
|
2445
|
+
});
|
|
2446
|
+
const scripts = JSON.parse(packageJson);
|
|
2447
|
+
const originalScripts = {
|
|
2448
|
+
dev: scripts?.scripts?.dev || scripts?.scripts?.start,
|
|
2449
|
+
build: scripts?.scripts?.build
|
|
2450
|
+
};
|
|
2451
|
+
scripts.scripts.dev = "bedrock dev";
|
|
2452
|
+
scripts.scripts.build = "bedrock build";
|
|
2453
|
+
scripts.scripts.deploy = "ait deploy";
|
|
2454
|
+
await import_fs4.default.promises.writeFile(import_path3.default.join(cwd, "package.json"), JSON.stringify(scripts, null, 2), {
|
|
2455
|
+
encoding: "utf-8"
|
|
2456
|
+
});
|
|
2457
|
+
p2.log.step(".gitignore \uD30C\uC77C\uC744 \uC5C5\uB370\uC774\uD2B8\uD558\uB294 \uC911...");
|
|
2458
|
+
await import_fs4.default.promises.appendFile(import_path3.default.join(cwd, ".gitignore"), "\n.bedrock\n");
|
|
2459
|
+
const placeholder = {
|
|
2460
|
+
dev: originalScripts.dev === "bedrock dev" ? "" : originalScripts.dev,
|
|
2461
|
+
build: originalScripts.build === "bedrock build" ? "" : originalScripts.build
|
|
2462
|
+
};
|
|
2463
|
+
const scriptInputs = skipInput ? placeholder : await p2.group(
|
|
2464
|
+
{
|
|
2465
|
+
dev: () => p2.text({
|
|
2466
|
+
message: "\uC6F9 \uBC88\uB4E4\uB7EC\uC758 dev \uBA85\uB839\uC5B4\uB97C \uC785\uB825\uD574\uC8FC\uC138\uC694.",
|
|
2467
|
+
defaultValue: placeholder.dev,
|
|
2468
|
+
placeholder: placeholder.dev
|
|
2469
|
+
}),
|
|
2470
|
+
build: () => p2.text({
|
|
2471
|
+
message: "\uC6F9 \uBC88\uB4E4\uB7EC\uC758 build \uBA85\uB839\uC5B4\uB97C \uC785\uB825\uD574\uC8FC\uC138\uC694.",
|
|
2472
|
+
defaultValue: placeholder.build,
|
|
2473
|
+
placeholder: placeholder.build
|
|
2474
|
+
})
|
|
2475
|
+
},
|
|
2476
|
+
{
|
|
2477
|
+
onCancel: () => {
|
|
2478
|
+
p2.cancel("\uCD08\uAE30\uD654\uAC00 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4");
|
|
2479
|
+
}
|
|
2480
|
+
}
|
|
2481
|
+
);
|
|
2400
2482
|
p2.log.step("bedrock.config.ts \uD30C\uC77C\uC744 \uC0DD\uC131\uD558\uB294 \uC911...");
|
|
2401
|
-
const webPort = await p2.text({
|
|
2483
|
+
const webPort = skipInput ? "5173" : await p2.text({
|
|
2402
2484
|
message: "Enter web port",
|
|
2403
2485
|
placeholder: "5173",
|
|
2404
2486
|
defaultValue: "5173"
|
|
@@ -2410,96 +2492,91 @@ async function templateWebFramework({
|
|
|
2410
2492
|
const config = transformTemplate(WEB_FRAMEWORK_CONFIG_TEMPLATE, {
|
|
2411
2493
|
appName,
|
|
2412
2494
|
webPort,
|
|
2413
|
-
webDevCommand:
|
|
2414
|
-
webBuildCommand:
|
|
2495
|
+
webDevCommand: scriptInputs.dev === "bedrock dev" ? "" : scriptInputs.dev,
|
|
2496
|
+
webBuildCommand: scriptInputs.build === "bedrock build" ? "" : scriptInputs.build
|
|
2415
2497
|
});
|
|
2416
2498
|
await import_fs4.default.promises.writeFile(import_path3.default.join(cwd, "bedrock.config.ts"), config, {
|
|
2417
2499
|
encoding: "utf-8"
|
|
2418
2500
|
});
|
|
2419
2501
|
}
|
|
2502
|
+
async function templateReactNative({ appName, cwd }) {
|
|
2503
|
+
p2.log.step("bedrock.config.ts \uD30C\uC77C\uC744 \uC0DD\uC131\uD558\uB294 \uC911...");
|
|
2504
|
+
const config = transformTemplate(REACT_NATIVE_FRAMEWORK_CONFIG_TEMPLATE, {
|
|
2505
|
+
appName
|
|
2506
|
+
});
|
|
2507
|
+
await import_fs4.default.promises.writeFile(import_path3.default.join(cwd, "bedrock.config.ts"), config, {
|
|
2508
|
+
encoding: "utf-8"
|
|
2509
|
+
});
|
|
2510
|
+
p2.log.step("src/_app.tsx \uD30C\uC77C\uC744 \uC0DD\uC131\uD558\uB294 \uC911...");
|
|
2511
|
+
await import_fs4.default.promises.writeFile(import_path3.default.join(cwd, "src", "_app.tsx"), APP_TEMPLATE, {
|
|
2512
|
+
encoding: "utf-8"
|
|
2513
|
+
});
|
|
2514
|
+
}
|
|
2420
2515
|
var InitCommand = class extends import_clipanion2.Command {
|
|
2421
2516
|
static paths = [[`init`]];
|
|
2517
|
+
template = import_clipanion2.Option.String("--template", { required: false });
|
|
2518
|
+
appName = import_clipanion2.Option.String("--app-name", { required: false });
|
|
2519
|
+
skipInput = import_clipanion2.Option.Boolean("--skip-input", { required: false, hidden: true });
|
|
2422
2520
|
async execute() {
|
|
2423
|
-
const template = await
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2521
|
+
const template = await ensureSelect({
|
|
2522
|
+
value: this.template,
|
|
2523
|
+
prompt: async () => p2.select({
|
|
2524
|
+
message: "\uD504\uB85C\uC81D\uD2B8\uB97C \uCD08\uAE30\uD654\uD560 \uD15C\uD50C\uB9BF\uC744 \uC120\uD0DD\uD574\uC8FC\uC138\uC694.",
|
|
2525
|
+
options: [
|
|
2526
|
+
{
|
|
2527
|
+
value: "web-framework",
|
|
2528
|
+
label: "\uC6F9 \uD504\uB808\uC784\uC6CC\uD06C",
|
|
2529
|
+
hint: "\uC6F9 \uD504\uB85C\uC81D\uD2B8\uC5D0 \uC571\uC778\uD1A0\uC2A4 \uC6F9\uBDF0 \uAC1C\uBC1C\uD658\uACBD\uC744 \uC138\uD305\uD569\uB2C8\uB2E4."
|
|
2530
|
+
},
|
|
2531
|
+
{
|
|
2532
|
+
value: "react-native",
|
|
2533
|
+
label: "React Native \uD504\uB808\uC784\uC6CC\uD06C (Bedrock)",
|
|
2534
|
+
hint: "Bedrock \uD504\uB85C\uC81D\uD2B8\uC5D0 \uC571\uC778\uD1A0\uC2A4 React Native\uC6A9 \uAC1C\uBC1C\uD658\uACBD\uC744 \uC138\uD305\uD569\uB2C8\uB2E4."
|
|
2535
|
+
}
|
|
2536
|
+
]
|
|
2537
|
+
})
|
|
2432
2538
|
});
|
|
2433
2539
|
if (p2.isCancel(template)) {
|
|
2434
2540
|
process.exit(0);
|
|
2435
2541
|
}
|
|
2436
2542
|
const cwd = getPackageRoot();
|
|
2437
2543
|
p2.intro("\u{1F680} \uC571 \uCD08\uAE30\uD654\uB97C \uC2DC\uC791\uD569\uB2C8\uB2E4");
|
|
2438
|
-
const appName = await
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2544
|
+
const appName = await ensureSelect({
|
|
2545
|
+
value: this.appName,
|
|
2546
|
+
prompt: async () => p2.text({
|
|
2547
|
+
message: "Enter app name",
|
|
2548
|
+
validate: (value) => {
|
|
2549
|
+
if (!value) {
|
|
2550
|
+
return "\uC571 \uC774\uB984\uC744 \uC785\uB825\uD574\uC8FC\uC138\uC694";
|
|
2551
|
+
}
|
|
2552
|
+
const kebabCaseValue = kebabCase(value);
|
|
2553
|
+
if (value !== kebabCaseValue) {
|
|
2554
|
+
return `\uC571 \uC774\uB984\uC740 \uCF00\uBC25-\uCF00\uC774\uC2A4 \uD615\uC2DD\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4 (\uC608\uC2DC: ${kebabCaseValue})`;
|
|
2555
|
+
}
|
|
2556
|
+
return;
|
|
2447
2557
|
}
|
|
2448
|
-
|
|
2449
|
-
}
|
|
2558
|
+
})
|
|
2450
2559
|
});
|
|
2451
2560
|
if (p2.isCancel(appName)) {
|
|
2452
2561
|
p2.cancel("\uCD08\uAE30\uD654\uAC00 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4");
|
|
2453
2562
|
return;
|
|
2454
2563
|
}
|
|
2455
2564
|
p2.log.step(`\uC571 \uC774\uB984\uC774 '${appName}'\uC73C\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4`);
|
|
2456
|
-
p2.log.step("package.json \uC2A4\uD06C\uB9BD\uD2B8\uB97C \uC124\uC815\uD558\uB294 \uC911...");
|
|
2457
|
-
const packageJson = await import_fs4.default.promises.readFile(import_path3.default.join(cwd, "package.json"), {
|
|
2458
|
-
encoding: "utf-8"
|
|
2459
|
-
});
|
|
2460
|
-
const scripts = JSON.parse(packageJson);
|
|
2461
|
-
const originalScripts = {
|
|
2462
|
-
dev: scripts?.scripts?.dev || scripts?.scripts?.start,
|
|
2463
|
-
build: scripts?.scripts?.build
|
|
2464
|
-
};
|
|
2465
|
-
scripts.scripts.dev = "bedrock dev";
|
|
2466
|
-
scripts.scripts.build = "bedrock build";
|
|
2467
|
-
scripts.scripts.deploy = "ait deploy";
|
|
2468
|
-
await import_fs4.default.promises.writeFile(import_path3.default.join(cwd, "package.json"), JSON.stringify(scripts, null, 2), {
|
|
2469
|
-
encoding: "utf-8"
|
|
2470
|
-
});
|
|
2471
|
-
p2.log.step(".gitignore \uD30C\uC77C\uC744 \uC5C5\uB370\uC774\uD2B8\uD558\uB294 \uC911...");
|
|
2472
|
-
await import_fs4.default.promises.appendFile(import_path3.default.join(cwd, ".gitignore"), "\n.bedrock\n");
|
|
2473
|
-
const placeholder = {
|
|
2474
|
-
dev: originalScripts.dev === "bedrock dev" ? "" : originalScripts.dev,
|
|
2475
|
-
build: originalScripts.build === "bedrock build" ? "" : originalScripts.build
|
|
2476
|
-
};
|
|
2477
|
-
const scriptInputs = await p2.group(
|
|
2478
|
-
{
|
|
2479
|
-
dev: () => p2.text({
|
|
2480
|
-
message: "\uC6F9 \uBC88\uB4E4\uB7EC\uC758 dev \uBA85\uB839\uC5B4\uB97C \uC785\uB825\uD574\uC8FC\uC138\uC694.",
|
|
2481
|
-
defaultValue: placeholder.dev,
|
|
2482
|
-
placeholder: placeholder.dev
|
|
2483
|
-
}),
|
|
2484
|
-
build: () => p2.text({
|
|
2485
|
-
message: "\uC6F9 \uBC88\uB4E4\uB7EC\uC758 build \uBA85\uB839\uC5B4\uB97C \uC785\uB825\uD574\uC8FC\uC138\uC694.",
|
|
2486
|
-
defaultValue: placeholder.build,
|
|
2487
|
-
placeholder: placeholder.build
|
|
2488
|
-
})
|
|
2489
|
-
},
|
|
2490
|
-
{
|
|
2491
|
-
onCancel: () => {
|
|
2492
|
-
p2.cancel("\uCD08\uAE30\uD654\uAC00 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4");
|
|
2493
|
-
}
|
|
2494
|
-
}
|
|
2495
|
-
);
|
|
2496
2565
|
switch (template) {
|
|
2497
2566
|
case "web-framework": {
|
|
2498
2567
|
await templateWebFramework({
|
|
2499
2568
|
appName,
|
|
2500
2569
|
cwd,
|
|
2501
|
-
|
|
2570
|
+
skipInput: this.skipInput ?? false
|
|
2571
|
+
});
|
|
2572
|
+
break;
|
|
2573
|
+
}
|
|
2574
|
+
case "react-native": {
|
|
2575
|
+
await templateReactNative({
|
|
2576
|
+
appName,
|
|
2577
|
+
cwd
|
|
2502
2578
|
});
|
|
2579
|
+
break;
|
|
2503
2580
|
}
|
|
2504
2581
|
}
|
|
2505
2582
|
p2.outro("\u2728 \uCD08\uAE30\uD654\uAC00 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4!");
|
package/dist/index.js
CHANGED
|
@@ -2338,7 +2338,7 @@ init_esm_shims();
|
|
|
2338
2338
|
import fs4 from "fs";
|
|
2339
2339
|
import path3 from "path";
|
|
2340
2340
|
import * as p2 from "@clack/prompts";
|
|
2341
|
-
import { Command as Command2 } from "clipanion";
|
|
2341
|
+
import { Command as Command2, Option as Option2 } from "clipanion";
|
|
2342
2342
|
|
|
2343
2343
|
// ../../.yarn/cache/es-toolkit-npm-1.32.0-019fc7c155-56ba965570.zip/node_modules/es-toolkit/dist/index.mjs
|
|
2344
2344
|
init_esm_shims();
|
|
@@ -2363,6 +2363,12 @@ var WEB_FRAMEWORK_CONFIG_TEMPLATE = `import { defineConfig } from '@apps-in-toss
|
|
|
2363
2363
|
|
|
2364
2364
|
export default defineConfig({
|
|
2365
2365
|
appName: '%%appName%%',
|
|
2366
|
+
brand: {
|
|
2367
|
+
displayName: '%%appName%%', // \uD654\uBA74\uC5D0 \uB178\uCD9C\uB420 \uC571\uC758 \uD55C\uAE00 \uC774\uB984\uC73C\uB85C \uBC14\uAFD4\uC8FC\uC138\uC694.
|
|
2368
|
+
primaryColor: '#3182F6', // \uD654\uBA74\uC5D0 \uB178\uCD9C\uB420 \uC571\uC758 \uAE30\uBCF8 \uC0C9\uC0C1\uC73C\uB85C \uBC14\uAFD4\uC8FC\uC138\uC694.
|
|
2369
|
+
icon: null, // \uD654\uBA74\uC5D0 \uB178\uCD9C\uB420 \uC571\uC758 \uC544\uC774\uCF58 \uC774\uBBF8\uC9C0 \uC8FC\uC18C\uB85C \uBC14\uAFD4\uC8FC\uC138\uC694.
|
|
2370
|
+
bridgeColorMode: 'basic',
|
|
2371
|
+
},
|
|
2366
2372
|
web: {
|
|
2367
2373
|
host: 'localhost',
|
|
2368
2374
|
port: %%webPort%%,
|
|
@@ -2375,6 +2381,47 @@ export default defineConfig({
|
|
|
2375
2381
|
outdir: 'dist',
|
|
2376
2382
|
});
|
|
2377
2383
|
`;
|
|
2384
|
+
var REACT_NATIVE_FRAMEWORK_CONFIG_TEMPLATE = `import { appsInToss } from '@apps-in-toss/framework/plugins';
|
|
2385
|
+
import { defineConfig } from 'react-native-bedrock/config';
|
|
2386
|
+
|
|
2387
|
+
export default defineConfig({
|
|
2388
|
+
appName: '%%appName%%',
|
|
2389
|
+
plugins: [
|
|
2390
|
+
appsInToss({
|
|
2391
|
+
brand: {
|
|
2392
|
+
displayName: '%%appName%%', // \uD654\uBA74\uC5D0 \uB178\uCD9C\uB420 \uC571\uC758 \uD55C\uAE00 \uC774\uB984\uC73C\uB85C \uBC14\uAFD4\uC8FC\uC138\uC694.
|
|
2393
|
+
primaryColor: '#3182F6', // \uD654\uBA74\uC5D0 \uB178\uCD9C\uB420 \uC571\uC758 \uAE30\uBCF8 \uC0C9\uC0C1\uC73C\uB85C \uBC14\uAFD4\uC8FC\uC138\uC694.
|
|
2394
|
+
icon: null, // \uD654\uBA74\uC5D0 \uB178\uCD9C\uB420 \uC571\uC758 \uC544\uC774\uCF58 \uC774\uBBF8\uC9C0 \uC8FC\uC18C\uB85C \uBC14\uAFD4\uC8FC\uC138\uC694.
|
|
2395
|
+
bridgeColorMode: 'basic',
|
|
2396
|
+
},
|
|
2397
|
+
permissions: [],
|
|
2398
|
+
}),
|
|
2399
|
+
],
|
|
2400
|
+
});
|
|
2401
|
+
`;
|
|
2402
|
+
var APP_TEMPLATE = `import { AppsInToss } from '@apps-in-toss/framework';
|
|
2403
|
+
import { PropsWithChildren } from 'react';
|
|
2404
|
+
import { InitialProps } from 'react-native-bedrock';
|
|
2405
|
+
import { context } from '../require.context';
|
|
2406
|
+
|
|
2407
|
+
function AppContainer({ children }: PropsWithChildren<InitialProps>) {
|
|
2408
|
+
return <>{children}</>;
|
|
2409
|
+
}
|
|
2410
|
+
|
|
2411
|
+
export default AppsInToss.registerApp(AppContainer, { context });
|
|
2412
|
+
`;
|
|
2413
|
+
|
|
2414
|
+
// src/utils/ensureSelect.ts
|
|
2415
|
+
init_esm_shims();
|
|
2416
|
+
async function ensureSelect({
|
|
2417
|
+
value,
|
|
2418
|
+
prompt
|
|
2419
|
+
}) {
|
|
2420
|
+
if (value) {
|
|
2421
|
+
return value;
|
|
2422
|
+
}
|
|
2423
|
+
return await prompt();
|
|
2424
|
+
}
|
|
2378
2425
|
|
|
2379
2426
|
// src/utils/transformTemplate.ts
|
|
2380
2427
|
init_esm_shims();
|
|
@@ -2388,13 +2435,48 @@ function transformTemplate(templateString, values) {
|
|
|
2388
2435
|
}
|
|
2389
2436
|
|
|
2390
2437
|
// src/InitCommand.ts
|
|
2391
|
-
async function templateWebFramework({
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2438
|
+
async function templateWebFramework({ appName, cwd, skipInput }) {
|
|
2439
|
+
const packageJson = await fs4.promises.readFile(path3.join(cwd, "package.json"), {
|
|
2440
|
+
encoding: "utf-8"
|
|
2441
|
+
});
|
|
2442
|
+
const scripts = JSON.parse(packageJson);
|
|
2443
|
+
const originalScripts = {
|
|
2444
|
+
dev: scripts?.scripts?.dev || scripts?.scripts?.start,
|
|
2445
|
+
build: scripts?.scripts?.build
|
|
2446
|
+
};
|
|
2447
|
+
scripts.scripts.dev = "bedrock dev";
|
|
2448
|
+
scripts.scripts.build = "bedrock build";
|
|
2449
|
+
scripts.scripts.deploy = "ait deploy";
|
|
2450
|
+
await fs4.promises.writeFile(path3.join(cwd, "package.json"), JSON.stringify(scripts, null, 2), {
|
|
2451
|
+
encoding: "utf-8"
|
|
2452
|
+
});
|
|
2453
|
+
p2.log.step(".gitignore \uD30C\uC77C\uC744 \uC5C5\uB370\uC774\uD2B8\uD558\uB294 \uC911...");
|
|
2454
|
+
await fs4.promises.appendFile(path3.join(cwd, ".gitignore"), "\n.bedrock\n");
|
|
2455
|
+
const placeholder = {
|
|
2456
|
+
dev: originalScripts.dev === "bedrock dev" ? "" : originalScripts.dev,
|
|
2457
|
+
build: originalScripts.build === "bedrock build" ? "" : originalScripts.build
|
|
2458
|
+
};
|
|
2459
|
+
const scriptInputs = skipInput ? placeholder : await p2.group(
|
|
2460
|
+
{
|
|
2461
|
+
dev: () => p2.text({
|
|
2462
|
+
message: "\uC6F9 \uBC88\uB4E4\uB7EC\uC758 dev \uBA85\uB839\uC5B4\uB97C \uC785\uB825\uD574\uC8FC\uC138\uC694.",
|
|
2463
|
+
defaultValue: placeholder.dev,
|
|
2464
|
+
placeholder: placeholder.dev
|
|
2465
|
+
}),
|
|
2466
|
+
build: () => p2.text({
|
|
2467
|
+
message: "\uC6F9 \uBC88\uB4E4\uB7EC\uC758 build \uBA85\uB839\uC5B4\uB97C \uC785\uB825\uD574\uC8FC\uC138\uC694.",
|
|
2468
|
+
defaultValue: placeholder.build,
|
|
2469
|
+
placeholder: placeholder.build
|
|
2470
|
+
})
|
|
2471
|
+
},
|
|
2472
|
+
{
|
|
2473
|
+
onCancel: () => {
|
|
2474
|
+
p2.cancel("\uCD08\uAE30\uD654\uAC00 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4");
|
|
2475
|
+
}
|
|
2476
|
+
}
|
|
2477
|
+
);
|
|
2396
2478
|
p2.log.step("bedrock.config.ts \uD30C\uC77C\uC744 \uC0DD\uC131\uD558\uB294 \uC911...");
|
|
2397
|
-
const webPort = await p2.text({
|
|
2479
|
+
const webPort = skipInput ? "5173" : await p2.text({
|
|
2398
2480
|
message: "Enter web port",
|
|
2399
2481
|
placeholder: "5173",
|
|
2400
2482
|
defaultValue: "5173"
|
|
@@ -2406,96 +2488,91 @@ async function templateWebFramework({
|
|
|
2406
2488
|
const config = transformTemplate(WEB_FRAMEWORK_CONFIG_TEMPLATE, {
|
|
2407
2489
|
appName,
|
|
2408
2490
|
webPort,
|
|
2409
|
-
webDevCommand:
|
|
2410
|
-
webBuildCommand:
|
|
2491
|
+
webDevCommand: scriptInputs.dev === "bedrock dev" ? "" : scriptInputs.dev,
|
|
2492
|
+
webBuildCommand: scriptInputs.build === "bedrock build" ? "" : scriptInputs.build
|
|
2411
2493
|
});
|
|
2412
2494
|
await fs4.promises.writeFile(path3.join(cwd, "bedrock.config.ts"), config, {
|
|
2413
2495
|
encoding: "utf-8"
|
|
2414
2496
|
});
|
|
2415
2497
|
}
|
|
2498
|
+
async function templateReactNative({ appName, cwd }) {
|
|
2499
|
+
p2.log.step("bedrock.config.ts \uD30C\uC77C\uC744 \uC0DD\uC131\uD558\uB294 \uC911...");
|
|
2500
|
+
const config = transformTemplate(REACT_NATIVE_FRAMEWORK_CONFIG_TEMPLATE, {
|
|
2501
|
+
appName
|
|
2502
|
+
});
|
|
2503
|
+
await fs4.promises.writeFile(path3.join(cwd, "bedrock.config.ts"), config, {
|
|
2504
|
+
encoding: "utf-8"
|
|
2505
|
+
});
|
|
2506
|
+
p2.log.step("src/_app.tsx \uD30C\uC77C\uC744 \uC0DD\uC131\uD558\uB294 \uC911...");
|
|
2507
|
+
await fs4.promises.writeFile(path3.join(cwd, "src", "_app.tsx"), APP_TEMPLATE, {
|
|
2508
|
+
encoding: "utf-8"
|
|
2509
|
+
});
|
|
2510
|
+
}
|
|
2416
2511
|
var InitCommand = class extends Command2 {
|
|
2417
2512
|
static paths = [[`init`]];
|
|
2513
|
+
template = Option2.String("--template", { required: false });
|
|
2514
|
+
appName = Option2.String("--app-name", { required: false });
|
|
2515
|
+
skipInput = Option2.Boolean("--skip-input", { required: false, hidden: true });
|
|
2418
2516
|
async execute() {
|
|
2419
|
-
const template = await
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2517
|
+
const template = await ensureSelect({
|
|
2518
|
+
value: this.template,
|
|
2519
|
+
prompt: async () => p2.select({
|
|
2520
|
+
message: "\uD504\uB85C\uC81D\uD2B8\uB97C \uCD08\uAE30\uD654\uD560 \uD15C\uD50C\uB9BF\uC744 \uC120\uD0DD\uD574\uC8FC\uC138\uC694.",
|
|
2521
|
+
options: [
|
|
2522
|
+
{
|
|
2523
|
+
value: "web-framework",
|
|
2524
|
+
label: "\uC6F9 \uD504\uB808\uC784\uC6CC\uD06C",
|
|
2525
|
+
hint: "\uC6F9 \uD504\uB85C\uC81D\uD2B8\uC5D0 \uC571\uC778\uD1A0\uC2A4 \uC6F9\uBDF0 \uAC1C\uBC1C\uD658\uACBD\uC744 \uC138\uD305\uD569\uB2C8\uB2E4."
|
|
2526
|
+
},
|
|
2527
|
+
{
|
|
2528
|
+
value: "react-native",
|
|
2529
|
+
label: "React Native \uD504\uB808\uC784\uC6CC\uD06C (Bedrock)",
|
|
2530
|
+
hint: "Bedrock \uD504\uB85C\uC81D\uD2B8\uC5D0 \uC571\uC778\uD1A0\uC2A4 React Native\uC6A9 \uAC1C\uBC1C\uD658\uACBD\uC744 \uC138\uD305\uD569\uB2C8\uB2E4."
|
|
2531
|
+
}
|
|
2532
|
+
]
|
|
2533
|
+
})
|
|
2428
2534
|
});
|
|
2429
2535
|
if (p2.isCancel(template)) {
|
|
2430
2536
|
process.exit(0);
|
|
2431
2537
|
}
|
|
2432
2538
|
const cwd = getPackageRoot();
|
|
2433
2539
|
p2.intro("\u{1F680} \uC571 \uCD08\uAE30\uD654\uB97C \uC2DC\uC791\uD569\uB2C8\uB2E4");
|
|
2434
|
-
const appName = await
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2540
|
+
const appName = await ensureSelect({
|
|
2541
|
+
value: this.appName,
|
|
2542
|
+
prompt: async () => p2.text({
|
|
2543
|
+
message: "Enter app name",
|
|
2544
|
+
validate: (value) => {
|
|
2545
|
+
if (!value) {
|
|
2546
|
+
return "\uC571 \uC774\uB984\uC744 \uC785\uB825\uD574\uC8FC\uC138\uC694";
|
|
2547
|
+
}
|
|
2548
|
+
const kebabCaseValue = kebabCase(value);
|
|
2549
|
+
if (value !== kebabCaseValue) {
|
|
2550
|
+
return `\uC571 \uC774\uB984\uC740 \uCF00\uBC25-\uCF00\uC774\uC2A4 \uD615\uC2DD\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4 (\uC608\uC2DC: ${kebabCaseValue})`;
|
|
2551
|
+
}
|
|
2552
|
+
return;
|
|
2443
2553
|
}
|
|
2444
|
-
|
|
2445
|
-
}
|
|
2554
|
+
})
|
|
2446
2555
|
});
|
|
2447
2556
|
if (p2.isCancel(appName)) {
|
|
2448
2557
|
p2.cancel("\uCD08\uAE30\uD654\uAC00 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4");
|
|
2449
2558
|
return;
|
|
2450
2559
|
}
|
|
2451
2560
|
p2.log.step(`\uC571 \uC774\uB984\uC774 '${appName}'\uC73C\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4`);
|
|
2452
|
-
p2.log.step("package.json \uC2A4\uD06C\uB9BD\uD2B8\uB97C \uC124\uC815\uD558\uB294 \uC911...");
|
|
2453
|
-
const packageJson = await fs4.promises.readFile(path3.join(cwd, "package.json"), {
|
|
2454
|
-
encoding: "utf-8"
|
|
2455
|
-
});
|
|
2456
|
-
const scripts = JSON.parse(packageJson);
|
|
2457
|
-
const originalScripts = {
|
|
2458
|
-
dev: scripts?.scripts?.dev || scripts?.scripts?.start,
|
|
2459
|
-
build: scripts?.scripts?.build
|
|
2460
|
-
};
|
|
2461
|
-
scripts.scripts.dev = "bedrock dev";
|
|
2462
|
-
scripts.scripts.build = "bedrock build";
|
|
2463
|
-
scripts.scripts.deploy = "ait deploy";
|
|
2464
|
-
await fs4.promises.writeFile(path3.join(cwd, "package.json"), JSON.stringify(scripts, null, 2), {
|
|
2465
|
-
encoding: "utf-8"
|
|
2466
|
-
});
|
|
2467
|
-
p2.log.step(".gitignore \uD30C\uC77C\uC744 \uC5C5\uB370\uC774\uD2B8\uD558\uB294 \uC911...");
|
|
2468
|
-
await fs4.promises.appendFile(path3.join(cwd, ".gitignore"), "\n.bedrock\n");
|
|
2469
|
-
const placeholder = {
|
|
2470
|
-
dev: originalScripts.dev === "bedrock dev" ? "" : originalScripts.dev,
|
|
2471
|
-
build: originalScripts.build === "bedrock build" ? "" : originalScripts.build
|
|
2472
|
-
};
|
|
2473
|
-
const scriptInputs = await p2.group(
|
|
2474
|
-
{
|
|
2475
|
-
dev: () => p2.text({
|
|
2476
|
-
message: "\uC6F9 \uBC88\uB4E4\uB7EC\uC758 dev \uBA85\uB839\uC5B4\uB97C \uC785\uB825\uD574\uC8FC\uC138\uC694.",
|
|
2477
|
-
defaultValue: placeholder.dev,
|
|
2478
|
-
placeholder: placeholder.dev
|
|
2479
|
-
}),
|
|
2480
|
-
build: () => p2.text({
|
|
2481
|
-
message: "\uC6F9 \uBC88\uB4E4\uB7EC\uC758 build \uBA85\uB839\uC5B4\uB97C \uC785\uB825\uD574\uC8FC\uC138\uC694.",
|
|
2482
|
-
defaultValue: placeholder.build,
|
|
2483
|
-
placeholder: placeholder.build
|
|
2484
|
-
})
|
|
2485
|
-
},
|
|
2486
|
-
{
|
|
2487
|
-
onCancel: () => {
|
|
2488
|
-
p2.cancel("\uCD08\uAE30\uD654\uAC00 \uCDE8\uC18C\uB418\uC5C8\uC2B5\uB2C8\uB2E4");
|
|
2489
|
-
}
|
|
2490
|
-
}
|
|
2491
|
-
);
|
|
2492
2561
|
switch (template) {
|
|
2493
2562
|
case "web-framework": {
|
|
2494
2563
|
await templateWebFramework({
|
|
2495
2564
|
appName,
|
|
2496
2565
|
cwd,
|
|
2497
|
-
|
|
2566
|
+
skipInput: this.skipInput ?? false
|
|
2567
|
+
});
|
|
2568
|
+
break;
|
|
2569
|
+
}
|
|
2570
|
+
case "react-native": {
|
|
2571
|
+
await templateReactNative({
|
|
2572
|
+
appName,
|
|
2573
|
+
cwd
|
|
2498
2574
|
});
|
|
2575
|
+
break;
|
|
2499
2576
|
}
|
|
2500
2577
|
}
|
|
2501
2578
|
p2.outro("\u2728 \uCD08\uAE30\uD654\uAC00 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4!");
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apps-in-toss/cli",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.0.0-dev.
|
|
4
|
+
"version": "0.0.0-dev.1744801739343",
|
|
5
5
|
"description": "CLI for Apps In Toss",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"prepack": "yarn build",
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
"publishConfig": {
|
|
44
44
|
"access": "public"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "aebed4e46de1690956a3b9be49b55811b5ddfa24"
|
|
47
47
|
}
|