Full CLI rework and repair

This commit is contained in:
Jesse Wierzbinski 2024-03-11 20:20:38 -10:00
parent cbc6f46103
commit 28c73bc62a
No known key found for this signature in database
9 changed files with 1739 additions and 1114 deletions

View file

@ -117,7 +117,9 @@ export class CliBuilder {
prev.categories.length > current.categories.length ? prev : current
);
const argsWithoutCategories = revelantArgs.slice(command.categories.length);
const argsWithoutCategories = revelantArgs.slice(
command.categories.length
);
return await command.run(argsWithoutCategories);
}
@ -243,8 +245,6 @@ export class CliBuilder {
})
);
console.log(optimal_length)
for (const line of writeBuffer.split("\n")) {
const [left, right] = line.split("|");
if (!right) {
@ -261,6 +261,7 @@ export class CliBuilder {
type ExecuteFunction<T> = (
instance: CliCommand,
args: Partial<T>
// eslint-disable-next-line @typescript-eslint/no-invalid-void-type
) => Promise<number> | Promise<void> | number | void;
/**
@ -364,7 +365,7 @@ ${unpositionedArgs
currentParameter = null;
} else {
const positionedArgType = this.argTypes.find(
argType => argType.positioned
argType => argType.positioned && !parsedArgs[argType.name]
);
if (positionedArgType) {
parsedArgs[positionedArgType.name] = this.castArgValue(

View file

@ -113,7 +113,7 @@ describe("CliCommand", () => {
).toEqual(["value1", "value2"]);
});
it("should run the execute function with the parsed parameters", () => {
it("should run the execute function with the parsed parameters", async () => {
const mockExecute = jest.fn();
cliCommand = new CliCommand(
["category1", "category2"],
@ -142,7 +142,7 @@ describe("CliCommand", () => {
mockExecute
);
cliCommand.run([
await cliCommand.run([
"--arg1",
"value1",
"--arg2",
@ -159,7 +159,7 @@ describe("CliCommand", () => {
});
});
it("should work with a mix of positioned and non-positioned arguments", () => {
it("should work with a mix of positioned and non-positioned arguments", async () => {
const mockExecute = jest.fn();
cliCommand = new CliCommand(
["category1", "category2"],
@ -194,7 +194,7 @@ describe("CliCommand", () => {
mockExecute
);
cliCommand.run([
await cliCommand.run([
"--arg1",
"value1",
"--arg2",
@ -324,7 +324,7 @@ describe("CliBuilder", () => {
expect(cliBuilder.commands).not.toContain(mockCommand2);
});
it("should process args correctly", () => {
it("should process args correctly", async () => {
const mockExecute = jest.fn();
const mockCommand = new CliCommand(
["category1", "sub1"],
@ -339,7 +339,7 @@ describe("CliBuilder", () => {
mockExecute
);
cliBuilder.registerCommand(mockCommand);
cliBuilder.processArgs([
await cliBuilder.processArgs([
"./cli.ts",
"category1",
"sub1",