public bool Run(string[] args) { var cmdVerbs = new CmdVerbs(); var parser = new Parser(settings => { settings.CaseSensitive = false; settings.HelpWriter = Console.Out; settings.IgnoreUnknownArguments = false; }); var ret = parser.ParseArgumentsStrict(args, cmdVerbs, (verb, opts) => DoCommand(cmdVerbs, verb, opts)); return(ret); }
public void GetHelp(CmdVerbs cmdv, CmdArgsGetHelpCommand args) { var s = args.Command; string txt; if (s == null) { txt = cmdv.GetUsage(""); } else if (s.Equals("*")) { txt = HelpText.AutoBuild(cmdv, ""); } else { txt = HelpText.AutoBuild(cmdv, s); } Console.WriteLine(txt); }
private void DoCommand(CmdVerbs cmds, string verb, Object args) { if (args == null) { return; } var verbCmds = new Dictionary <string, Action>(StringComparer.OrdinalIgnoreCase); verbCmds.Add(CmdVerbs.GetToolVersionVerb, () => { var ret = GetToolVersion((CmdArgsGetToolVersion)args); WriteToOutput(ret); }); verbCmds.Add(CmdVerbs.GetSubscriberVerb, () => { var subs = GetSubscriber((CmdArgsSubIdOpt)args); WriteToOutput(subs); }); verbCmds.Add(CmdVerbs.NewSubscriberVerb, () => { var sub = NewSubscriber((CmdArgsNewSub)args); WriteToOutput(sub); }); verbCmds.Add(CmdVerbs.RemoveSubscriberVerb, () => { var sub = RemoveSubscriber((CmdArgsSubIdReq)args); WriteToOutput(sub); }); verbCmds.Add(CmdVerbs.SyncSubscriberVerb, () => { var sub = SyncSubscriber((CmdArgsSubIdOpt)args); WriteToOutput(sub); }); verbCmds.Add(CmdVerbs.PublishDirectoryVerb, () => { var snapId = PublishDirectory((CmdArgsPublishDirectory)args); WriteToOutput(snapId); }); verbCmds.Add(CmdVerbs.SyncDirectoryVerb, () => { SyncDirectory((CmdArgsSyncDirectory)args); }); verbCmds.Add(CmdVerbs.InitializeSyncStateVerb, () => { InitializeSyncState((CmdArgsInitalizeSyncState)args); }); verbCmds.Add(CmdVerbs.KuduSyncVerb, () => { KuduSync((KuduSyncOptions)args); }); verbCmds.Add(CmdVerbs.WatchSyncStateVerb, () => { WatchSyncState((CmdArgsWatchSyncState)args); }); verbCmds.Add(CmdVerbs.SetSubscriberSiteStatusVerb, () => { SetSubscriberSiteStatus((CmdArgsSetSubscriberSiteStatus)args); }); verbCmds.Add(CmdVerbs.GetHelpVerb, () => { var opts = (CmdArgsGetHelpCommand)args; var normalizedVerb = verbCmds.Keys.Where(key => key.Equals(opts.Command, StringComparison.OrdinalIgnoreCase)).FirstOrDefault(); if (!String.IsNullOrEmpty(normalizedVerb)) { opts.Command = normalizedVerb; } GetHelp(cmds, opts); }); verbCmds[verb].Invoke(); }