static void Main(string[] args) { var arguments = new Docopt().Apply(UsagePatterns, args, version: Assembly.GetExecutingAssembly().GetName().Version, exit: true); if (arguments.ContainsKey("<target_dll>")) { foreach (ValueObject targetDll in (ArrayList)arguments["<target_dll>"].Value) { string assmPath = (string)targetDll.Value; if (File.Exists(assmPath)) { // grab dest path if provided string destPath = null; if (arguments["--dest"] != null && arguments["--dest"].IsString) { destPath = (string)arguments["--dest"].Value; } Console.WriteLine($"target path is {destPath}"); // grab search paths if provided string[] searchPaths = null; if (arguments["--search"] != null && arguments["--search"].IsList) { List <string> lookupPaths = new List <string>(); foreach (ValueObject searchPath in arguments["--search"].AsList.ToArray()) { Console.WriteLine($"search path {searchPath}"); lookupPaths.Add((string)searchPath.Value); } searchPaths = lookupPaths.ToArray(); } // prepare generator configs // grab pre and postfixes for root namespace dir names var genCfg = new BuildConfig { Prefix = arguments["--prefix"] != null ? (string)arguments["--prefix"].Value : string.Empty, Postfix = arguments["--postfix"] != null ? (string)arguments["--postfix"].Value : string.Empty, DestPathIsRoot = arguments["--dest-is-root"] != null ? (bool)arguments["--dest-is-root"].Value : false, }; Console.WriteLine($"building stubs for {assmPath}"); try { var dest = StubBuilder.BuildAssemblyStubs( assmPath, destPath: destPath, searchPaths: searchPaths, cfgs: genCfg ); Console.WriteLine($"stubs saved to {dest}"); } catch (Exception sgEx) { Console.WriteLine($"error: failed generating stubs | {sgEx.Message}"); } } else { Console.WriteLine($"error: can not find {assmPath}"); } } } }