arkit
Version:
Visualises JavaScript, TypeScript and Flow codebases as meaningful and committable architecture diagrams
57 lines (53 loc) • 1.37 kB
text/typescript
import yargs from "yargs";
import { hideBin } from "yargs/helpers";
const parseDirectory = (directory: string | string[]): string => {
if (directory instanceof Array) directory = directory[0];
return directory || ".";
};
const splitByComma = (value = ""): string[] => {
return value.split(",");
};
export const cli = yargs(hideBin(process.argv))
.scriptName("arkit")
.usage("$0 [directory]")
.option("directory", {
description: "Working directory",
default: ".",
coerce: parseDirectory,
})
.option("first", {
description: "File patterns to be first in the graph",
string: true,
})
.option("exclude", {
description: "File patterns to exclude from the graph",
default: "test,tests,dist,coverage,**/*.test.*,**/*.spec.*,**/*.min.*",
})
.option("output", {
description: "Output path or type (svg, png or puml)",
default: "arkit.svg",
})
.option("config", {
description: "Config file path (json or js)",
default: "arkit.json",
})
.option("json", {
description: "Output results as JSON to stdout",
boolean: true,
default: false,
})
.alias({
d: "directory",
c: "config",
o: "output",
f: "first",
e: "exclude",
h: "help",
v: "version",
_: "directory",
})
.coerce({
exclude: splitByComma,
first: splitByComma,
output: splitByComma,
});