private static int RunSubCommand <T>(SubCommandOptions options) where T : ISubCommand, new() { ISubCommand subopt = new T(); return(subopt.RunSubCommand(options)); }
public int RunSubCommand(SubCommandOptions unparsed) { int exitCode = Exit.OK; // Parse and process our sub-verbs Parser.Default.ParseArgumentsStrict(unparsed.options.ToArray(), new RepairSubOptions(), (string option, object suboptions) => { // ParseArgumentsStrict calls us unconditionally, even with bad arguments if (!string.IsNullOrEmpty(option) && suboptions != null) { CommonOptions options = (CommonOptions)suboptions; User = new ConsoleUser(options.Headless); KSPManager manager = new KSPManager(User); exitCode = options.Handle(manager, User); if (exitCode != Exit.OK) { return; } switch (option) { case "registry": exitCode = Registry(MainClass.GetGameInstance(manager)); break; default: User.RaiseMessage("Unknown command: repair {0}", option); exitCode = Exit.BADOPT; break; } } }, () => { exitCode = MainClass.AfterHelp(); }); RegistryManager.DisposeAll(); return(exitCode); }
/// <summary> /// Execute a cache subcommand /// </summary> /// <param name="mgr">KSPManager object containing our instances and cache</param> /// <param name="opts">Command line options object</param> /// <param name="unparsed">Raw command line options</param> /// <returns> /// Exit code for shell environment /// </returns> public int RunSubCommand(KSPManager mgr, CommonOptions opts, SubCommandOptions unparsed) { string[] args = unparsed.options.ToArray(); int exitCode = Exit.OK; // Parse and process our sub-verbs Parser.Default.ParseArgumentsStrict(args, new CacheSubOptions(), (string option, object suboptions) => { // ParseArgumentsStrict calls us unconditionally, even with bad arguments if (!string.IsNullOrEmpty(option) && suboptions != null) { CommonOptions options = (CommonOptions)suboptions; options.Merge(opts); user = new ConsoleUser(options.Headless); manager = mgr ?? new KSPManager(user); exitCode = options.Handle(manager, user); if (exitCode != Exit.OK) { return; } switch (option) { case "list": exitCode = ListCacheDirectory((CommonOptions)suboptions); break; case "set": exitCode = SetCacheDirectory((SetOptions)suboptions); break; case "clear": exitCode = ClearCacheDirectory((CommonOptions)suboptions); break; case "reset": exitCode = ResetCacheDirectory((CommonOptions)suboptions); break; case "showlimit": exitCode = ShowCacheSizeLimit((CommonOptions)suboptions); break; case "setlimit": exitCode = SetCacheSizeLimit((SetLimitOptions)suboptions); break; default: user.RaiseMessage("Unknown command: cache {0}", option); exitCode = Exit.BADOPT; break; } } }, () => { exitCode = MainClass.AfterHelp(); }); return(exitCode); }
// This is required by ISubCommand public int RunSubCommand(SubCommandOptions unparsed) { string[] args = unparsed.options.ToArray(); if (args.Length == 0) { // There's got to be a better way of showing help... args = new string[1]; args[0] = "help"; } #region Aliases for (int i = 0; i < args.Length; i++) { switch (args[i]) { case "use": args[i] = "default"; break; default: break; } } #endregion // Parse and process our sub-verbs Parser.Default.ParseArgumentsStrict(args, new KSPSubOptions (), Parse); // That line above will have set our 'option' and 'suboption' fields. switch (option) { case "list": return ListInstalls(); case "add": return AddInstall((AddOptions)suboptions); case "rename": return RenameInstall((RenameOptions)suboptions); case "forget": return ForgetInstall((ForgetOptions)suboptions); case "default": return SetDefaultInstall((DefaultOptions)suboptions); default: User.RaiseMessage("Unknown command: ksp {0}", option); return Exit.BADOPT; } }
// This is required by ISubCommand public int RunSubCommand(SubCommandOptions unparsed) { string[] args = unparsed.options.ToArray(); if (args.Length == 0) { // There's got to be a better way of showing help... args = new string[1]; args[0] = "help"; } #region Aliases for (int i = 0; i < args.Length; i++) { switch (args[i]) { case "use": args[i] = "default"; break; default: break; } } #endregion // Parse and process our sub-verbs Parser.Default.ParseArgumentsStrict(args, new KSPSubOptions(), Parse); // That line above will have set our 'option' and 'suboption' fields. switch (option) { case "list": return(ListInstalls()); case "add": return(AddInstall((AddOptions)suboptions)); case "rename": return(RenameInstall((RenameOptions)suboptions)); case "forget": return(ForgetInstall((ForgetOptions)suboptions)); case "default": return(SetDefaultInstall((DefaultOptions)suboptions)); default: User.RaiseMessage("Unknown command: ksp {0}", option); return(Exit.BADOPT); } }
/// <summary> /// Run the subcommand /// </summary> /// <param name="mgr">Manager to provide game instances</param> /// <param name="opts">Command line parameters paritally handled by parser</param> /// <param name="unparsed">Command line parameters not yet handled by parser</param> /// <returns> /// Exit code /// </returns> public int RunSubCommand(GameInstanceManager mgr, CommonOptions opts, SubCommandOptions unparsed) { string[] args = unparsed.options.ToArray(); int exitCode = Exit.OK; // Parse and process our sub-verbs Parser.Default.ParseArgumentsStrict(args, new FilterSubOptions(), (string option, object suboptions) => { // ParseArgumentsStrict calls us unconditionally, even with bad arguments if (!string.IsNullOrEmpty(option) && suboptions != null) { CommonOptions options = (CommonOptions)suboptions; options.Merge(opts); user = new ConsoleUser(options.Headless); manager = mgr ?? new GameInstanceManager(user); exitCode = options.Handle(manager, user); if (exitCode != Exit.OK) { return; } switch (option) { case "list": exitCode = ListFilters((FilterListOptions)suboptions, option); break; case "add": exitCode = AddFilters((FilterAddOptions)suboptions, option); break; case "remove": exitCode = RemoveFilters((FilterRemoveOptions)suboptions, option); break; default: user.RaiseMessage("Unknown command: filter {0}", option); exitCode = Exit.BADOPT; break; } } }, () => { exitCode = MainClass.AfterHelp(); }); return(exitCode); }
/// <summary> /// Run the subcommand /// </summary> /// <param name="mgr">Manager to provide game instances</param> /// <param name="opts">Command line parameters paritally handled by parser</param> /// <param name="unparsed">Command line parameters not yet handled by parser</param> /// <returns> /// Exit code /// </returns> public int RunSubCommand(GameInstanceManager mgr, CommonOptions opts, SubCommandOptions unparsed) { string[] args = unparsed.options.ToArray(); int exitCode = Exit.OK; // Parse and process our sub-verbs Parser.Default.ParseArgumentsStrict(args, new MarkSubOptions(), (string option, object suboptions) => { // ParseArgumentsStrict calls us unconditionally, even with bad arguments if (!string.IsNullOrEmpty(option) && suboptions != null) { CommonOptions options = (CommonOptions)suboptions; options.Merge(opts); user = new ConsoleUser(options.Headless); manager = mgr ?? new GameInstanceManager(user); exitCode = options.Handle(manager, user); if (exitCode != Exit.OK) { return; } switch (option) { case "auto": exitCode = MarkAuto((MarkAutoOptions)suboptions, true, option, "auto-installed"); break; case "user": exitCode = MarkAuto((MarkAutoOptions)suboptions, false, option, "user-selected"); break; default: user.RaiseMessage("Unknown command: mark {0}", option); exitCode = Exit.BADOPT; break; } } }, () => { exitCode = MainClass.AfterHelp(); }); return(exitCode); }
public int RunSubCommand(SubCommandOptions unparsed) { string[] args = unparsed.options.ToArray(); if (args.Length == 0) { // There's got to be a better way of showing help... args = new string[1]; args[0] = "help"; } // Parse and process our sub-verbs Parser.Default.ParseArgumentsStrict(args, new RepairSubOptions(), Parse); switch (option) { case "registry": return(Registry()); } throw new BadCommandKraken("Unknown command: repair " + option); }
public int RunSubCommand(SubCommandOptions unparsed) { string[] args = unparsed.options.ToArray(); if (args.Length == 0) { // There's got to be a better way of showing help... args = new string[1]; args[0] = "help"; } // Parse and process our sub-verbs Parser.Default.ParseArgumentsStrict(args, new RepairSubOptions (), Parse); switch (option) { case "registry": return Registry(); } throw new BadCommandKraken("Unknown command: repair " + option); }
/// <summary> /// Run the subcommand /// </summary> /// <param name="mgr">Manager to provide game instances</param> /// <param name="opts">Command line parameters paritally handled by parser</param> /// <param name="unparsed">Command line parameters not yet handled by parser</param> /// <returns> /// Exit code /// </returns> public int RunSubCommand(KSPManager manager, CommonOptions opts, SubCommandOptions unparsed) { string[] args = unparsed.options.ToArray(); int exitCode = Exit.OK; Parser.Default.ParseArgumentsStrict(args, new AuthTokenSubOptions(), (string option, object suboptions) => { if (!string.IsNullOrEmpty(option) && suboptions != null) { CommonOptions options = (CommonOptions)suboptions; options.Merge(opts); user = new ConsoleUser(options.Headless); if (manager == null) { manager = new KSPManager(user); } exitCode = options.Handle(manager, user); if (exitCode == Exit.OK) { switch (option) { case "list": exitCode = listAuthTokens(options); break; case "add": exitCode = addAuthToken((AddAuthTokenOptions)options); break; case "remove": exitCode = removeAuthToken((RemoveAuthTokenOptions)options); break; } } } }, () => { exitCode = MainClass.AfterHelp(); }); return(exitCode); }
// This is required by ISubCommand public int RunSubCommand(SubCommandOptions unparsed) { string[] args = unparsed.options.ToArray(); #region Aliases for (int i = 0; i < args.Length; i++) { switch (args[i]) { case "use": args[i] = "default"; break; default: break; } } #endregion int exitCode = Exit.OK; // Parse and process our sub-verbs Parser.Default.ParseArgumentsStrict(args, new KSPSubOptions(), (string option, object suboptions) => { // ParseArgumentsStrict calls us unconditionally, even with bad arguments if (!string.IsNullOrEmpty(option) && suboptions != null) { CommonOptions options = (CommonOptions)suboptions; User = new ConsoleUser(options.Headless); Manager = new KSPManager(User); exitCode = options.Handle(Manager, User); if (exitCode != Exit.OK) { return; } switch (option) { case "list": exitCode = ListInstalls(); break; case "add": exitCode = AddInstall((AddOptions)suboptions); break; case "rename": exitCode = RenameInstall((RenameOptions)suboptions); break; case "forget": exitCode = ForgetInstall((ForgetOptions)suboptions); break; case "use": case "default": exitCode = SetDefaultInstall((DefaultOptions)suboptions); break; default: User.RaiseMessage("Unknown command: ksp {0}", option); exitCode = Exit.BADOPT; break; } } }, () => { exitCode = MainClass.AfterHelp(); }); RegistryManager.DisposeAll(); return(exitCode); }
// This is required by ISubCommand public int RunSubCommand(KSPManager manager, CommonOptions opts, SubCommandOptions unparsed) { string[] args = unparsed.options.ToArray(); #region Aliases for (int i = 0; i < args.Length; i++) { switch (args[i]) { case "remove": args[i] = "forget"; break; } } #endregion int exitCode = Exit.OK; // Parse and process our sub-verbs Parser.Default.ParseArgumentsStrict(args, new RepoSubOptions(), (string option, object suboptions) => { // ParseArgumentsStrict calls us unconditionally, even with bad arguments if (!string.IsNullOrEmpty(option) && suboptions != null) { CommonOptions options = (CommonOptions)suboptions; options.Merge(opts); User = new ConsoleUser(options.Headless); Manager = manager ?? new KSPManager(User); exitCode = options.Handle(Manager, User); if (exitCode != Exit.OK) { return; } switch (option) { case "available": exitCode = AvailableRepositories(); break; case "list": exitCode = ListRepositories(); break; case "add": exitCode = AddRepository((AddOptions)suboptions); break; case "remove": case "forget": exitCode = ForgetRepository((ForgetOptions)suboptions); break; case "default": exitCode = DefaultRepository((DefaultOptions)suboptions); break; default: User.RaiseMessage("Unknown command: repo {0}", option); exitCode = Exit.BADOPT; break; } } }, () => { exitCode = MainClass.AfterHelp(); }); return(exitCode); }