feat: Fix yargs cli

This commit is contained in:
Wanjohi
2025-11-05 16:05:07 +03:00
parent be69de81ca
commit d1295aa4ad
4 changed files with 78 additions and 1 deletions

View File

@@ -16,5 +16,8 @@
"peerDependencies": {
"@nestri/core": "workspace:^",
"@nestri/function": "workspace:^"
},
"dependencies": {
"yargs": "^18.0.0"
}
}

View File

@@ -0,0 +1,26 @@
// import { ConfigMarkdown } from "@/config/markdown"
// import { Config } from "../config/config"
// import { UI } from "./ui"
export function FormatError(input: unknown) {
// if (Config.JsonError.isInstance(input)) {
// return (
// `Config file at ${input.data.path} is not valid JSON(C)` +
// (input.data.message ? `: ${input.data.message}` : "")
// )
// }
// if (Config.ConfigDirectoryTypoError.isInstance(input)) {
// return `Directory "${input.data.dir}" in ${input.data.path} is not valid. Use "${input.data.suggestion}" instead. This is a common typo.`
// }
// if (ConfigMarkdown.FrontmatterError.isInstance(input)) {
// return `Failed to parse frontmatter in ${input.data.path}:\n${input.data.message}`
// }
// if (Config.InvalidError.isInstance(input))
// return [
// `Config file at ${input.data.path} is invalid` +
// (input.data.message ? `: ${input.data.message}` : ""),
// ...(input.data.issues?.map((issue) => "↳ " + issue.message + " " + issue.path.join(".")) ??
// []),
// ].join("\n")
return "TODO: Format this error message";
}

View File

@@ -1,6 +1,8 @@
import yargs from "yargs";
import { FormatError } from "./error";
import { hideBin } from "yargs/helpers";
import { Log } from "@nestri/core/utils/log";
import { NamedError } from "@nestri/core/utils/error";
import { Installation } from "@nestri/core/installation/index";
process.on("unhandledRejection", (e) => {
@@ -16,8 +18,51 @@ process.on("uncaughtException", (e) => {
});
const cli = yargs(hideBin(process.argv))
.scriptName("nestri-studio")
.scriptName("nestri")
.help("help", "Show help")
.alias("h", "help")
.version("version", "show version number", Installation.VERSION)
.alias("v", "version");
try {
await cli.parse();
} catch (e) {
let data: Record<string, any> = {};
if (e instanceof NamedError) {
const obj = e.toObject();
Object.assign(data, {
...obj.data,
});
}
if (e instanceof Error) {
Object.assign(data, {
name: e.name,
message: e.message,
cause: e.cause?.toString(),
stack: e.stack,
});
}
if (e instanceof ResolveMessage) {
Object.assign(data, {
name: e.name,
message: e.message,
code: e.code,
specifier: e.specifier,
referrer: e.referrer,
position: e.position,
importKind: e.importKind,
});
}
Log.Default.error("fatal", data);
const formatted = FormatError(e);
// if (formatted) UI.error(formatted)
if (formatted === undefined) {
// UI.error("Unexpected error, check log file at " + Log.file() + " for more details" + EOL)
console.error(e);
}
process.exitCode = 1;
} finally {
process.exit();
}