everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
134 lines (132 loc) • 5.38 kB
JavaScript
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
const require_load = require('../services/resolution/load.cjs');
const require_services_resolution_resolver = require('../services/resolution/resolver.cjs');
const require_framework_version = require('../services/framework-version.cjs');
const require_secrets = require('../handlers/secrets.cjs');
const require_errors = require('../utils/errors.cjs');
const require_plugin = require('../plugin.cjs');
const require_banner = require('../utils/banner.cjs');
const require_catalog = require('./catalog.cjs');
const require_db = require('./commands/db.cjs');
const require_dev = require('./commands/dev.cjs');
const require_init = require('./commands/init.cjs');
const require_status = require('./status.cjs');
const require_inspect = require('./commands/inspect.cjs');
const require_lifecycle = require('./commands/lifecycle.cjs');
const require_publish = require('./commands/publish.cjs');
const require_scaffold = require('./commands/scaffold.cjs');
const require_help = require('./help.cjs');
const require_parse = require('./parse.cjs');
let node_path = require("node:path");
let effect = require("effect");
let node_process = require("node:process");
node_process = require_runtime.__toESM(node_process, 1);
let every_plugin = require("every-plugin");
//#region src/cli/main.ts
var CliError = class extends effect.Data.TaggedError("CliError") {};
const customRunners = {
dev: require_dev.runDev,
start: require_dev.runStart,
init: require_init.runInit
};
const preCalls = { rollback: require_publish.rollbackPreCall };
const renderers = {
...require_db.dbRenderers,
...require_inspect.inspectRenderers,
...require_lifecycle.lifecycleRenderers,
...require_publish.publishRenderers,
...require_scaffold.scaffoldRenderers,
...require_secrets.secretsRenderers
};
const cliProgram = effect.Effect.tryPromise({
try: async () => {
const args = node_process.default.argv.slice(2);
const helpIndex = args.indexOf("--help") !== -1 ? args.indexOf("--help") : args.indexOf("-h");
if (helpIndex !== -1) {
const helpTarget = require_catalog.findCommandDescriptor(args.slice(0, helpIndex));
if (helpTarget) {
require_help.printCommandHelp(helpTarget.descriptor);
return;
}
require_help.printHelp();
return;
}
const invocationArgs = args.length > 0 ? args : ["dev"];
const command = invocationArgs[0] ?? "dev";
const commandMatch = require_catalog.findCommandDescriptor(invocationArgs);
if (!commandMatch) {
console.error(`Unknown command: ${command}`);
node_process.default.exit(1);
}
const { descriptor, consumed } = commandMatch;
const commandArgs = invocationArgs.slice(consumed);
let parsedInput;
try {
parsedInput = require_parse.parseCommandInput(descriptor, commandArgs);
} catch (error) {
throw new CliError({ message: require_errors.formatUnknownError(error) });
}
const bootInput = parsedInput;
const cwdConfigPath = require_load.findConfigPath();
const configPath = bootInput.configPath ?? cwdConfigPath;
require_services_resolution_resolver.installBundleFetchFromEnv({ configPath });
const projectDir = cwdConfigPath ? (0, node_path.dirname)(cwdConfigPath) : void 0;
const edResolved = projectDir ? require_framework_version.resolveFrameworkPackage(projectDir, "everything-dev") : void 0;
const displayVersion = edResolved?.installedVersion ? `${edResolved.installedVersion}${edResolved.isLinked ? " (linked)" : ""}` : void 0;
if (!node_process.default.env.BOS_NO_BANNER) require_banner.printBanner("everything-dev", displayVersion);
const pluginRuntime = (0, every_plugin.createPluginRuntime)({
registry: { bos: { module: require_plugin.default } },
secrets: {}
});
const client = (await pluginRuntime.usePlugin.bind(pluginRuntime)("bos", {
variables: {
configPath: configPath ?? void 0,
configDir: cwdConfigPath ? (0, node_path.dirname)(cwdConfigPath) : void 0
},
secrets: {}
})).createClient();
const outdatedWarning = require_status.warnIfOutdated(client, command);
try {
const input = parsedInput;
const ctx = {
client,
input,
descriptor,
projectDir,
configPath,
outdatedWarning
};
await preCalls[descriptor.key]?.(ctx);
const custom = customRunners[descriptor.key];
if (custom) {
await custom(ctx);
return;
}
const result = await client[descriptor.key](input);
if (result?.status === "error" && descriptor.key !== "publish" && descriptor.key !== "deploy") {
console.error(`[CLI] ${require_errors.formatUnknownError(result.error)}`);
node_process.default.exit(1);
}
await renderers[descriptor.key]?.(result, ctx);
} catch (error) {
throw new CliError({ message: require_errors.formatUnknownError(error) });
}
},
catch: (error) => new CliError({ message: require_errors.formatUnknownError(error) })
});
const runCli = async () => {
const exit = await effect.Effect.runPromiseExit(cliProgram);
if (effect.Exit.isFailure(exit)) {
const reasons = exit.cause.reasons ?? [];
for (const reason of reasons) {
if (reason?._tag !== "Fail") continue;
const failure = reason.error;
console.error(`[CLI] ${require_errors.formatUnknownError(failure)}`);
}
node_process.default.exit(1);
}
};
//#endregion
exports.CliError = CliError;
exports.runCli = runCli;
//# sourceMappingURL=main.cjs.map