feat: polish nodes cli output
This commit is contained in:
@@ -1,13 +1,28 @@
|
||||
import { defaultRuntime } from "../../runtime.js";
|
||||
import { isRich, theme } from "../../terminal/theme.js";
|
||||
import { runCommandWithRuntime } from "../cli-utils.js";
|
||||
import { unauthorizedHintForMessage } from "./rpc.js";
|
||||
|
||||
export function getNodesTheme() {
|
||||
const rich = isRich();
|
||||
const color = (fn: (value: string) => string) => (value: string) => (rich ? fn(value) : value);
|
||||
return {
|
||||
rich,
|
||||
heading: color(theme.heading),
|
||||
ok: color(theme.success),
|
||||
warn: color(theme.warn),
|
||||
muted: color(theme.muted),
|
||||
error: color(theme.error),
|
||||
};
|
||||
}
|
||||
|
||||
export function runNodesCommand(label: string, action: () => Promise<void>) {
|
||||
return runCommandWithRuntime(defaultRuntime, action, (err) => {
|
||||
const message = String(err);
|
||||
defaultRuntime.error(`nodes ${label} failed: ${message}`);
|
||||
const { error, warn } = getNodesTheme();
|
||||
defaultRuntime.error(error(`nodes ${label} failed: ${message}`));
|
||||
const hint = unauthorizedHintForMessage(message);
|
||||
if (hint) defaultRuntime.error(hint);
|
||||
if (hint) defaultRuntime.error(warn(hint));
|
||||
defaultRuntime.exit(1);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user