Skip to content

Commit 36c6a12

Browse files
committed
fix(cli-forge): ensure handler return types flow through sdk typings properly
1 parent 10ee1f2 commit 36c6a12

File tree

3 files changed

+21
-12
lines changed

3 files changed

+21
-12
lines changed

packages/cli-forge/src/lib/internal-cli.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,15 +171,19 @@ export class InternalCLI<
171171
return this;
172172
}
173173

174-
command<TCommandArgs extends TArgs, TCmdName extends string>(
175-
cmd: Command<TArgs, TCommandArgs, TCmdName>
174+
command<
175+
TCommandArgs extends TArgs,
176+
TCmdName extends string,
177+
TChildHandlerReturn = void
178+
>(
179+
cmd: Command<TArgs, TCommandArgs, TCmdName, TChildHandlerReturn>
176180
): CLI<
177181
TArgs,
178182
THandlerReturn,
179183
TChildren & {
180184
[key in TCmdName]: CLI<
181185
TCommandArgs,
182-
void,
186+
TChildHandlerReturn,
183187
{},
184188
CLI<TArgs, THandlerReturn, TChildren, TParent>
185189
>;

packages/cli-forge/src/lib/public-api.ts

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,19 @@ export interface CLI<
8989
TChildren = {},
9090
TParent = undefined
9191
> {
92-
command<TCommandArgs extends TArgs, TCmdName extends string>(
93-
cmd: Command<TArgs, TCommandArgs, TCmdName>
92+
command<
93+
TCommandArgs extends TArgs,
94+
TCmdName extends string,
95+
TChildHandlerReturn = void
96+
>(
97+
cmd: Command<TArgs, TCommandArgs, TCmdName, TChildHandlerReturn>
9498
): CLI<
9599
TArgs,
96100
THandlerReturn,
97101
TChildren & {
98102
[key in TCmdName]: CLI<
99103
TCommandArgs,
100-
void,
104+
TChildHandlerReturn,
101105
{},
102106
CLI<TArgs, THandlerReturn, TChildren, TParent>
103107
>;
@@ -918,12 +922,13 @@ export interface CLICommandOptions<
918922
export type Command<
919923
TInitial extends ParsedArgs = any,
920924
TArgs extends TInitial = TInitial,
921-
TCommandName extends string = string
925+
TCommandName extends string = string,
926+
THandlerReturn = void
922927
> =
923928
| ({
924929
name: TCommandName;
925-
} & CLICommandOptions<TInitial, TArgs>)
926-
| CLI<TArgs>;
930+
} & CLICommandOptions<TInitial, TArgs, THandlerReturn>)
931+
| CLI<TArgs, THandlerReturn>;
927932

928933
/**
929934
* Error Handler for CLI applications. Error handlers should re-throw the error if they cannot handle it.

type-tests/fixtures/composable-commands.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,15 @@ cli('db-cli')
8484
builder: (c) => withPromotionOpts(c),
8585
handler: async (opts, ctx) => {
8686
const { seed, migrate, reset } = ctx.command.getParent().getChildren();
87-
reset.getHandler()?.({
87+
await reset.getHandler()?.({
8888
local: opts.local,
8989
});
90-
migrate.getHandler()?.({
90+
await migrate.getHandler()?.({
9191
local: opts.local,
9292
//@ts-expect-error -- this field shouldn't be supported by TS, if it is that signals bad type inference
9393
type: 'foo',
9494
});
95-
seed.getHandler()?.({
95+
await seed.getHandler()?.({
9696
local: opts.local,
9797
type: 'scrape',
9898
promotion: opts.promotion,

0 commit comments

Comments
 (0)