/// <summary> /// /// </summary> /// <param name="args"></param> /// <returns></returns> public (FilterChain, string[], string[]) RegisterCliOptions(string[] args) { // Register Filters FilterBundle.RegisterCliOptions(); _filterCount = CliArgs.GetItems().Count(); // Register Experimental Filters ExperimentalBundle.RegisterCliOptions(); _experimentalFilterCount = CliArgs.GetItems().Count() - _filterCount; // Parse CLI args and generate FilterSet of them (var filterChain, string[] nonOptionArgs) = CliArgs.ParseFilterArgs(args); // Extract non-option and remaining option arguments string[] nonFilterOptionArgs; (nonOptionArgs, nonFilterOptionArgs) = CliArgs.ExtractOptionArguments(nonOptionArgs); return(filterChain, nonOptionArgs, nonFilterOptionArgs); }