void IReceiveOptions.ReceiveFrom(OptionSet options) { options.AddCollector(ObjectFilter); options.Add("site=", "Only include objects associated with a specific site", o => Site = o); options.Add("base=", "Specify a base path to assume for all items", o => BasePath = new SsrsObjectPath(o)); options.Add("timeout=", "Number of seconds to wait for SSRS webservice responses", (int o) => ReportingServiceClientFactory.Timeout = TimeSpan.FromSeconds(o)); }
void IReceiveOptions.ReceiveFrom(OptionSet options) { options.AddCollector(ObjectFilter); options.Add("site=", "Only include objects associated with a specific site", o => Site = o.Unquote("'")); options.Add("base=", "Specify a base path to assume for all items", o => BasePath = new SsrsObjectPath(o)); options.Add("overwrite", "Replace existing objects", o => Overwrite = true); options.Add("backup=", "Back up objects before overwriting", o => BackupPath = o); options.Add("rewrite=", "Modify objects prior to import", o => RewriteRules.Add(o.Unquote("'"))); options.Add("timeout=", "Number of seconds to wait for SSRS webservice responses", (int o) => ReportingServiceClientFactory.Timeout = TimeSpan.FromSeconds(o)); }
public static IDebugJobFactory ParseArguments(OptionSet options, Arguments mainArguments, string[] args) { mainArguments.JobType = new JobTypeParser().ParseJobTypeInPlace(ref args); if (mainArguments.JobType == null) { throw new ErrorWithExitCodeException(1, "") { ShowUsage = true } } ; var jobFactory = SelectFactory(mainArguments.JobType.Value); if (jobFactory == null) { throw new ErrorWithExitCodeException(1, $"Unsupported operation: {mainArguments.JobType}") { ShowUsage = true } } ; options.AddCollector(jobFactory); var remainingArgs = options.Parse(args).ToArray(); if (mainArguments.ShowUsage) { throw new ErrorWithExitCodeException(1, "") { ShowUsage = true }; } if (remainingArgs.Any()) { throw new ErrorWithExitCodeException(1, $"Unrecognised arguments: {String.Join(" ", remainingArgs)}"); } return(jobFactory); }
public static int Main(string[] args) { if (!AssertSufficientDotNetVersion()) { return(255); } var options = new OptionSet(); var mainArguments = options.AddCollector(new Arguments()); try { var jobFactory = ParseArguments(options, mainArguments, args); var console = new ConsoleLog(Console.Error, mainArguments.Verbose); jobFactory.Validate(); var job = jobFactory.CreateJob(console); console.WriteLineVerbose($"Running as a {ProcessArchitecture.FromCurrentProcess().Describe()} process."); ExecuteJob(console, job); return(0); } catch (Requires32BitEnvironmentException) { return(Bootstrap.RecurseInto32BitProcess()); } catch (Requires64BitEnvironmentException ex) { Console.Error.WriteLine(ex.Message); return(64); } catch (ErrorWithExitCodeException ex) { if (!String.IsNullOrEmpty(ex.Message)) { Console.Error.WriteLine(ex.Message); } if (ex.ShowUsage) { ShowUsage(mainArguments.JobType, options); } return(ex.ExitCode); } catch (FeatureUnavailableException ex) { Console.Error.WriteLine(ex.Message); if (mainArguments.Verbose) { Console.Error.WriteLine(ex.InnerException); } return(254); } catch (Exception ex) { // Otherwise-unhandled exception. Console.Error.WriteLine(ex); return(255); } }
void IReceiveOptions.ReceiveFrom(OptionSet options) { options.AddCollector(RunningProcess); options.Add("d=|dumpfile=", "Dump process memory to this path.", o => DumpFile = o); options.Add("f|force", "Overwrite the dumpfile if it already exists.", o => OverwriteDumpFileIfExists = true); }