omegga 1.17.0 → 1.17.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.
Files changed (161) hide show
  1. package/dist/main.js +15 -0
  2. package/dist/main.js.map +1 -1
  3. package/package.json +14 -3
  4. package/.nvmrc +0 -1
  5. package/CHANGELOG.md +0 -885
  6. package/book/.nojekyll +0 -1
  7. package/book/404.html +0 -246
  8. package/book/CNAME +0 -1
  9. package/book/api/events.html +0 -358
  10. package/book/api/index.html +0 -282
  11. package/book/api/log-parsing.html +0 -416
  12. package/book/api/omegga.html +0 -980
  13. package/book/api/player.html +0 -762
  14. package/book/api/plugin.html +0 -449
  15. package/book/api/types.html +0 -614
  16. package/book/assets/fonts/GlacialIndifferenceBold.ttf +0 -0
  17. package/book/assets/fonts/GlacialIndifferenceRegular.ttf +0 -0
  18. package/book/assets/logo.png +0 -0
  19. package/book/ayu-highlight-3fdfc3ac.css +0 -77
  20. package/book/book-609e4cb8.js +0 -870
  21. package/book/clipboard-1626706a.min.js +0 -7
  22. package/book/config.html +0 -326
  23. package/book/containers.html +0 -338
  24. package/book/css/chrome-d279d366.css +0 -770
  25. package/book/css/general-e96d0476.css +0 -464
  26. package/book/css/print-9e4910d8.css +0 -50
  27. package/book/css/variables-8adf115d.css +0 -383
  28. package/book/elasticlunr-ef4e11c1.min.js +0 -10
  29. package/book/env.html +0 -283
  30. package/book/favicon-8114d1fc.png +0 -0
  31. package/book/favicon-de23e50b.svg +0 -22
  32. package/book/fonts/OPEN-SANS-LICENSE.txt +0 -202
  33. package/book/fonts/SOURCE-CODE-PRO-LICENSE.txt +0 -93
  34. package/book/fonts/fonts-9644e21d.css +0 -100
  35. package/book/fonts/open-sans-v17-all-charsets-300-7736aa35.woff2 +0 -0
  36. package/book/fonts/open-sans-v17-all-charsets-300italic-2c7b95c0.woff2 +0 -0
  37. package/book/fonts/open-sans-v17-all-charsets-600-486c6759.woff2 +0 -0
  38. package/book/fonts/open-sans-v17-all-charsets-600italic-1a3e8659.woff2 +0 -0
  39. package/book/fonts/open-sans-v17-all-charsets-700-c22fe8c7.woff2 +0 -0
  40. package/book/fonts/open-sans-v17-all-charsets-700italic-238ae959.woff2 +0 -0
  41. package/book/fonts/open-sans-v17-all-charsets-800-3d2c812a.woff2 +0 -0
  42. package/book/fonts/open-sans-v17-all-charsets-800italic-ba1521ec.woff2 +0 -0
  43. package/book/fonts/open-sans-v17-all-charsets-italic-6c9463f7.woff2 +0 -0
  44. package/book/fonts/open-sans-v17-all-charsets-regular-2e3b1d34.woff2 +0 -0
  45. package/book/fonts/source-code-pro-v11-all-charsets-500-2bdd9410.woff2 +0 -0
  46. package/book/guides/https.html +0 -352
  47. package/book/guides/index.html +0 -276
  48. package/book/guides/pterodactyl.html +0 -397
  49. package/book/guides/remote.html +0 -328
  50. package/book/guides/wires.html +0 -518
  51. package/book/highlight-493f70e1.css +0 -83
  52. package/book/highlight-abc7f01d.js +0 -54
  53. package/book/index.html +0 -299
  54. package/book/install/index.html +0 -287
  55. package/book/install/linux.html +0 -407
  56. package/book/install/wsl.html +0 -286
  57. package/book/mark-09e88c2c.min.js +0 -7
  58. package/book/metrics.html +0 -662
  59. package/book/permissions.html +0 -532
  60. package/book/plugins/index.html +0 -521
  61. package/book/plugins/installing.html +0 -284
  62. package/book/plugins/jsonrpc.html +0 -519
  63. package/book/plugins/safe.html +0 -368
  64. package/book/plugins/unsafe.html +0 -317
  65. package/book/print.html +0 -4852
  66. package/book/running.html +0 -283
  67. package/book/searcher-09f2665d.js +0 -558
  68. package/book/searchindex-3480b9e2.js +0 -1
  69. package/book/theme/omegga-3aa7cb40.css +0 -196
  70. package/book/theme/wirescript-hljs-69fbef4b.js +0 -75
  71. package/book/toc-faa8fb01.js +0 -455
  72. package/book/toc.html +0 -32
  73. package/book/tomorrow-night-4c0ae647.css +0 -104
  74. package/book/troubleshooting.html +0 -330
  75. package/book/uninstall.html +0 -275
  76. package/docs/CNAME +0 -1
  77. package/docs/README.md +0 -44
  78. package/docs/SUMMARY.md +0 -33
  79. package/docs/api/README.md +0 -21
  80. package/docs/api/events.md +0 -109
  81. package/docs/api/log-parsing.md +0 -162
  82. package/docs/api/omegga.md +0 -785
  83. package/docs/api/player.md +0 -525
  84. package/docs/api/plugin.md +0 -284
  85. package/docs/api/types.md +0 -339
  86. package/docs/assets/fonts/GlacialIndifferenceBold.ttf +0 -0
  87. package/docs/assets/fonts/GlacialIndifferenceRegular.ttf +0 -0
  88. package/docs/assets/logo.png +0 -0
  89. package/docs/config.md +0 -76
  90. package/docs/containers.md +0 -110
  91. package/docs/env.md +0 -27
  92. package/docs/guides/README.md +0 -14
  93. package/docs/guides/https.md +0 -121
  94. package/docs/guides/pterodactyl.md +0 -155
  95. package/docs/guides/remote.md +0 -81
  96. package/docs/guides/wires.md +0 -292
  97. package/docs/install/README.md +0 -27
  98. package/docs/install/linux.md +0 -156
  99. package/docs/install/wsl.md +0 -40
  100. package/docs/metrics.md +0 -451
  101. package/docs/permissions.md +0 -264
  102. package/docs/plugins/README.md +0 -280
  103. package/docs/plugins/installing.md +0 -47
  104. package/docs/plugins/jsonrpc.md +0 -258
  105. package/docs/plugins/safe.md +0 -136
  106. package/docs/plugins/unsafe.md +0 -68
  107. package/docs/running.md +0 -43
  108. package/docs/troubleshooting.md +0 -38
  109. package/docs/uninstall.md +0 -22
  110. package/drizzle.config.ts +0 -7
  111. package/drizzle.plugin.config.ts +0 -7
  112. package/eslint.config.mjs +0 -135
  113. package/public/assets/IconCheck-DOe3u7iH.js.map +0 -1
  114. package/public/assets/IconLockOpen-Bs7Tsf6u.js.map +0 -1
  115. package/public/assets/IconShieldCheck-Bjlm8mX2.js.map +0 -1
  116. package/public/assets/IconWorld-DgiOjCuo.js.map +0 -1
  117. package/public/assets/IconWorldPlus-DJJNrT87.js.map +0 -1
  118. package/public/assets/IconX-CvmO0bbE.js.map +0 -1
  119. package/public/assets/_commonjsHelpers-CE1G-McA.js.map +0 -1
  120. package/public/assets/app-Mh--ChqF.js.map +0 -1
  121. package/public/assets/auth-DQtYicf-.js.map +0 -1
  122. package/public/assets/client-BT1QYH0O.js.map +0 -1
  123. package/public/assets/index-2cgXLhrt.js.map +0 -1
  124. package/public/assets/index-B0LowBt1.js.map +0 -1
  125. package/public/assets/index-BDkarAkX.js.map +0 -1
  126. package/public/assets/index-BTSbuqTr.js.map +0 -1
  127. package/public/assets/index-CJ4e7_2M.js.map +0 -1
  128. package/public/assets/index-CSV4ZXsq.js.map +0 -1
  129. package/public/assets/index-CrN8I5Az.js.map +0 -1
  130. package/public/assets/index-CtCtK5BX.js.map +0 -1
  131. package/public/assets/index-D0OPOe3j.js.map +0 -1
  132. package/public/assets/jsx-runtime-BX5r4UiA.js.map +0 -1
  133. package/public/assets/jsx-runtime-DldvXD6N.js.map +0 -1
  134. package/public/assets/shared/@components-DBMXoJMT.js.map +0 -1
  135. package/public/assets/shared/@hooks-DlZ8TOOZ.js.map +0 -1
  136. package/public/assets/shared/@nanostores_react-DJPF1Eqx.js.map +0 -1
  137. package/public/assets/shared/@tabler_icons-react-i-Q2c_A_.js.map +0 -1
  138. package/public/assets/shared/@utils-BA2UvC9c.js.map +0 -1
  139. package/public/assets/shared/nanostores-BFqqIY_c.js.map +0 -1
  140. package/public/assets/shared/react-dom-8Rcmh_FG.js.map +0 -1
  141. package/public/assets/shared/react-iXLZ_Bod.js.map +0 -1
  142. package/public/assets/shared/react_jsx-runtime-BwhiLcBy.js.map +0 -1
  143. package/public/assets/shared/wouter-CUC1caxu.js.map +0 -1
  144. package/public/assets/user-XF1UyJMA.js.map +0 -1
  145. package/public/assets/utils-Ds3ldd-U.js.map +0 -1
  146. package/server/data/nedb-imported.marker +0 -1
  147. package/server/data/omegga-plugins.db +0 -0
  148. package/server/data/omegga-plugins.db-shm +0 -0
  149. package/server/data/omegga-plugins.db-wal +0 -0
  150. package/server/data/omegga-sessions.db +0 -0
  151. package/server/data/omegga-sessions.db-shm +0 -0
  152. package/server/data/omegga-sessions.db-wal +0 -0
  153. package/server/data/omegga.db +0 -0
  154. package/server/data/omegga.db-shm +0 -0
  155. package/server/data/omegga.db-wal +0 -0
  156. package/server/data/web_session_token +0 -1
  157. package/server/fakegame/Binaries/Linux/BrickadiaServer-Linux-Shipping +0 -11
  158. package/server/omegga-config.yml +0 -7
  159. package/theme/omegga.css +0 -196
  160. package/theme/wirescript-hljs.js +0 -75
  161. package/tools/tag.sh +0 -48
package/dist/main.js CHANGED
@@ -247,6 +247,21 @@ program.command("steamlogin").description("Interactively log in to Steam (for St
247
247
  process.exit(1);
248
248
  }
249
249
  });
250
+ program.command("download").description("Downloads or updates the Brickadia server, then exits").option("-v, --verbose", "Print extra messages for debugging purposes").action(async () => {
251
+ const { verbose } = program.opts();
252
+ logger.default.VERBOSE = isVerbose(verbose);
253
+ const configFile = index.find(".");
254
+ const conf = configFile ? index.read(configFile) : index.defaultConfig;
255
+ if (conf?.server?.branch) {
256
+ logger.default.errorp(
257
+ "This server is configured for the",
258
+ "non-steam launcher".yellow,
259
+ "and has nothing to update through SteamCMD."
260
+ );
261
+ process.exit(1);
262
+ }
263
+ await setupSteam(conf, true);
264
+ });
250
265
  program.command("config [field] [value]").description(
251
266
  "Configure Omegga's default behavior.\nType " + "omegga config list".yellow.underline + " for current settings and available fields"
252
267
  ).action((field, value) => {
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../src/main.ts"],"sourcesContent":["import soft, {\n getOverrideGameBinary,\n getSteamGameDir,\n getSteamInstallDir,\n} from '@/softconfig';\nimport { installLauncher } from '@cli/installer';\nimport * as config from '@config';\nimport { readBinaryVersion } from '@omegga/matchers/version';\nimport Omegga from '@omegga/server';\nimport * as file from '@util/file';\nimport { isContainer } from '@util/container';\nimport { isNonInteractive, parseEnvBool } from '@util/env';\nimport 'colors';\nimport commander from 'commander';\nimport dotenv from 'dotenv';\nimport hasbin from 'hasbin';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport prompts from 'prompts';\nimport updateNotifier from 'update-notifier-cjs';\nimport { auth, config as omeggaConfig, pluginUtil, Terminal } from './cli';\nimport { IConfig } from './config/types';\nimport Logger from './logger';\nimport { GAME_BIN_PATH, STEAMCMD_PATH } from './softconfig';\nimport {\n hasSteamUpdate,\n steamcmdDownloadGame,\n steamcmdDownloadSelf,\n steamcmdInteractiveLogin,\n} from './updater';\nimport { PKG, VERSION } from './version';\n\ndotenv.config({ quiet: true });\n\nconst notifier =\n process.env.PACKAGE_NOTIFIER !== 'false'\n ? updateNotifier({\n pkg: PKG,\n updateCheckInterval: 1000 * 60 * 60 * 24,\n })\n : null;\nif (notifier) {\n const { update } = notifier;\n notifier.notify(\n update && isContainer()\n ? {\n message: `Update available ${update.current} → ${update.latest}\\nPull a new container image to update`,\n }\n : undefined,\n );\n}\n\n// TODO: let omegga bundle config (roles, bans, server config) to zip\n// TODO: let omegga unbundle config from zip to current omegga dir\n\n// write a default config file\nconst createDefaultConfig = () => {\n Logger.logp('Created default config file');\n config.write(soft.CONFIG_FILENAMES[0] + '.yml', config.defaultConfig);\n file.mkdir(`data/${soft.CONFIG_SAVED_DIR}/Builds`);\n file.mkdir('plugins');\n return config.defaultConfig;\n};\n\n/**\n * `--verbose` and `--debug` also have environment aliases. Both parse the\n * value rather than testing for presence: an orchestrator that materialises\n * every declared variable has no way to leave one unset, so `VERBOSE=false`\n * has to mean false.\n */\nconst isVerbose = (flag?: unknown) =>\n Boolean(flag) || parseEnvBool('VERBOSE') === true;\nconst isDebug = (flag?: unknown) =>\n Boolean(flag) || parseEnvBool('BRICKADIA_DEBUG') === true;\n\nconst program = commander\n .description(PKG.description)\n .version(VERSION)\n .option(\n '-d, --debug',\n 'Print all console logs rather than just chat messages (env: BRICKADIA_DEBUG)',\n )\n .option(\n '-u, --update',\n 'Check for brickadia updates (on steam) and install them if available',\n )\n .option(\n '-v, --verbose',\n 'Print extra messages for debugging purposes (env: VERBOSE)',\n )\n .action(async () => {\n const { verbose, update } = program.opts();\n const debug = isDebug(program.opts().debug);\n if (program.args.length > 0) {\n program.help();\n process.exit(1);\n }\n Logger.VERBOSE = isVerbose(verbose);\n\n // default working directory is the one specified in config\n let workDir = config.store.get('defaultOmegga');\n Logger.verbose('Using working directory', workDir?.yellow);\n\n // if there's a config in the current directory, use that one instead\n if (config.find('.')) workDir = '.';\n\n // check if configured path exists\n if (!fs.existsSync(workDir)) {\n Logger.errorp('configured omegga default path does not exist');\n process.exit(1);\n }\n if (!fs.statSync(workDir).isDirectory()) {\n Logger.errorp('configured omegga default path is not a directory');\n process.exit(1);\n }\n\n // find the config for the working directory\n const configFile = config.find(workDir);\n Logger.verbose('Target config file:', configFile?.yellow);\n let conf: IConfig;\n\n // create a default config file if it does not already exist, otherwise load in the existing one\n if (!configFile) {\n Logger.verbose('Creating a new config');\n conf = createDefaultConfig();\n } else {\n Logger.verbose('Reading config file');\n try {\n conf = config.read(configFile);\n } catch (error) {\n Logger.errorp('Error reading config file');\n Logger.verbose(error);\n // starting without a working config would only crash later\n process.exit(1);\n }\n }\n\n config.applyPortOverrides(conf);\n config.applyMetricsOverrides(conf);\n\n if (conf?.terminal?.timestamp) {\n Logger.setTimestamp(conf.terminal.timestamp);\n }\n\n const overrideBinary = getOverrideGameBinary();\n const isSteam = !conf?.server?.branch;\n if (overrideBinary) {\n if (!fs.existsSync(overrideBinary)) {\n Logger.error(\n 'Binary',\n overrideBinary.yellow,\n 'in',\n 'BRICKADIA_DIR'.yellow,\n 'does not exist!',\n );\n process.exit(1);\n }\n\n Logger.verbose(\n 'Using override binary',\n overrideBinary.yellow,\n '- skipping download.',\n );\n } else if (isSteam) {\n conf.__STEAM = true;\n await setupSteam(conf, update);\n } else {\n Logger.warnp(\n 'Brickadia will be launched with',\n 'non-steam launcher'.yellow,\n );\n Logger.warnp(\n 'New versions of Brickadia are not published on the old launcher.'\n .yellow,\n );\n\n // Check if the local launcher is installed\n if (fs.existsSync(soft.LOCAL_LAUNCHER)) {\n Logger.verbose(\"Using omegga's brickadia-launcher\");\n conf.server.__LOCAL = true;\n } else {\n Logger.verbose(\"Installing launcher as it's missing\");\n await installLauncher();\n }\n }\n\n const globalToken = auth.getGlobalToken();\n\n const hasHostingToken = Boolean(\n conf?.credentials?.token || process.env.BRICKADIA_TOKEN || globalToken,\n );\n\n // Skip auth when the hosting token is present\n if (hasHostingToken) {\n Logger.verbose(\n 'Skipping auth token generation due to host token presence',\n );\n if (conf?.credentials?.token)\n Logger.verbose('Found token in config file');\n else if (process.env.BRICKADIA_TOKEN)\n Logger.verbose('Found token in', 'BRICKADIA_TOKEN'.yellow);\n else if (globalToken)\n Logger.verbose('Found token in omegga global config');\n else Logger.verbose('unreachable - no token found');\n\n // check if the auth files don't exist\n } else if (\n !auth.exists(\n path.join(\n workDir,\n soft.DATA_PATH,\n conf?.server?.savedDir ?? soft.CONFIG_SAVED_DIR,\n conf?.server?.authDir ?? soft.CONFIG_AUTH_DIR,\n ),\n )\n ) {\n const success = await auth.prompt({\n debug,\n email: conf?.credentials?.['email'] ?? process.env.BRICKADIA_USER,\n password: conf?.credentials?.['password'] ?? process.env.BRICKADIA_PASS,\n isSteam,\n branch: conf?.server?.branch,\n authDir: conf?.server?.authDir,\n savedDir: conf?.server?.savedDir,\n launchArgs: conf?.server?.launchArgs,\n });\n if (!success) {\n Logger.errorp('Start aborted - could not generate auth tokens');\n process.exit(1);\n }\n } else {\n Logger.verbose(\n 'Skipping auth token generation due to existing auth files',\n );\n }\n\n // build options\n const options = {\n // default enable web ui (set to false)\n noweb: typeof conf.omegga?.webui === 'boolean' && !conf.omegga?.webui,\n // default enable https (set to true, will not be https if it can't generate)\n https: typeof conf.omegga?.https !== 'boolean' || conf.omegga?.https,\n port: conf.omegga?.port || soft.DEFAULT_PORT,\n debug,\n };\n\n Logger.verbose('Launching with options', options);\n\n // setup the server\n const server = new Omegga(workDir, conf, options);\n Logger.verbose('Created omegga object');\n\n if (verbose) {\n server.on(\n '*',\n (ev: string) => ev !== 'line' && Logger.verbose('EVENT'.green, ev),\n );\n }\n\n // create a terminal\n Logger.setTerminal(new Terminal(server, options));\n\n if (notifier?.update) {\n Logger.logp(\n `Omegga update is available (${('v' + notifier.update.latest).yellow})!`,\n isContainer()\n ? 'Pull a new container image to update!'\n : `Run ${'npm i -g omegga'.yellow} to update!`,\n );\n }\n\n if (\n conf.__STEAM &&\n !update &&\n !conf.server?.steambetaPassword &&\n process.env.STEAM_NOTIFIER !== 'false'\n ) {\n hasSteamUpdate(conf.server?.steambeta).then(hasUpdate => {\n if (hasUpdate) {\n Logger.logp('A server update is available!'.brightBlue);\n Logger.log(\n ' Restart with',\n 'omegga --update'.yellow,\n 'to update every start.',\n );\n Logger.log(' Run', '/update'.yellow, 'to update', 'now'.green + '!');\n } else {\n Logger.verbose('No server updates available.');\n }\n });\n }\n\n // resolved from the binary, so it's available before the server starts\n const gameVersion = readBinaryVersion(server.getGameBinaryPath());\n\n Logger.logp(\n `Launching Brickadia Server${\n gameVersion ? ' ' + ('CL' + gameVersion).green : ''\n } on port ${('' + (conf.server.port || 7777)).green}...`,\n );\n\n // start the server\n Logger.verbose('Starting Omegga');\n server.start();\n });\n\nprogram\n .command('init')\n .description('Sets up the current directory as a brickadia server')\n .action(async () => {\n const configFile = config.find('.');\n if (configFile) {\n Logger.errorp('Config file already exists:', configFile.yellow.underline);\n process.exit(1);\n }\n createDefaultConfig();\n });\n\nprogram\n .command('steamlogin')\n .description('Interactively log in to Steam (for Steam Guard authentication)')\n .action(async () => {\n if (!process.env.STEAM_USERNAME) {\n Logger.errorp('STEAM_USERNAME environment variable is required.');\n Logger.errorp('Set it in your .env file or environment.');\n process.exit(1);\n }\n\n if (!fs.existsSync(STEAMCMD_PATH)) {\n Logger.errorp(\n 'SteamCMD is not installed. Run',\n 'omegga'.yellow,\n 'first to set it up.',\n );\n process.exit(1);\n }\n\n Logger.logp('Logging in to Steam interactively...');\n const success = await steamcmdInteractiveLogin();\n if (success) {\n Logger.logp('Steam login successful. Credentials are now cached.');\n } else {\n Logger.errorp('Steam login failed.');\n process.exit(1);\n }\n });\n\nprogram\n .command('config [field] [value]')\n .description(\n \"Configure Omegga's default behavior.\\n\" +\n 'Type ' +\n 'omegga config list'.yellow.underline +\n ' for current settings and available fields',\n )\n .action((field, value) => {\n if (!field) field = 'list';\n omeggaConfig(field, value, program.opts());\n });\n\nprogram\n .command('auth')\n .option('-g, --global', 'Remove global auth files')\n .option('-l, --local', 'Remove local auth files')\n .option('-w, --workdir', 'Remove configured location auth files')\n .option('-u, --email <email>', 'User email (must provide password)')\n .option('-p, --pass <password>', 'User password (must provide email)')\n .option('-v, --verbose', 'Print extra messages for debugging purposes')\n .description(\n 'Generates server auth tokens from brickadia account email+password',\n )\n .action(\n async ({\n email,\n pass: password,\n local: localAuth,\n workDir,\n global: globalAuth,\n }) => {\n const { verbose } = program.opts();\n const debug = isDebug(program.opts().debug);\n Logger.VERBOSE = isVerbose(verbose);\n\n let branch: string | undefined,\n authDir: string | undefined,\n savedDir: string | undefined,\n launchArgs: string | undefined;\n let isSteam: boolean | undefined;\n\n // if there's a config in the current directory, use that one instead\n if (config.find('.')) workDir = '.';\n\n // check if configured path exists\n if (fs.existsSync(workDir) && fs.statSync(workDir).isDirectory()) {\n Logger.verbose('Using working directory', workDir.yellow);\n // find the config for the working directory\n const configFile = config.find(workDir);\n Logger.verbose('Target config file:', configFile?.yellow);\n if (configFile) {\n try {\n // read the config and extract the branch\n const conf = config.read(configFile);\n Logger.verbose(\n 'Auth config:',\n conf?.server ?? 'no server config'.grey,\n );\n branch = conf?.server?.branch;\n authDir = conf?.server?.authDir;\n savedDir = conf?.server?.savedDir;\n launchArgs = conf?.server?.launchArgs;\n isSteam = !conf?.server?.branch;\n\n if (localAuth && conf?.credentials?.token) {\n Logger.logp(\n \"This server's auth is managed by the token in\",\n configFile.yellow,\n );\n return;\n }\n } catch (error) {\n Logger.errorp('Error reading config file');\n Logger.verbose(error);\n }\n }\n } else {\n Logger.verbose('Using default working directory', workDir.yellow);\n }\n\n savedDir ??= soft.CONFIG_SAVED_DIR;\n\n const workdirPath = path.join(\n config.store.get('defaultOmegga'),\n `data/${savedDir}/Auth`,\n );\n\n if (globalAuth || localAuth) {\n if (globalAuth) {\n const globalAuthPath = path.join(\n soft.CONFIG_HOME,\n savedDir !== soft.CONFIG_SAVED_DIR ? savedDir : '',\n authDir ?? soft.CONFIG_AUTH_DIR,\n );\n Logger.logp('Clearing auth files from', globalAuthPath.yellow);\n auth.clean(globalAuthPath);\n }\n if (workDir) {\n Logger.logp('Clearing auth files from', workdirPath.yellow);\n await file.rmdir(workdirPath);\n }\n if (localAuth) {\n const localPath = path.resolve(\n `data/${savedDir}/`,\n authDir ?? soft.CONFIG_AUTH_DIR,\n );\n Logger.logp('Clearing auth files from', localPath.yellow);\n await file.rmdir(localPath);\n }\n return;\n }\n\n if (!isSteam) {\n Logger.warnp('Authenticating with', 'non-steam launcher'.yellow);\n }\n\n const success = await auth.prompt({\n email,\n password,\n debug,\n branch,\n authDir,\n savedDir,\n launchArgs,\n });\n if (!success) process.exit(1);\n },\n );\n\nprogram\n .command('info')\n .alias('n')\n .description(\n 'Shows server name, description, port, install info, and installed plugins',\n )\n .action(async () => {\n Logger.errorp('not implemented yet');\n // TODO: implement config parsing\n });\n\nprogram\n .command('install <pluginUrl...>')\n .alias('i')\n .option('-f, --force', 'Forcefully re-install existing plugin') // TODO: implement install --force\n .option('-v, --verbose', 'Print extra messages for debugging purposes')\n .description('Installs a plugin to the current brickadia server')\n .action(async plugins => {\n if (!config.find('.')) {\n Logger.errorp(\n 'Not an omegga directory, run ',\n 'omegga init'.yellow,\n 'to setup one.',\n );\n process.exit(1);\n }\n const { force } = program.opts();\n const verbose = isVerbose(program.opts().verbose);\n Logger.VERBOSE = verbose;\n pluginUtil.install(plugins, { verbose, force });\n });\n\nprogram\n .command('update [pluginNames...]')\n .alias('u')\n .option('-f, --force', 'Forcefully re-upgrade existing plugin') // TODO: implement update --force\n .option('-v, --verbose', 'Print extra messages for debugging purposes')\n .description('Updates all or selected installed plugins to latest versions')\n .action(async plugins => {\n if (!config.find('.')) {\n Logger.errorp(\n 'Not an omegga directory, run ',\n 'omegga init'.yellow,\n 'to setup one.',\n );\n process.exit(1);\n }\n const { force } = program.opts();\n const verbose = isVerbose(program.opts().verbose);\n Logger.VERBOSE = verbose;\n pluginUtil.update(plugins, { verbose, force });\n });\n\nprogram\n .command('check [pluginNames...]')\n .option('-v, --verbose', 'Print extra messages for debugging purposes')\n .description('Checks plugins for compatibility issues')\n .action(async plugins => {\n if (!config.find('.')) {\n Logger.errorp(\n 'Not an omegga directory, run ',\n 'omegga init'.yellow,\n 'to setup one.',\n );\n process.exit(1);\n }\n const verbose = isVerbose(program.opts().verbose);\n Logger.VERBOSE = verbose;\n pluginUtil.check(plugins, { verbose });\n });\n\nprogram\n .command('init-plugin')\n .option('-v, --verbose', 'Print extra messages for debugging purposes')\n .description('Initializes a new plugin with the given name and settings')\n .action(async () => {\n const { verbose } = program.opts();\n Logger.VERBOSE = isVerbose(verbose);\n\n pluginUtil.init();\n });\n\nprogram\n .command('plugin-init')\n .description('Alias for ' + 'init-plugin'.yellow.underline)\n .option('-v, --verbose', 'Print extra messages for debugging purposes')\n .action(async () => {\n const { verbose } = program.opts();\n Logger.VERBOSE = isVerbose(verbose);\n\n pluginUtil.init();\n });\n\nprogram\n .command('get-config <pluginName> [configName]')\n .option('-v, --verbose', 'Print extra messages for debugging purposes')\n .option('-j, --json', 'Print config as json')\n .description(\n 'Gets a config for a plugin. If ' +\n 'configName'.yellow.underline +\n ' is omitted, returns all config values.',\n )\n .action(async (pluginName, configName) => {\n if (!config.find('.')) {\n Logger.errorp(\n 'Not an omegga directory, run ',\n 'omegga init'.yellow,\n 'to setup one.',\n );\n process.exit(1);\n }\n const { verbose } = program.opts();\n const json = program.args.includes('-j') || program.args.includes('--json');\n Logger.VERBOSE = isVerbose(verbose);\n if (!configName) {\n pluginUtil.listConfig(pluginName, json);\n } else {\n pluginUtil.getConfig(pluginName, configName, json);\n }\n });\n\nprogram\n .command('set-config <pluginName> [configName] [configValue]')\n .option('-y, --yes', 'Skip confirmation prompt')\n .option('-v, --verbose', 'Print extra messages for debugging purposes')\n .description(\n 'Sets a config for a plugin. If ' +\n 'configValue'.yellow.underline +\n ' is omitted, the config will be reset. If ' +\n 'configName'.yellow.underline +\n ' is omitted, the entire plugin config will be reset.',\n )\n .action(async (pluginName, configName, configValue) => {\n if (!config.find('.')) {\n Logger.errorp(\n 'Not an omegga directory, run ',\n 'omegga init'.yellow,\n 'to setup one.',\n );\n process.exit(1);\n }\n const { verbose } = program.opts();\n const yes = program.args.includes('-y') || program.args.includes('--yes');\n Logger.VERBOSE = isVerbose(verbose);\n if (!configName) {\n pluginUtil.resetAllConfigs(pluginName, yes);\n } else if (!configValue) {\n pluginUtil.resetConfig(pluginName, configName);\n } else {\n pluginUtil.setConfig(pluginName, configName, configValue);\n }\n });\n\nprogram.parseAsync(process.argv);\n\nasync function setupSteam(config: config.IConfig, forceUpdate = false) {\n const steambeta = config?.server?.steambeta;\n const steambetaPassword = config?.server?.steambetaPassword;\n\n const binaryPath = path.join(\n getSteamInstallDir(), // steam install directory\n steambeta ?? 'main', // steam beta branch (or main)\n getSteamGameDir(), // Brickadia\n GAME_BIN_PATH, // path to binary\n );\n\n if (!forceUpdate && fs.existsSync(binaryPath)) {\n Logger.verbose(\n 'Game binary already exists at',\n binaryPath.yellow,\n '- skipping download.',\n );\n return;\n }\n\n // Check if steamcmd is installed\n if (!fs.existsSync(STEAMCMD_PATH)) {\n // Lookup steamcmd in path\n const hasSteamcmd = hasbin.sync('steamcmd');\n\n if (!hasSteamcmd) {\n const skipPrompt = parseEnvBool('SKIP_STEAMCMD_PROMPT') === true;\n\n if (!skipPrompt && isNonInteractive()) {\n Logger.errorp(\n 'SteamCMD is not installed and there is no terminal to prompt on. Set',\n 'SKIP_STEAMCMD_PROMPT=true'.yellow,\n 'to install it without asking. Exiting...',\n );\n process.exit(1);\n }\n\n // Prompt to install steamcmd\n const { install } = skipPrompt\n ? { install: true }\n : await prompts({\n type: 'confirm',\n name: 'install',\n message: 'SteamCMD is not installed. OK to download it?',\n initial: true,\n });\n\n if (!install) {\n Logger.errorp('SteamCMD is required for steam support. Exiting...');\n process.exit(1);\n }\n\n Logger.logp('Downloading SteamCMD...');\n }\n\n try {\n steamcmdDownloadSelf();\n if (!fs.existsSync(STEAMCMD_PATH)) {\n Logger.errorp('Failed to setup SteamCMD. Exiting...');\n process.exit(1);\n }\n } catch (err) {\n Logger.errorp('Error setting up SteamCMD:', err);\n process.exit(1);\n }\n }\n\n Logger.logp('Downloading Brickadia', (steambeta ?? 'main').yellow, '...');\n try {\n await steamcmdDownloadGame({ steambeta, steambetaPassword });\n } catch (err) {\n Logger.errorp('Error downloading Brickadia:', err);\n process.exit(1);\n }\n}\n"],"names":["PKG","isContainer","Logger","config.write","soft","config.defaultConfig","file.mkdir","parseEnvBool","VERSION","config.store","config.find","config.read","config.applyPortOverrides","config.applyMetricsOverrides","getOverrideGameBinary","installLauncher","auth","server","Omegga","Terminal","hasSteamUpdate","readBinaryVersion","STEAMCMD_PATH","steamcmdInteractiveLogin","omeggaConfig","file.rmdir","pluginUtil","config","getSteamInstallDir","getSteamGameDir","GAME_BIN_PATH","isNonInteractive","steamcmdDownloadSelf","steamcmdDownloadGame"],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sources":["../src/main.ts"],"sourcesContent":["import soft, {\n getOverrideGameBinary,\n getSteamGameDir,\n getSteamInstallDir,\n} from '@/softconfig';\nimport { installLauncher } from '@cli/installer';\nimport * as config from '@config';\nimport { readBinaryVersion } from '@omegga/matchers/version';\nimport Omegga from '@omegga/server';\nimport * as file from '@util/file';\nimport { isContainer } from '@util/container';\nimport { isNonInteractive, parseEnvBool } from '@util/env';\nimport 'colors';\nimport commander from 'commander';\nimport dotenv from 'dotenv';\nimport hasbin from 'hasbin';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport prompts from 'prompts';\nimport updateNotifier from 'update-notifier-cjs';\nimport { auth, config as omeggaConfig, pluginUtil, Terminal } from './cli';\nimport { IConfig } from './config/types';\nimport Logger from './logger';\nimport { GAME_BIN_PATH, STEAMCMD_PATH } from './softconfig';\nimport {\n hasSteamUpdate,\n steamcmdDownloadGame,\n steamcmdDownloadSelf,\n steamcmdInteractiveLogin,\n} from './updater';\nimport { PKG, VERSION } from './version';\n\ndotenv.config({ quiet: true });\n\nconst notifier =\n process.env.PACKAGE_NOTIFIER !== 'false'\n ? updateNotifier({\n pkg: PKG,\n updateCheckInterval: 1000 * 60 * 60 * 24,\n })\n : null;\nif (notifier) {\n const { update } = notifier;\n notifier.notify(\n update && isContainer()\n ? {\n message: `Update available ${update.current} → ${update.latest}\\nPull a new container image to update`,\n }\n : undefined,\n );\n}\n\n// TODO: let omegga bundle config (roles, bans, server config) to zip\n// TODO: let omegga unbundle config from zip to current omegga dir\n\n// write a default config file\nconst createDefaultConfig = () => {\n Logger.logp('Created default config file');\n config.write(soft.CONFIG_FILENAMES[0] + '.yml', config.defaultConfig);\n file.mkdir(`data/${soft.CONFIG_SAVED_DIR}/Builds`);\n file.mkdir('plugins');\n return config.defaultConfig;\n};\n\n/**\n * `--verbose` and `--debug` also have environment aliases. Both parse the\n * value rather than testing for presence: an orchestrator that materialises\n * every declared variable has no way to leave one unset, so `VERBOSE=false`\n * has to mean false.\n */\nconst isVerbose = (flag?: unknown) =>\n Boolean(flag) || parseEnvBool('VERBOSE') === true;\nconst isDebug = (flag?: unknown) =>\n Boolean(flag) || parseEnvBool('BRICKADIA_DEBUG') === true;\n\nconst program = commander\n .description(PKG.description)\n .version(VERSION)\n .option(\n '-d, --debug',\n 'Print all console logs rather than just chat messages (env: BRICKADIA_DEBUG)',\n )\n .option(\n '-u, --update',\n 'Check for brickadia updates (on steam) and install them if available',\n )\n .option(\n '-v, --verbose',\n 'Print extra messages for debugging purposes (env: VERBOSE)',\n )\n .action(async () => {\n const { verbose, update } = program.opts();\n const debug = isDebug(program.opts().debug);\n if (program.args.length > 0) {\n program.help();\n process.exit(1);\n }\n Logger.VERBOSE = isVerbose(verbose);\n\n // default working directory is the one specified in config\n let workDir = config.store.get('defaultOmegga');\n Logger.verbose('Using working directory', workDir?.yellow);\n\n // if there's a config in the current directory, use that one instead\n if (config.find('.')) workDir = '.';\n\n // check if configured path exists\n if (!fs.existsSync(workDir)) {\n Logger.errorp('configured omegga default path does not exist');\n process.exit(1);\n }\n if (!fs.statSync(workDir).isDirectory()) {\n Logger.errorp('configured omegga default path is not a directory');\n process.exit(1);\n }\n\n // find the config for the working directory\n const configFile = config.find(workDir);\n Logger.verbose('Target config file:', configFile?.yellow);\n let conf: IConfig;\n\n // create a default config file if it does not already exist, otherwise load in the existing one\n if (!configFile) {\n Logger.verbose('Creating a new config');\n conf = createDefaultConfig();\n } else {\n Logger.verbose('Reading config file');\n try {\n conf = config.read(configFile);\n } catch (error) {\n Logger.errorp('Error reading config file');\n Logger.verbose(error);\n // starting without a working config would only crash later\n process.exit(1);\n }\n }\n\n config.applyPortOverrides(conf);\n config.applyMetricsOverrides(conf);\n\n if (conf?.terminal?.timestamp) {\n Logger.setTimestamp(conf.terminal.timestamp);\n }\n\n const overrideBinary = getOverrideGameBinary();\n const isSteam = !conf?.server?.branch;\n if (overrideBinary) {\n if (!fs.existsSync(overrideBinary)) {\n Logger.error(\n 'Binary',\n overrideBinary.yellow,\n 'in',\n 'BRICKADIA_DIR'.yellow,\n 'does not exist!',\n );\n process.exit(1);\n }\n\n Logger.verbose(\n 'Using override binary',\n overrideBinary.yellow,\n '- skipping download.',\n );\n } else if (isSteam) {\n conf.__STEAM = true;\n await setupSteam(conf, update);\n } else {\n Logger.warnp(\n 'Brickadia will be launched with',\n 'non-steam launcher'.yellow,\n );\n Logger.warnp(\n 'New versions of Brickadia are not published on the old launcher.'\n .yellow,\n );\n\n // Check if the local launcher is installed\n if (fs.existsSync(soft.LOCAL_LAUNCHER)) {\n Logger.verbose(\"Using omegga's brickadia-launcher\");\n conf.server.__LOCAL = true;\n } else {\n Logger.verbose(\"Installing launcher as it's missing\");\n await installLauncher();\n }\n }\n\n const globalToken = auth.getGlobalToken();\n\n const hasHostingToken = Boolean(\n conf?.credentials?.token || process.env.BRICKADIA_TOKEN || globalToken,\n );\n\n // Skip auth when the hosting token is present\n if (hasHostingToken) {\n Logger.verbose(\n 'Skipping auth token generation due to host token presence',\n );\n if (conf?.credentials?.token)\n Logger.verbose('Found token in config file');\n else if (process.env.BRICKADIA_TOKEN)\n Logger.verbose('Found token in', 'BRICKADIA_TOKEN'.yellow);\n else if (globalToken)\n Logger.verbose('Found token in omegga global config');\n else Logger.verbose('unreachable - no token found');\n\n // check if the auth files don't exist\n } else if (\n !auth.exists(\n path.join(\n workDir,\n soft.DATA_PATH,\n conf?.server?.savedDir ?? soft.CONFIG_SAVED_DIR,\n conf?.server?.authDir ?? soft.CONFIG_AUTH_DIR,\n ),\n )\n ) {\n const success = await auth.prompt({\n debug,\n email: conf?.credentials?.['email'] ?? process.env.BRICKADIA_USER,\n password: conf?.credentials?.['password'] ?? process.env.BRICKADIA_PASS,\n isSteam,\n branch: conf?.server?.branch,\n authDir: conf?.server?.authDir,\n savedDir: conf?.server?.savedDir,\n launchArgs: conf?.server?.launchArgs,\n });\n if (!success) {\n Logger.errorp('Start aborted - could not generate auth tokens');\n process.exit(1);\n }\n } else {\n Logger.verbose(\n 'Skipping auth token generation due to existing auth files',\n );\n }\n\n // build options\n const options = {\n // default enable web ui (set to false)\n noweb: typeof conf.omegga?.webui === 'boolean' && !conf.omegga?.webui,\n // default enable https (set to true, will not be https if it can't generate)\n https: typeof conf.omegga?.https !== 'boolean' || conf.omegga?.https,\n port: conf.omegga?.port || soft.DEFAULT_PORT,\n debug,\n };\n\n Logger.verbose('Launching with options', options);\n\n // setup the server\n const server = new Omegga(workDir, conf, options);\n Logger.verbose('Created omegga object');\n\n if (verbose) {\n server.on(\n '*',\n (ev: string) => ev !== 'line' && Logger.verbose('EVENT'.green, ev),\n );\n }\n\n // create a terminal\n Logger.setTerminal(new Terminal(server, options));\n\n if (notifier?.update) {\n Logger.logp(\n `Omegga update is available (${('v' + notifier.update.latest).yellow})!`,\n isContainer()\n ? 'Pull a new container image to update!'\n : `Run ${'npm i -g omegga'.yellow} to update!`,\n );\n }\n\n if (\n conf.__STEAM &&\n !update &&\n !conf.server?.steambetaPassword &&\n process.env.STEAM_NOTIFIER !== 'false'\n ) {\n hasSteamUpdate(conf.server?.steambeta).then(hasUpdate => {\n if (hasUpdate) {\n Logger.logp('A server update is available!'.brightBlue);\n Logger.log(\n ' Restart with',\n 'omegga --update'.yellow,\n 'to update every start.',\n );\n Logger.log(' Run', '/update'.yellow, 'to update', 'now'.green + '!');\n } else {\n Logger.verbose('No server updates available.');\n }\n });\n }\n\n // resolved from the binary, so it's available before the server starts\n const gameVersion = readBinaryVersion(server.getGameBinaryPath());\n\n Logger.logp(\n `Launching Brickadia Server${\n gameVersion ? ' ' + ('CL' + gameVersion).green : ''\n } on port ${('' + (conf.server.port || 7777)).green}...`,\n );\n\n // start the server\n Logger.verbose('Starting Omegga');\n server.start();\n });\n\nprogram\n .command('init')\n .description('Sets up the current directory as a brickadia server')\n .action(async () => {\n const configFile = config.find('.');\n if (configFile) {\n Logger.errorp('Config file already exists:', configFile.yellow.underline);\n process.exit(1);\n }\n createDefaultConfig();\n });\n\nprogram\n .command('steamlogin')\n .description('Interactively log in to Steam (for Steam Guard authentication)')\n .action(async () => {\n if (!process.env.STEAM_USERNAME) {\n Logger.errorp('STEAM_USERNAME environment variable is required.');\n Logger.errorp('Set it in your .env file or environment.');\n process.exit(1);\n }\n\n if (!fs.existsSync(STEAMCMD_PATH)) {\n Logger.errorp(\n 'SteamCMD is not installed. Run',\n 'omegga'.yellow,\n 'first to set it up.',\n );\n process.exit(1);\n }\n\n Logger.logp('Logging in to Steam interactively...');\n const success = await steamcmdInteractiveLogin();\n if (success) {\n Logger.logp('Steam login successful. Credentials are now cached.');\n } else {\n Logger.errorp('Steam login failed.');\n process.exit(1);\n }\n });\n\nprogram\n .command('download')\n .description('Downloads or updates the Brickadia server, then exits')\n .option('-v, --verbose', 'Print extra messages for debugging purposes')\n .action(async () => {\n const { verbose } = program.opts();\n Logger.VERBOSE = isVerbose(verbose);\n\n // the config is only consulted for the steam branch, so a directory\n // without one still installs the default branch\n const configFile = config.find('.');\n const conf = configFile ? config.read(configFile) : config.defaultConfig;\n\n if (conf?.server?.branch) {\n Logger.errorp(\n 'This server is configured for the',\n 'non-steam launcher'.yellow,\n 'and has nothing to update through SteamCMD.',\n );\n process.exit(1);\n }\n\n await setupSteam(conf, true);\n });\n\nprogram\n .command('config [field] [value]')\n .description(\n \"Configure Omegga's default behavior.\\n\" +\n 'Type ' +\n 'omegga config list'.yellow.underline +\n ' for current settings and available fields',\n )\n .action((field, value) => {\n if (!field) field = 'list';\n omeggaConfig(field, value, program.opts());\n });\n\nprogram\n .command('auth')\n .option('-g, --global', 'Remove global auth files')\n .option('-l, --local', 'Remove local auth files')\n .option('-w, --workdir', 'Remove configured location auth files')\n .option('-u, --email <email>', 'User email (must provide password)')\n .option('-p, --pass <password>', 'User password (must provide email)')\n .option('-v, --verbose', 'Print extra messages for debugging purposes')\n .description(\n 'Generates server auth tokens from brickadia account email+password',\n )\n .action(\n async ({\n email,\n pass: password,\n local: localAuth,\n workDir,\n global: globalAuth,\n }) => {\n const { verbose } = program.opts();\n const debug = isDebug(program.opts().debug);\n Logger.VERBOSE = isVerbose(verbose);\n\n let branch: string | undefined,\n authDir: string | undefined,\n savedDir: string | undefined,\n launchArgs: string | undefined;\n let isSteam: boolean | undefined;\n\n // if there's a config in the current directory, use that one instead\n if (config.find('.')) workDir = '.';\n\n // check if configured path exists\n if (fs.existsSync(workDir) && fs.statSync(workDir).isDirectory()) {\n Logger.verbose('Using working directory', workDir.yellow);\n // find the config for the working directory\n const configFile = config.find(workDir);\n Logger.verbose('Target config file:', configFile?.yellow);\n if (configFile) {\n try {\n // read the config and extract the branch\n const conf = config.read(configFile);\n Logger.verbose(\n 'Auth config:',\n conf?.server ?? 'no server config'.grey,\n );\n branch = conf?.server?.branch;\n authDir = conf?.server?.authDir;\n savedDir = conf?.server?.savedDir;\n launchArgs = conf?.server?.launchArgs;\n isSteam = !conf?.server?.branch;\n\n if (localAuth && conf?.credentials?.token) {\n Logger.logp(\n \"This server's auth is managed by the token in\",\n configFile.yellow,\n );\n return;\n }\n } catch (error) {\n Logger.errorp('Error reading config file');\n Logger.verbose(error);\n }\n }\n } else {\n Logger.verbose('Using default working directory', workDir.yellow);\n }\n\n savedDir ??= soft.CONFIG_SAVED_DIR;\n\n const workdirPath = path.join(\n config.store.get('defaultOmegga'),\n `data/${savedDir}/Auth`,\n );\n\n if (globalAuth || localAuth) {\n if (globalAuth) {\n const globalAuthPath = path.join(\n soft.CONFIG_HOME,\n savedDir !== soft.CONFIG_SAVED_DIR ? savedDir : '',\n authDir ?? soft.CONFIG_AUTH_DIR,\n );\n Logger.logp('Clearing auth files from', globalAuthPath.yellow);\n auth.clean(globalAuthPath);\n }\n if (workDir) {\n Logger.logp('Clearing auth files from', workdirPath.yellow);\n await file.rmdir(workdirPath);\n }\n if (localAuth) {\n const localPath = path.resolve(\n `data/${savedDir}/`,\n authDir ?? soft.CONFIG_AUTH_DIR,\n );\n Logger.logp('Clearing auth files from', localPath.yellow);\n await file.rmdir(localPath);\n }\n return;\n }\n\n if (!isSteam) {\n Logger.warnp('Authenticating with', 'non-steam launcher'.yellow);\n }\n\n const success = await auth.prompt({\n email,\n password,\n debug,\n branch,\n authDir,\n savedDir,\n launchArgs,\n });\n if (!success) process.exit(1);\n },\n );\n\nprogram\n .command('info')\n .alias('n')\n .description(\n 'Shows server name, description, port, install info, and installed plugins',\n )\n .action(async () => {\n Logger.errorp('not implemented yet');\n // TODO: implement config parsing\n });\n\nprogram\n .command('install <pluginUrl...>')\n .alias('i')\n .option('-f, --force', 'Forcefully re-install existing plugin') // TODO: implement install --force\n .option('-v, --verbose', 'Print extra messages for debugging purposes')\n .description('Installs a plugin to the current brickadia server')\n .action(async plugins => {\n if (!config.find('.')) {\n Logger.errorp(\n 'Not an omegga directory, run ',\n 'omegga init'.yellow,\n 'to setup one.',\n );\n process.exit(1);\n }\n const { force } = program.opts();\n const verbose = isVerbose(program.opts().verbose);\n Logger.VERBOSE = verbose;\n pluginUtil.install(plugins, { verbose, force });\n });\n\nprogram\n .command('update [pluginNames...]')\n .alias('u')\n .option('-f, --force', 'Forcefully re-upgrade existing plugin') // TODO: implement update --force\n .option('-v, --verbose', 'Print extra messages for debugging purposes')\n .description('Updates all or selected installed plugins to latest versions')\n .action(async plugins => {\n if (!config.find('.')) {\n Logger.errorp(\n 'Not an omegga directory, run ',\n 'omegga init'.yellow,\n 'to setup one.',\n );\n process.exit(1);\n }\n const { force } = program.opts();\n const verbose = isVerbose(program.opts().verbose);\n Logger.VERBOSE = verbose;\n pluginUtil.update(plugins, { verbose, force });\n });\n\nprogram\n .command('check [pluginNames...]')\n .option('-v, --verbose', 'Print extra messages for debugging purposes')\n .description('Checks plugins for compatibility issues')\n .action(async plugins => {\n if (!config.find('.')) {\n Logger.errorp(\n 'Not an omegga directory, run ',\n 'omegga init'.yellow,\n 'to setup one.',\n );\n process.exit(1);\n }\n const verbose = isVerbose(program.opts().verbose);\n Logger.VERBOSE = verbose;\n pluginUtil.check(plugins, { verbose });\n });\n\nprogram\n .command('init-plugin')\n .option('-v, --verbose', 'Print extra messages for debugging purposes')\n .description('Initializes a new plugin with the given name and settings')\n .action(async () => {\n const { verbose } = program.opts();\n Logger.VERBOSE = isVerbose(verbose);\n\n pluginUtil.init();\n });\n\nprogram\n .command('plugin-init')\n .description('Alias for ' + 'init-plugin'.yellow.underline)\n .option('-v, --verbose', 'Print extra messages for debugging purposes')\n .action(async () => {\n const { verbose } = program.opts();\n Logger.VERBOSE = isVerbose(verbose);\n\n pluginUtil.init();\n });\n\nprogram\n .command('get-config <pluginName> [configName]')\n .option('-v, --verbose', 'Print extra messages for debugging purposes')\n .option('-j, --json', 'Print config as json')\n .description(\n 'Gets a config for a plugin. If ' +\n 'configName'.yellow.underline +\n ' is omitted, returns all config values.',\n )\n .action(async (pluginName, configName) => {\n if (!config.find('.')) {\n Logger.errorp(\n 'Not an omegga directory, run ',\n 'omegga init'.yellow,\n 'to setup one.',\n );\n process.exit(1);\n }\n const { verbose } = program.opts();\n const json = program.args.includes('-j') || program.args.includes('--json');\n Logger.VERBOSE = isVerbose(verbose);\n if (!configName) {\n pluginUtil.listConfig(pluginName, json);\n } else {\n pluginUtil.getConfig(pluginName, configName, json);\n }\n });\n\nprogram\n .command('set-config <pluginName> [configName] [configValue]')\n .option('-y, --yes', 'Skip confirmation prompt')\n .option('-v, --verbose', 'Print extra messages for debugging purposes')\n .description(\n 'Sets a config for a plugin. If ' +\n 'configValue'.yellow.underline +\n ' is omitted, the config will be reset. If ' +\n 'configName'.yellow.underline +\n ' is omitted, the entire plugin config will be reset.',\n )\n .action(async (pluginName, configName, configValue) => {\n if (!config.find('.')) {\n Logger.errorp(\n 'Not an omegga directory, run ',\n 'omegga init'.yellow,\n 'to setup one.',\n );\n process.exit(1);\n }\n const { verbose } = program.opts();\n const yes = program.args.includes('-y') || program.args.includes('--yes');\n Logger.VERBOSE = isVerbose(verbose);\n if (!configName) {\n pluginUtil.resetAllConfigs(pluginName, yes);\n } else if (!configValue) {\n pluginUtil.resetConfig(pluginName, configName);\n } else {\n pluginUtil.setConfig(pluginName, configName, configValue);\n }\n });\n\nprogram.parseAsync(process.argv);\n\nasync function setupSteam(config: config.IConfig, forceUpdate = false) {\n const steambeta = config?.server?.steambeta;\n const steambetaPassword = config?.server?.steambetaPassword;\n\n const binaryPath = path.join(\n getSteamInstallDir(), // steam install directory\n steambeta ?? 'main', // steam beta branch (or main)\n getSteamGameDir(), // Brickadia\n GAME_BIN_PATH, // path to binary\n );\n\n if (!forceUpdate && fs.existsSync(binaryPath)) {\n Logger.verbose(\n 'Game binary already exists at',\n binaryPath.yellow,\n '- skipping download.',\n );\n return;\n }\n\n // Check if steamcmd is installed\n if (!fs.existsSync(STEAMCMD_PATH)) {\n // Lookup steamcmd in path\n const hasSteamcmd = hasbin.sync('steamcmd');\n\n if (!hasSteamcmd) {\n const skipPrompt = parseEnvBool('SKIP_STEAMCMD_PROMPT') === true;\n\n if (!skipPrompt && isNonInteractive()) {\n Logger.errorp(\n 'SteamCMD is not installed and there is no terminal to prompt on. Set',\n 'SKIP_STEAMCMD_PROMPT=true'.yellow,\n 'to install it without asking. Exiting...',\n );\n process.exit(1);\n }\n\n // Prompt to install steamcmd\n const { install } = skipPrompt\n ? { install: true }\n : await prompts({\n type: 'confirm',\n name: 'install',\n message: 'SteamCMD is not installed. OK to download it?',\n initial: true,\n });\n\n if (!install) {\n Logger.errorp('SteamCMD is required for steam support. Exiting...');\n process.exit(1);\n }\n\n Logger.logp('Downloading SteamCMD...');\n }\n\n try {\n steamcmdDownloadSelf();\n if (!fs.existsSync(STEAMCMD_PATH)) {\n Logger.errorp('Failed to setup SteamCMD. Exiting...');\n process.exit(1);\n }\n } catch (err) {\n Logger.errorp('Error setting up SteamCMD:', err);\n process.exit(1);\n }\n }\n\n Logger.logp('Downloading Brickadia', (steambeta ?? 'main').yellow, '...');\n try {\n await steamcmdDownloadGame({ steambeta, steambetaPassword });\n } catch (err) {\n Logger.errorp('Error downloading Brickadia:', err);\n process.exit(1);\n }\n}\n"],"names":["PKG","isContainer","Logger","config.write","soft","config.defaultConfig","file.mkdir","parseEnvBool","VERSION","config.store","config.find","config.read","config.applyPortOverrides","config.applyMetricsOverrides","getOverrideGameBinary","installLauncher","auth","server","Omegga","Terminal","hasSteamUpdate","readBinaryVersion","STEAMCMD_PATH","steamcmdInteractiveLogin","omeggaConfig","file.rmdir","pluginUtil","config","getSteamInstallDir","getSteamGameDir","GAME_BIN_PATH","isNonInteractive","steamcmdDownloadSelf","steamcmdDownloadGame"],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,24 @@
1
1
  {
2
2
  "name": "omegga",
3
- "version": "1.17.0",
3
+ "version": "1.17.2",
4
4
  "description": "Brickadia server installer, updater, manager, wrapper, configurator, and automator",
5
5
  "engines": {
6
6
  "node": ">=23.0.0"
7
7
  },
8
8
  "main": "index.js",
9
+ "files": [
10
+ "bin/",
11
+ "dist/",
12
+ "public/",
13
+ "!public/**/*.map",
14
+ "templates/",
15
+ "tools/brickadia.sh",
16
+ "tools/install_launcher.sh",
17
+ "tools/install_steamcmd.sh",
18
+ "index.js"
19
+ ],
9
20
  "bin": {
10
- "omegga": "./bin/omegga"
21
+ "omegga": "bin/omegga"
11
22
  },
12
23
  "dependencies": {
13
24
  "@simplewebauthn/browser": "^13.3.0",
@@ -145,4 +156,4 @@
145
156
  "url": "https://github.com/brickadia-community/omegga/issues"
146
157
  },
147
158
  "homepage": "https://github.com/brickadia-community/omegga#readme"
148
- }
159
+ }
package/.nvmrc DELETED
@@ -1 +0,0 @@
1
- 24