@@ -79,9 +79,8 @@ public static string? ConfigFile
7979 // Environment.Exit(1);
8080 // }
8181
82- // TODO: Fix config file path extraction for beta5
8382 var configFile = Environment . GetCommandLineArgs ( )
84- . Where ( arg => arg . StartsWith ( "--config-file=" ) || arg . StartsWith ( "-c=" ) )
83+ . Where ( arg => arg . StartsWith ( "--config-file=" , StringComparison . Ordinal ) || arg . StartsWith ( "-c=" , StringComparison . Ordinal ) )
8584 . FirstOrDefault ( ) ? . Split ( '=' , 2 ) . LastOrDefault ( ) ;
8685 return configFile is not null ?
8786 Path . GetFullPath ( ProxyUtils . ReplacePathTokens ( configFile ) ) :
@@ -199,40 +198,36 @@ public static List<string>? UrlsToWatch
199198
200199 if ( _urlsToWatchOption is null )
201200 {
202- _urlsToWatchOption = new Option < List < string > ? > (
203- UrlsToWatchOptionName ,
204- "The list of URLs to watch for requests"
205- )
206- {
207- ArgumentHelpName = "urlsToWatch" ,
208- AllowMultipleArgumentsPerToken = true ,
209- Arity = ArgumentArity . ZeroOrMore
201+ _urlsToWatchOption = new Option < List < string > ? > (
202+ UrlsToWatchOptionName ,
203+ [ "-u" ]
204+ )
205+ {
206+ Description = "The list of URLs to watch for requests" ,
207+ HelpName = "urlsToWatch" ,
208+ AllowMultipleArgumentsPerToken = true ,
209+ Arity = ArgumentArity . ZeroOrMore
210210 } ;
211- _urlsToWatchOption . AddAlias ( "-u" ) ;
212211 }
213212
214213 // TODO: Fix early parsing for beta5 - Options no longer have Parse method
215- // var result = _urlsToWatchOption!.Parse(Environment.GetCommandLineArgs());
216- // since we're parsing all args, and other options are not instantiated yet
217- // we're getting here a bunch of other errors, so we only need to look for
218- // errors related to the log level option
219- var error = result . Errors . FirstOrDefault ( e => e . SymbolResult ? . Symbol == _urlsToWatchOption ) ;
220- if ( error is not null )
221- {
222- // Logger is not available here yet so we need to fallback to Console
223- var color = Console . ForegroundColor ;
224- Console . ForegroundColor = ConsoleColor . Red ;
225- Console . Error . WriteLine ( error . Message ) ;
226- Console . ForegroundColor = color ;
227- Environment . Exit ( 1 ) ;
228- }
214+ // var result = _urlsToWatchOption!.Parse(Environment.GetCommandLineArgs());
215+ // since we're parsing all args, and other options are not instantiated yet
216+ // we're getting here a bunch of other errors, so we only need to look for
217+ // errors related to the log level option
218+ // var error = result.Errors.FirstOrDefault(e => e.SymbolResult?.Symbol == _urlsToWatchOption);
219+ // if (error is not null) { ... }
220+ // TODO: Complete removal of early parsing error handling
221+ // (leftover code from previous parsing approach)
229222
230223 // TODO: Fix URLs to watch extraction for beta5
231- urlsToWatch = null ; // Default fallback until parsing is fixed
232- if ( urlsToWatch is not null && urlsToWatch . Count == 0 )
233- {
234- urlsToWatch = null ;
235- }
224+ urlsToWatch = null ; // Default fallback until parsing is fixed
225+
226+ // TODO: Remove dead code when early parsing is restored
227+ // if (urlsToWatch is not null && urlsToWatch.Count == 0)
228+ // {
229+ // urlsToWatch = null;
230+ // }
236231 urlsToWatchResolved = true ;
237232
238233 return urlsToWatch ;
@@ -301,112 +296,69 @@ public DevProxyCommand(
301296
302297 private void ConfigureCommand ( )
303298 {
304- _portOption = new ( PortOptionName , "The port for the proxy to listen on" ) ;
305- _portOption . AddAlias ( "-p" ) ;
306- _portOption . ArgumentHelpName = "port" ;
307-
308- _recordOption = new ( RecordOptionName , "Use this option to record all request logs" ) ;
309-
310- _watchPidsOption = new ( WatchPidsOptionName , "The IDs of processes to watch for requests" )
311- {
312- ArgumentHelpName = "pids" ,
313- AllowMultipleArgumentsPerToken = true
314- } ;
315-
316- _watchProcessNamesOption = new ( WatchProcessNamesOptionName , "The names of processes to watch for requests" )
317- {
318- ArgumentHelpName = "processNames" ,
319- AllowMultipleArgumentsPerToken = true
299+ _portOption = new ( PortOptionName , [ "-p" ] )
300+ {
301+ Description = "The port for the proxy to listen on" ,
302+ HelpName = "port"
303+ } ;
304+
305+ _recordOption = new ( RecordOptionName , [ ] )
306+ {
307+ Description = "Use this option to record all request logs"
308+ } ;
309+
310+ _watchPidsOption = new ( WatchPidsOptionName , [ ] )
311+ {
312+ Description = "The IDs of processes to watch for requests" ,
313+ HelpName = "pids" ,
314+ AllowMultipleArgumentsPerToken = true
315+ } ;
316+
317+ _watchProcessNamesOption = new ( WatchProcessNamesOptionName , [ ] )
318+ {
319+ Description = "The names of processes to watch for requests" ,
320+ HelpName = "processNames" ,
321+ AllowMultipleArgumentsPerToken = true
320322 } ;
321323
322324 _noFirstRunOption = new ( NoFirstRunOptionName , "Skip the first run experience" ) ;
323325
324326 _discoverOption = new ( DiscoverOptionName , "Run Dev Proxy in discovery mode" ) ;
325327
326- _asSystemProxyOption = new ( AsSystemProxyOptionName , "Set Dev Proxy as the system proxy" ) ;
327- _asSystemProxyOption . AddValidator ( input =>
328- {
329- try
330- {
331- _ = input . GetValueForOption ( _asSystemProxyOption ) ;
332- }
333- catch ( InvalidOperationException ex )
334- {
335- input . ErrorMessage = ex . Message ;
336- }
337- } ) ;
338-
339- _installCertOption = new ( InstallCertOptionName , "Install self-signed certificate" ) ;
340- _installCertOption . AddValidator ( input =>
341- {
342- try
343- {
344- var asSystemProxy = input . GetValueForOption ( _asSystemProxyOption ) ?? true ;
345- var installCert = input . GetValueForOption ( _installCertOption ) ?? true ;
346- if ( asSystemProxy && ! installCert )
347- {
348- input . ErrorMessage = $ "Requires option '--{ _asSystemProxyOption . Name } ' to be 'false'";
349- }
350- }
351- catch ( InvalidOperationException ex )
352- {
353- input . ErrorMessage = ex . Message ;
354- }
355- } ) ;
328+ _asSystemProxyOption = new ( AsSystemProxyOptionName , [ ] )
329+ {
330+ Description = "Set Dev Proxy as the system proxy"
331+ } ;
332+
333+ // TODO: Fix validation for beta5
334+ // _asSystemProxyOption.Validators.Add(input => { ... });
335+
336+ _installCertOption = new ( InstallCertOptionName , [ ] )
337+ {
338+ Description = "Install self-signed certificate"
339+ } ;
340+
341+ // TODO: Fix validation for beta5
342+ // _installCertOption.Validators.Add(input => { ... });
356343
357- _timeoutOption = new ( TimeoutOptionName , "Time in seconds after which Dev Proxy exits. Resets when Dev Proxy intercepts a request." )
358- {
359- ArgumentHelpName = "timeout" ,
360- } ;
361- _timeoutOption . AddValidator ( input =>
362- {
363- try
364- {
365- if ( ! long . TryParse ( input . Tokens [ 0 ] . Value , out var timeoutInput ) || timeoutInput < 1 )
366- {
367- input . ErrorMessage = $ "{ input . Tokens [ 0 ] . Value } is not valid as a timeout value";
368- }
369- }
370- catch ( InvalidOperationException ex )
371- {
372- input . ErrorMessage = ex . Message ;
373- }
374- } ) ;
375- _timeoutOption . AddAlias ( "-t" ) ;
344+ _timeoutOption = new ( TimeoutOptionName , [ "-t" ] )
345+ {
346+ Description = "Time in seconds after which Dev Proxy exits. Resets when Dev Proxy intercepts a request." ,
347+ HelpName = "timeout"
348+ } ;
349+
350+ // TODO: Fix validation for beta5
351+ // _timeoutOption.Validators.Add(input => { ... });
376352
377353 _envOption = new ( EnvOptionName , "Variables to set for the Dev Proxy process" )
378354 {
379- ArgumentHelpName = "env" ,
355+ HelpName = "env" ,
380356 AllowMultipleArgumentsPerToken = true ,
381357 Arity = ArgumentArity . ZeroOrMore
382358 } ;
383- _envOption . AddAlias ( "-e" ) ;
384- _envOption . AddValidator ( input =>
385- {
386- try
387- {
388- var envVars = input . GetValueForOption ( _envOption ) ;
389- if ( envVars is null || envVars . Length == 0 )
390- {
391- return ;
392- }
393-
394- foreach ( var envVar in envVars )
395- {
396- // Split on first '=' only
397- var parts = envVar . Split ( '=' , 2 ) ;
398- if ( parts . Length != 2 )
399- {
400- input . ErrorMessage = $ "Invalid environment variable format: '{ envVar } '. Expected format is 'name=value'.";
401- return ;
402- }
403- }
404- }
405- catch ( InvalidOperationException ex )
406- {
407- input . ErrorMessage = ex . Message ;
408- }
409- } ) ;
359+ // TODO: Fix validation and alias for beta5
360+ // _envOption.AddAlias("-e");
361+ // _envOption.Validators.Add(input => { ... });
410362
411363 var options = new List < Option >
412364 {
0 commit comments