@@ -12,6 +12,11 @@ import { fromErrorObject, isErrorObject } from "@core/errorutil/error-object";
1212import { unreachable } from "@core/errorutil/unreachable" ;
1313import { EXIT_CODE } from "../constants.ts" ;
1414import { findProbitasConfigFile , loadConfig } from "../config.ts" ;
15+ import {
16+ createUnknownArgHandler ,
17+ extractKnownOptions ,
18+ formatUnknownArgError ,
19+ } from "../unknown_args.ts" ;
1520import { createDiscoveryProgress , writeStatus } from "../progress.ts" ;
1621import {
1722 configureLogging ,
@@ -29,6 +34,36 @@ import {
2934
3035const logger = getLogger ( [ "probitas" , "cli" , "list" ] ) ;
3136
37+ /**
38+ * parseArgs configuration for the list command
39+ */
40+ const PARSE_ARGS_CONFIG = {
41+ string : [ "config" , "include" , "exclude" , "selector" , "env" ] ,
42+ boolean : [
43+ "help" ,
44+ "json" ,
45+ "no-env" ,
46+ "reload" ,
47+ "quiet" ,
48+ "verbose" ,
49+ "debug" ,
50+ ] ,
51+ collect : [ "include" , "exclude" , "selector" ] ,
52+ alias : {
53+ h : "help" ,
54+ s : "selector" ,
55+ r : "reload" ,
56+ v : "verbose" ,
57+ q : "quiet" ,
58+ d : "debug" ,
59+ } ,
60+ default : {
61+ include : undefined ,
62+ exclude : undefined ,
63+ selector : undefined ,
64+ } ,
65+ } as const ;
66+
3267/**
3368 * Execute the list command
3469 *
@@ -46,34 +81,33 @@ export async function listCommand(
4681 // Extract deno options first (before parseArgs)
4782 const { denoArgs, remainingArgs } = extractDenoOptions ( args ) ;
4883
84+ // Setup unknown argument handler
85+ const knownOptions = extractKnownOptions ( PARSE_ARGS_CONFIG ) ;
86+ const { handler : unknownHandler , result : unknownResult } =
87+ createUnknownArgHandler ( {
88+ knownOptions,
89+ commandName : "list" ,
90+ } ) ;
91+
4992 // Parse command-line arguments
5093 const parsed = parseArgs ( remainingArgs , {
51- string : [ "config" , "include" , "exclude" , "selector" , "env" ] ,
52- boolean : [
53- "help" ,
54- "json" ,
55- "no-env" ,
56- "reload" ,
57- "quiet" ,
58- "verbose" ,
59- "debug" ,
60- ] ,
61- collect : [ "include" , "exclude" , "selector" ] ,
62- alias : {
63- h : "help" ,
64- s : "selector" ,
65- r : "reload" ,
66- v : "verbose" ,
67- q : "quiet" ,
68- d : "debug" ,
69- } ,
70- default : {
71- include : undefined ,
72- exclude : undefined ,
73- selector : undefined ,
74- } ,
94+ ...PARSE_ARGS_CONFIG ,
95+ unknown : unknownHandler ,
7596 } ) ;
7697
98+ // Check for unknown arguments before showing help
99+ if ( unknownResult . hasErrors ) {
100+ for ( const unknown of unknownResult . unknownArgs ) {
101+ console . error (
102+ formatUnknownArgError ( unknown , {
103+ knownOptions,
104+ commandName : "list" ,
105+ } ) ,
106+ ) ;
107+ }
108+ return EXIT_CODE . USAGE_ERROR ;
109+ }
110+
77111 // Show help if requested
78112 if ( parsed . help ) {
79113 try {
0 commit comments