/// <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); }
public static void PrintHelp(int filterCount = -1, int expFilterCount = -1, bool verbose = true) { string usage = "\nUsage:\n" + " colschman [-filter] <sourcefile> [<targetfile>]\n" + " colschman [-filter][=param1][,param2][,param3] <sourcefile> [<targetfile>]\n" + " colschman [-filter1] [--filter2] <sourcefile> [<targetfile>]\n" + " colschman [-filter][(rangeattr1:min-max,rangeattr2:min-max)[=param] <sourcefile> [<targetfile>]\n" + " colschman [-filter][(rangeattr:min/slope-max/slope)[=param] <sourcefile> [<targetfile>]\n" + " colschman [-filter][(rangeattr:minstart,minend,maxstart,maxend)[=param] <sourcefile> [<targetfile>]\n"; if (!verbose) { usage += "\nMore detailed help:\n colschman --help\n"; } Console.WriteLine(usage); Console.WriteLine("Available Filters:"); if (verbose) { Console.WriteLine(); } if (filterCount == -1 || expFilterCount == -1) { // all filters foreach (var cliArg in CliArgs.GetItems()) { Console.WriteLine(cliArg.GetDescription(verbose)); if (verbose) { Console.WriteLine(); } } return; } // non experimental filters for (int i = 0; i < filterCount; i++) { Console.WriteLine(CliArgs.GetItem(i).GetDescription(verbose)); if (verbose && i < filterCount - 1) { Console.WriteLine(); } } // experimental filters if (expFilterCount > 0) { Console.WriteLine("Experimental Filters:"); if (verbose) { Console.WriteLine(); } for (int i = filterCount; i < filterCount + expFilterCount; i++) { Console.WriteLine(CliArgs.GetItem(i).GetDescription(verbose)); if (verbose && i < filterCount + expFilterCount - 1) { Console.WriteLine(); } ; } } if (!verbose) { Console.WriteLine(); } ; const int col1 = -13; const int col2 = -14; string help_tail = "Range attributes:\n" + $" {"h, hue",col1} {"Hue",col2}| {"r, red",col1} {"Red",col2}\n" + $" {"s, sat",col1} {"Saturation",col2}| {"g, green",col1} {"Green",col2}\n" + $" {"l, light",col1} {"Lightness",col2}| {"b, blue",col1} {"Blue",col2}\n" + $" {"v, value",col1} {"Value",col2}| {"bri, bright",col1} {"Brightness",col2}\n\n" + "Example:\n" + " colschman -al=0.1,0.9 -s(hue:40/10-180/10)=1.2 my_scheme.icls fixed_scheme.icls\n\n"; Console.Write(help_tail); }