@brewnet/cli 0.0.7 → 0.0.9

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 (34) hide show
  1. package/dist/admin-server-FN7HZVZW.js +16 -0
  2. package/dist/admin-ui/assets/index-7Og0dFph.js +215 -0
  3. package/dist/admin-ui/assets/index-B9CMEE5E.css +1 -0
  4. package/dist/admin-ui/index.html +13 -0
  5. package/dist/{app-manager-BD3DG3RL.js → app-manager-6PEKSRZ2.js} +4 -4
  6. package/dist/{boilerplate-manager-WEFTHL2O.js → boilerplate-manager-5GPTMOYL.js} +4 -4
  7. package/dist/{chunk-OH233QV2.js → chunk-7VX572H4.js} +9 -9
  8. package/dist/{chunk-ZKMWE5AH.js → chunk-BD4MDAIG.js} +2 -2
  9. package/dist/{chunk-HCHY5UIQ.js → chunk-F2M6G5C7.js} +3 -3
  10. package/dist/chunk-F2M6G5C7.js.map +1 -0
  11. package/dist/{chunk-54WFZCU6.js → chunk-F2Y226UA.js} +3 -3
  12. package/dist/{chunk-76C5BGZK.js → chunk-JMKFUHZO.js} +19 -15
  13. package/dist/chunk-JMKFUHZO.js.map +1 -0
  14. package/dist/{chunk-AXSHZEB3.js → chunk-MOQNPKUG.js} +2 -2
  15. package/dist/{chunk-YAYXULLO.js → chunk-MSVYAYKQ.js} +4 -4
  16. package/dist/{compose-generator-OFJ2YWMB.js → compose-generator-MIAP3RBT.js} +3 -3
  17. package/dist/index.js +35 -61
  18. package/dist/index.js.map +1 -1
  19. package/dist/services/admin-daemon.js +6 -6
  20. package/dist/{state-2SI3P4JG.js → state-CJSUDM4H.js} +3 -3
  21. package/package.json +1 -1
  22. package/dist/admin-server-CBZFDDWG.js +0 -16
  23. package/dist/chunk-76C5BGZK.js.map +0 -1
  24. package/dist/chunk-HCHY5UIQ.js.map +0 -1
  25. /package/dist/{admin-server-CBZFDDWG.js.map → admin-server-FN7HZVZW.js.map} +0 -0
  26. /package/dist/{app-manager-BD3DG3RL.js.map → app-manager-6PEKSRZ2.js.map} +0 -0
  27. /package/dist/{boilerplate-manager-WEFTHL2O.js.map → boilerplate-manager-5GPTMOYL.js.map} +0 -0
  28. /package/dist/{chunk-OH233QV2.js.map → chunk-7VX572H4.js.map} +0 -0
  29. /package/dist/{chunk-ZKMWE5AH.js.map → chunk-BD4MDAIG.js.map} +0 -0
  30. /package/dist/{chunk-54WFZCU6.js.map → chunk-F2Y226UA.js.map} +0 -0
  31. /package/dist/{chunk-AXSHZEB3.js.map → chunk-MOQNPKUG.js.map} +0 -0
  32. /package/dist/{chunk-YAYXULLO.js.map → chunk-MSVYAYKQ.js.map} +0 -0
  33. /package/dist/{compose-generator-OFJ2YWMB.js.map → compose-generator-MIAP3RBT.js.map} +0 -0
  34. /package/dist/{state-2SI3P4JG.js.map → state-CJSUDM4H.js.map} +0 -0
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  queryLogs,
12
12
  removeService,
13
13
  restoreBackup
14
- } from "./chunk-YAYXULLO.js";
14
+ } from "./chunk-MSVYAYKQ.js";
15
15
  import "./chunk-JIPAYMOA.js";
16
16
  import {
17
17
  FRONTEND_REGISTRY,
@@ -37,11 +37,11 @@ import {
37
37
  reinitGit,
38
38
  startContainers,
39
39
  verifyEndpoints
40
- } from "./chunk-54WFZCU6.js";
40
+ } from "./chunk-F2Y226UA.js";
41
41
  import {
42
42
  composeConfigToYaml,
43
43
  generateComposeConfig
44
- } from "./chunk-AXSHZEB3.js";
44
+ } from "./chunk-MOQNPKUG.js";
45
45
  import {
46
46
  applyFullInstallDefaults,
47
47
  applyMinimalInstallDefaults,
@@ -52,13 +52,13 @@ import {
52
52
  loadState,
53
53
  logger,
54
54
  saveState
55
- } from "./chunk-ZKMWE5AH.js";
55
+ } from "./chunk-BD4MDAIG.js";
56
56
  import {
57
57
  BOILERPLATE_REPO_URL,
58
58
  DB_VERSIONS,
59
59
  DOCKER_COMPOSE_FILENAME,
60
60
  validateBrewnetConfig
61
- } from "./chunk-HCHY5UIQ.js";
61
+ } from "./chunk-F2M6G5C7.js";
62
62
  import {
63
63
  STACK_CATALOG,
64
64
  VALID_DB_DRIVERS,
@@ -461,8 +461,7 @@ async function checkGit() {
461
461
  }
462
462
  var DEFAULT_PORTS = [
463
463
  { port: 80, service: "Traefik (Web Server)" },
464
- { port: 443, service: "Traefik (HTTPS)" },
465
- { port: 2222, service: "SSH Server" }
464
+ { port: 443, service: "Traefik (HTTPS)" }
466
465
  ];
467
466
  async function runAllChecks() {
468
467
  const results = [];
@@ -1613,27 +1612,16 @@ async function runServerComponentsStep(state) {
1613
1612
  });
1614
1613
  next.servers.webServer.service = webService;
1615
1614
  console.log();
1616
- console.log(chalk5.bold(" File Server"));
1617
- console.log(chalk5.dim(" \uD30C\uC77C \uC800\uC7A5\xB7\uACF5\uC720\xB7\uB3D9\uAE30\uD654 \uC11C\uBC84. Dropbox / S3 \uAC19\uC740 \uC790\uCCB4 \uD638\uC2A4\uD305 \uC2A4\uD1A0\uB9AC\uC9C0"));
1615
+ console.log(chalk5.bold(" Nextcloud"));
1616
+ console.log(chalk5.dim(" \uC790\uCCB4 \uD638\uC2A4\uD305 \uD30C\uC77C \uB3D9\uAE30\uD654 + \uCE98\uB9B0\uB354\xB7\uC5F0\uB77D\uCC98\xB7\uC0AC\uC9C4 \uC571 \uD3EC\uD568 \uC62C\uC778\uC6D0 \uD611\uC5C5 Suite"));
1617
+ console.log(chalk5.dim(" Dropbox / Google Drive \uB300\uCCB4. \uC6F9\xB7\uB370\uC2A4\uD06C\uD1B1\xB7\uBAA8\uBC14\uC77C \uC571 \uC9C0\uC6D0"));
1618
1618
  console.log();
1619
- const fileServerEnabled = await confirm2({
1620
- message: "Enable File Server?",
1619
+ const nextcloudEnabled = await confirm2({
1620
+ message: "Nextcloud \uC124\uCE58",
1621
1621
  default: next.servers.fileServer.enabled
1622
1622
  });
1623
- next.servers.fileServer.enabled = fileServerEnabled;
1624
- if (fileServerEnabled) {
1625
- const fileService = await select3({
1626
- message: "File server service",
1627
- choices: [
1628
- { name: "Nextcloud", value: "nextcloud", description: "\uD30C\uC77C \uB3D9\uAE30\uD654 + \uCE98\uB9B0\uB354\xB7\uC5F0\uB77D\uCC98\xB7\uC0AC\uC9C4 \uC571 \uD3EC\uD568 \uC62C\uC778\uC6D0 \uD611\uC5C5 Suite" },
1629
- { name: "MinIO (S3-compatible)", value: "minio", description: "AWS S3 \uD638\uD658 \uC624\uBE0C\uC81D\uD2B8 \uC2A4\uD1A0\uB9AC\uC9C0. \uB300\uC6A9\uB7C9 \uD30C\uC77C\xB7\uBC31\uC5C5\xB7\uBBF8\uB514\uC5B4 \uC800\uC7A5\uC5D0 \uCD5C\uC801" }
1630
- ],
1631
- default: next.servers.fileServer.service || "nextcloud"
1632
- });
1633
- next.servers.fileServer.service = fileService;
1634
- } else {
1635
- next.servers.fileServer.service = "";
1636
- }
1623
+ next.servers.fileServer.enabled = nextcloudEnabled;
1624
+ next.servers.fileServer.service = nextcloudEnabled ? "nextcloud" : "";
1637
1625
  console.log();
1638
1626
  console.log(chalk5.bold(" Git Server") + chalk5.green(" (required)"));
1639
1627
  console.log(
@@ -1659,16 +1647,9 @@ async function runServerComponentsStep(state) {
1659
1647
  default: next.servers.dbServer.primary || "postgresql"
1660
1648
  });
1661
1649
  next.servers.dbServer.primary = dbPrimary;
1650
+ const versions = DB_VERSIONS[dbPrimary] ?? [];
1651
+ next.servers.dbServer.primaryVersion = versions[0] ?? "";
1662
1652
  if (dbPrimary !== "sqlite") {
1663
- const versions = DB_VERSIONS[dbPrimary] ?? [];
1664
- if (versions.length > 0) {
1665
- const dbVersion = await select3({
1666
- message: `${dbPrimary === "postgresql" ? "PostgreSQL" : "MySQL"} version`,
1667
- choices: versions.map((v) => ({ name: v, value: v })),
1668
- default: next.servers.dbServer.primaryVersion || versions[0]
1669
- });
1670
- next.servers.dbServer.primaryVersion = dbVersion;
1671
- }
1672
1653
  const adminUILabel = dbPrimary === "postgresql" ? "pgAdmin" : "phpMyAdmin";
1673
1654
  const adminUI = await confirm2({
1674
1655
  message: `Enable ${adminUILabel} (database admin UI)?`,
@@ -1739,7 +1720,7 @@ async function runServerComponentsStep(state) {
1739
1720
  }
1740
1721
 
1741
1722
  // src/wizard/steps/dev-stack.ts
1742
- import { select as select4, confirm as confirm3 } from "@inquirer/prompts";
1723
+ import { select as select4 } from "@inquirer/prompts";
1743
1724
  import chalk6 from "chalk";
1744
1725
  function buildDevStackState(selections) {
1745
1726
  const languages = [...selections.languages];
@@ -1896,12 +1877,8 @@ async function runDevStackStep(state) {
1896
1877
  console.log(chalk6.dim(" Project scaffolding and template settings"));
1897
1878
  console.log(chalk6.dim(` Templates: ${BOILERPLATE_REPO_URL}`));
1898
1879
  console.log();
1899
- const generateBoilerplate = await confirm3({
1900
- message: "Generate boilerplate project files?",
1901
- default: next.boilerplate.generate
1902
- });
1903
- next.boilerplate.generate = generateBoilerplate;
1904
- if (generateBoilerplate) {
1880
+ next.boilerplate.generate = true;
1881
+ {
1905
1882
  next.boilerplate.sampleData = false;
1906
1883
  const devMode = await select4({
1907
1884
  message: "Development mode",
@@ -1918,9 +1895,6 @@ async function runDevStackStep(state) {
1918
1895
  default: next.boilerplate.devMode || "hot-reload"
1919
1896
  });
1920
1897
  next.boilerplate.devMode = devMode;
1921
- } else {
1922
- next.boilerplate.sampleData = false;
1923
- next.boilerplate.devMode = "hot-reload";
1924
1898
  }
1925
1899
  console.log();
1926
1900
  console.log(chalk6.bold(" Dev Stack Summary"));
@@ -1982,7 +1956,7 @@ async function runDevStackStep(state) {
1982
1956
  }
1983
1957
 
1984
1958
  // src/wizard/steps/domain-network.ts
1985
- import { input as input5, select as select5, confirm as confirm4 } from "@inquirer/prompts";
1959
+ import { input as input5, select as select5, confirm as confirm3 } from "@inquirer/prompts";
1986
1960
  import chalk7 from "chalk";
1987
1961
  import ora3 from "ora";
1988
1962
  import { execa as execa4 } from "execa";
@@ -2484,7 +2458,7 @@ async function runUnifiedNamedTunnelScenario(next, tunnelLogger) {
2484
2458
  next.domain.cloudflare.tunnelMode = "named";
2485
2459
  let qtManager = null;
2486
2460
  try {
2487
- const hasDomain = await confirm4({
2461
+ const hasDomain = await confirm3({
2488
2462
  message: "Cloudflare\uC5D0 \uB4F1\uB85D\uB41C \uB3C4\uBA54\uC778\uC774 \uC774\uBBF8 \uC788\uC73C\uC2E0\uAC00\uC694?",
2489
2463
  default: true
2490
2464
  });
@@ -2499,7 +2473,7 @@ async function runUnifiedNamedTunnelScenario(next, tunnelLogger) {
2499
2473
  console.log(chalk7.dim(" 3. \uB3C4\uBA54\uC778\uC774 Cloudflare \uB124\uC784\uC11C\uBC84\uB85C \uC790\uB3D9 \uC124\uC815\uB429\uB2C8\uB2E4"));
2500
2474
  console.log(chalk7.dim(" 4. \uB4F1\uB85D \uC644\uB8CC\uAE4C\uC9C0 1~5\uBD84 \uC18C\uC694"));
2501
2475
  console.log();
2502
- const useBridge = await confirm4({
2476
+ const useBridge = await confirm3({
2503
2477
  message: "Quick Tunnel\uB85C \uC784\uC2DC \uC811\uADFC\uC744 \uC2DC\uC791\uD558\uACA0\uC2B5\uB2C8\uAE4C? (\uB3C4\uBA54\uC778 \uC900\uBE44 \uC911\uC5D0\uB3C4 \uC11C\uBE44\uC2A4\uC5D0 \uC811\uADFC \uAC00\uB2A5)",
2504
2478
  default: true
2505
2479
  });
@@ -3057,7 +3031,7 @@ import { homedir as homedir2 } from "os";
3057
3031
  import chalk9 from "chalk";
3058
3032
  import ora4 from "ora";
3059
3033
  import Table2 from "cli-table3";
3060
- import { confirm as confirm5, select as select7 } from "@inquirer/prompts";
3034
+ import { confirm as confirm4, select as select7 } from "@inquirer/prompts";
3061
3035
 
3062
3036
  // src/utils/service-verifier.ts
3063
3037
  function buildServiceUrlMap(state) {
@@ -4124,7 +4098,7 @@ async function runGenerateStep(state) {
4124
4098
  });
4125
4099
  if (pullResult.exitCode !== 0) {
4126
4100
  console.log(chalk9.red(" \u2717 Failed to pull Docker images"));
4127
- const shouldContinue = await confirm5({
4101
+ const shouldContinue = await confirm4({
4128
4102
  message: "Continue without pulling images? (existing images will be used)",
4129
4103
  default: false
4130
4104
  });
@@ -4139,7 +4113,7 @@ async function runGenerateStep(state) {
4139
4113
  if (err instanceof Error) {
4140
4114
  console.log(chalk9.dim(` ${err.message}`));
4141
4115
  }
4142
- const shouldContinue = await confirm5({
4116
+ const shouldContinue = await confirm4({
4143
4117
  message: "Continue without pulling images?",
4144
4118
  default: false
4145
4119
  });
@@ -4493,7 +4467,7 @@ async function runGenerateStep(state) {
4493
4467
  pollHealth: boilerplatePollHealth,
4494
4468
  verifyEndpoints: boilerplateVerifyEndpoints,
4495
4469
  findFreePort
4496
- } = await import("./boilerplate-manager-WEFTHL2O.js");
4470
+ } = await import("./boilerplate-manager-5GPTMOYL.js");
4497
4471
  const dbPrimary = state.servers.dbServer.primary;
4498
4472
  const dbDriver = dbPrimary === "postgresql" ? "postgres" : dbPrimary === "mysql" ? "mysql" : "sqlite3";
4499
4473
  const dbOpts = {
@@ -4563,7 +4537,7 @@ async function runGenerateStep(state) {
4563
4537
  let isNextjsBasePath = false;
4564
4538
  if (state.domain.cloudflare.tunnelMode === "quick") {
4565
4539
  try {
4566
- const { injectTraefikForQuickTunnel } = await import("./boilerplate-manager-WEFTHL2O.js");
4540
+ const { injectTraefikForQuickTunnel } = await import("./boilerplate-manager-5GPTMOYL.js");
4567
4541
  injectTraefikForQuickTunnel(appDir, stackId, backendPort);
4568
4542
  if (stackId.startsWith("nodejs-nextjs")) isNextjsBasePath = true;
4569
4543
  } catch {
@@ -4815,7 +4789,7 @@ async function runGenerateStep(state) {
4815
4789
  chmodSync2(tokenPath, 384);
4816
4790
  gitea.succeed(" Gitea: API \uD1A0\uD070 \uC0DD\uC131 \uC644\uB8CC");
4817
4791
  try {
4818
- const { saveGiteaConfig } = await import("./app-manager-BD3DG3RL.js");
4792
+ const { saveGiteaConfig } = await import("./app-manager-6PEKSRZ2.js");
4819
4793
  saveGiteaConfig("http://localhost/git", adminUser);
4820
4794
  } catch {
4821
4795
  }
@@ -6084,12 +6058,12 @@ function registerAddCommand(program) {
6084
6058
  // src/commands/remove.ts
6085
6059
  import chalk15 from "chalk";
6086
6060
  import ora6 from "ora";
6087
- import { confirm as confirm6 } from "@inquirer/prompts";
6061
+ import { confirm as confirm5 } from "@inquirer/prompts";
6088
6062
  function registerRemoveCommand(program) {
6089
6063
  program.command("remove").description("Remove a service").argument("<service>", "Name of the service to remove").option("--purge", "Also remove associated volumes and configuration data").option("--force", "Skip confirmation prompt").option("-p, --path <path>", "Project path (defaults to current directory)", process.cwd()).action(async (service, options) => {
6090
6064
  if (!options.force) {
6091
6065
  const purgeWarning = options.purge ? chalk15.red(" (including all associated data volumes)") : "";
6092
- const confirmed = await confirm6({
6066
+ const confirmed = await confirm5({
6093
6067
  message: `Remove service ${chalk15.cyan(service)}${purgeWarning}?`,
6094
6068
  default: false
6095
6069
  });
@@ -6381,7 +6355,7 @@ Backups (${backups.length}):
6381
6355
  // src/commands/restore.ts
6382
6356
  import chalk20 from "chalk";
6383
6357
  import ora10 from "ora";
6384
- import { confirm as confirm7 } from "@inquirer/prompts";
6358
+ import { confirm as confirm6 } from "@inquirer/prompts";
6385
6359
  import { homedir as homedir7 } from "os";
6386
6360
  import { join as join8 } from "path";
6387
6361
  var DEFAULT_BACKUPS_DIR2 = join8(homedir7(), ".brewnet", "backups");
@@ -6429,7 +6403,7 @@ function registerRestoreCommand(program) {
6429
6403
  console.log(chalk20.dim(` Date: ${date}`));
6430
6404
  console.log(chalk20.dim(` Target: ${options.path}`));
6431
6405
  console.log("");
6432
- const confirmed = await confirm7({
6406
+ const confirmed = await confirm6({
6433
6407
  message: `Restore backup ${chalk20.cyan(backupId)} to ${chalk20.cyan(options.path)}?`,
6434
6408
  default: false
6435
6409
  });
@@ -6484,7 +6458,7 @@ function registerAdminCommand(program) {
6484
6458
  return;
6485
6459
  }
6486
6460
  if (options.foreground) {
6487
- const { createAdminServer } = await import("./admin-server-CBZFDDWG.js");
6461
+ const { createAdminServer } = await import("./admin-server-FN7HZVZW.js");
6488
6462
  const spinner2 = ora11(`Starting admin panel on port ${port}...`).start();
6489
6463
  const { start } = createAdminServer({ port, projectPath: options.path || void 0 });
6490
6464
  try {
@@ -6575,7 +6549,7 @@ function registerShutdownCommand(program) {
6575
6549
 
6576
6550
  // src/commands/uninstall.ts
6577
6551
  import chalk23 from "chalk";
6578
- import { confirm as confirm8, select as select9 } from "@inquirer/prompts";
6552
+ import { confirm as confirm7, select as select9 } from "@inquirer/prompts";
6579
6553
  function printTargets(targets) {
6580
6554
  for (const t of targets) {
6581
6555
  const tag = t.skipped ? chalk23.dim(` [skip] ${t.label} (${t.skipReason ?? "preserved"})`) : chalk23.red(` [remove] ${t.label}`);
@@ -6671,7 +6645,7 @@ function registerUninstallCommand(program) {
6671
6645
  if (!options.force) {
6672
6646
  let confirmed = false;
6673
6647
  try {
6674
- confirmed = await confirm8({
6648
+ confirmed = await confirm7({
6675
6649
  message: chalk23.red("Proceed with uninstall? This cannot be undone."),
6676
6650
  default: false
6677
6651
  });
@@ -7797,7 +7771,7 @@ function stripAnsi(str) {
7797
7771
  // src/index.ts
7798
7772
  function createProgram() {
7799
7773
  const program = new Command();
7800
- program.name("brewnet").description("Your Home Server, Brewed Fresh").version("0.0.7").showHelpAfterError('(run "brewnet --help" for usage information)');
7774
+ program.name("brewnet").description("Your Home Server, Brewed Fresh").version("0.0.9").showHelpAfterError('(run "brewnet --help" for usage information)');
7801
7775
  registerInitCommand(program);
7802
7776
  registerStatusCommand(program);
7803
7777
  registerAddCommand(program);