refactor(cli): migrate to commander framework and simplify config loading
Publish to Gitea Registry / publish (push) Failing after 4s

Replace hand-rolled CLI argument parsing with Commander for command
registration and option handling. Streamline config resolution by
removing the BrickConfig type and accepting a plain source string
with BRICK_SOURCE env var support.

- Replace manual CLI dispatch with Commander-based command tree
- Simplify resolveConfig/resolveSource to a single resolveSource function
- Remove BrickConfig interface in favor of direct source string
- Move isRemote check into index-loader as a local utility
- Update loadIndex signature to accept source string directly
This commit is contained in:
yangzhaohan
2026-06-22 16:46:44 +08:00
parent a258407fae
commit 35c351e716
7 changed files with 59 additions and 122 deletions
+4 -26
View File
@@ -1,30 +1,8 @@
import type { BrickConfig } from "../types/index.js";
const DEFAULT_SOURCE =
"https://gitea.synoth.com/synoth/brick-index/raw/branch/master/blocks.yaml";
function parseSourceFromArgs(args: string[]): string | undefined {
const idx = args.indexOf("--source");
if (idx !== -1 && idx + 1 < args.length) {
return args[idx + 1];
}
return undefined;
}
function isRemoteSource(source: string): boolean {
return source.startsWith("http://") || source.startsWith("https://");
}
export function resolveConfig(args: string[]): BrickConfig {
const cliSource = parseSourceFromArgs(args);
if (cliSource) {
return { source: cliSource, isRemote: isRemoteSource(cliSource) };
}
const envSource = process.env.BRICK_SOURCE;
if (envSource) {
return { source: envSource, isRemote: isRemoteSource(envSource) };
}
return { source: DEFAULT_SOURCE, isRemote: true };
export function resolveSource(cliSource?: string): string {
if (cliSource) return cliSource;
if (process.env.BRICK_SOURCE) return process.env.BRICK_SOURCE;
return DEFAULT_SOURCE;
}