Skip to content

Commit

Permalink
added WrapperError with the github reference
Browse files Browse the repository at this point in the history
  • Loading branch information
nktknshn committed Jun 6, 2023
1 parent e294e35 commit cd7eb78
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 18 deletions.
3 changes: 2 additions & 1 deletion src/command/commands/composed/helper-object.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { WrapperError } from "../../../common/error";
import { EmptyRecord } from "../../../common/types";
import { Command } from "../..";
import { showCommands } from "../helpers";
Expand All @@ -17,7 +18,7 @@ export const createHelperObject = <
for (const name of commandNames) {
const cmd = findByNameInComposed(commands, name);
if (!cmd) {
throw new Error(
throw WrapperError.create(
`Command ${name} not found in composed command ${
showCommands(commands)
}`,
Expand Down
9 changes: 5 additions & 4 deletions src/command/commands/with-subcommands/subs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { CommandsTuple, YargsCommandBuilder } from "../../types";
import { CommandBasic } from "../basic/type";

import y from "yargs";
import { WrapperError } from "../../../common/error";
import { EmptyRecord } from "../../../common/types";
import { command } from "../basic/command";
import { GetCommandNameFromDesc } from "../basic/type-command-name";
Expand Down Expand Up @@ -113,7 +114,7 @@ export function subs(
) {
// overload 2 or 3
if (!(typeof subcommandsOrDescription === "string")) {
throw new Error("Invalid overload");
throw WrapperError.create("Invalid overload");
}

if (typeof builderOrSubcommands === "function") {
Expand All @@ -127,7 +128,7 @@ export function subs(
return overload12(parentCommand, subcommands);
}
else {
throw new Error("Invalid overload");
throw WrapperError.create("Invalid overload");
}
}
else {
Expand All @@ -139,13 +140,13 @@ export function subs(
return overload12(parentCommand, builderOrSubcommands);
}
else {
throw new Error("Invalid overload");
throw WrapperError.create("Invalid overload");
}
}
}
else {
if (typeof subcommandsOrDescription === "string") {
throw new Error("Invalid overload");
throw WrapperError.create("Invalid overload");
}
// overload 1 or 2
return overload12(
Expand Down
19 changes: 16 additions & 3 deletions src/common/error.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,17 @@
export type ErrorType = {
error: string;
message: string;
};
error: string;
message: string;
};

export class WrapperError extends Error {
constructor(message: string) {
super(
`${message}. This shouldn't happen. Please open an issue at https://github.com/nktknshn/yargs-command-wrapper/issues`,
);
this.name = "WrapperError";
}

static create(message: string): WrapperError {
return new WrapperError(message);
}
}
25 changes: 16 additions & 9 deletions src/handler/create-handler-for/create-handler-for.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { CommandArgs } from "../../command/commands/args/type-command-args";
import { CommandArgsGeneric } from "../../command/commands/args/type-command-args-generic";
import { NestedCommandArgs } from "../../command/commands/args/type-nested-command-args";
import { showCommand } from "../../command/commands/helpers";
import { WrapperError } from "../../common/error";
import { EmptyRecord } from "../../common/types";
import { ComposableHandlerFor } from "../handler-composable/composable-handler-for";
import { showComposableHandler } from "../handler-composable/helpers";
Expand Down Expand Up @@ -81,7 +82,7 @@ export function createHandlerFor(
return _createHandlerForCommand(command, functionOrRecord);
}
else {
throw new Error(
throw WrapperError.create(
`Invalid handler for command ${command.commandName}. Expected function.`,
);
}
Expand All @@ -94,7 +95,7 @@ export function createHandlerFor(
return _createHandlerForComposed(command, functionOrRecord);
}
else {
throw new Error(
throw WrapperError.create(
`Invalid handler for composed command ${showCommand(command)}.`,
);
}
Expand Down Expand Up @@ -142,7 +143,7 @@ const _createHandlerForComposed = (
if (!(commandName in functionOrRecord)) {
console.error(args, functionOrRecord);

throw new Error(
throw WrapperError.create(
`No handler found for command ${String(commandName)} in record`,
);
}
Expand All @@ -155,7 +156,9 @@ const _createHandlerForComposed = (
);

if (commandToHandle === undefined) {
throw new Error(`No command ${String(commandName)} among composed.`);
throw WrapperError.create(
`No command ${String(commandName)} among composed.`,
);
}

return composedHandlerFunction(args, commandToHandle, handler);
Expand Down Expand Up @@ -208,15 +211,17 @@ const _createHandlerForSubcommands = (

if (command.command.commandName !== commandName) {
console.error(args, command);
throw new Error(`Unmatched command name ${commandName}`);
throw WrapperError.create(`Unmatched command name ${commandName}`);
}

const _args = popCommand(args);

if (!(_args.command in functionOrRecord)) {
console.error(_args, functionOrRecord);

throw new Error(`No handler found for command ${commandName}`);
throw WrapperError.create(
`No handler found for command ${commandName}`,
);
}

const handler = functionOrRecord[_args.command];
Expand All @@ -228,7 +233,9 @@ const _createHandlerForSubcommands = (
);

if (commandToHandle === undefined) {
throw new Error(`No command ${commandName} among subcommands`);
throw WrapperError.create(
`No command ${commandName} among subcommands`,
);
}

return composedHandlerFunction(_args, commandToHandle, handler);
Expand Down Expand Up @@ -268,7 +275,7 @@ const composedHandlerFunction = (
}
else {
// somehow the handler does not support the command (shouldn't happen if the typing works properly)
throw new Error(
throw WrapperError.create(
`Invalid handler for ${commandToHandle.commandName}: ${
showComposableHandler(handler)
}`,
Expand All @@ -277,7 +284,7 @@ const composedHandlerFunction = (
}
else {
// handler for a basic command is a record (shouldn't happen if the typing works properly)
throw new Error(
throw WrapperError.create(
`Invalid handler for command ${commandName}. Expected function or composable handler.`,
);
}
Expand Down
5 changes: 4 additions & 1 deletion src/handler/handler-composable/compose.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { CommandArgs } from "../../command/commands/args/type-command-args";
import { WrapperError } from "../../common/error";
import { ComposableHandler } from "./type-composable-handler";
import { ComposeArgv, ComposedHandlers } from "./types-compose";

Expand Down Expand Up @@ -46,7 +47,9 @@ export function composeHandlers(
}
}

throw new Error(`No handler found for command ${String(args.command)}`);
throw WrapperError.create(
`No handler found for command ${String(args.command)}`,
);
};

return {
Expand Down

0 comments on commit cd7eb78

Please sign in to comment.