public static void AddServiceOptionsTo(OptionGroup serviceGroup, ServiceStatusWaiter serviceStatusWaiter, ProcessExecutor processExecutor, IFileSystem fileSystem, string serviceName, string serviceDisplayName, string serviceDescription) { serviceGroup.WithOption(new RegisterServerWindowsServiceOption(serviceName, serviceDisplayName, serviceDescription), "register"); serviceGroup.WithOption(new UnregisterServerWindowsServiceOption(serviceName, serviceDisplayName), "unregister"); serviceGroup.WithOption(ChangeStateForCafeWindowsServiceOption.StartCafeWindowsServiceOption( processExecutor, fileSystem, serviceStatusWaiter, serviceName), "start"); serviceGroup.WithOption(ChangeStateForCafeWindowsServiceOption.StopCafeWindowsServiceOption( processExecutor, fileSystem, serviceStatusWaiter, serviceName), "stop"); serviceGroup.WithOption(new CafeWindowsServiceStatusOption(processExecutor, fileSystem, serviceName), "status"); }
public static OptionGroup CreateRootGroup(IClientFactory clientFactory, ISchedulerWaiter schedulerWaiter, IFileSystemCommands fileSystemCommands, ProcessExecutor processExecutor, IFileSystem fileSystem, ServiceStatusWaiter serviceStatusWaiter, IEnvironment environment) { var root = new OptionGroup() .WithGroup("chef", chefGroup => { const string chefProduct = "Chef"; chefGroup.WithOption(new RunChefOption(clientFactory.RestClientForChefServer, schedulerWaiter), OptionValueSpecification.ForCommand("run"), OnNode()); chefGroup.WithOption( new DownloadProductOption <IChefServer, ChefStatus>(chefProduct, clientFactory.RestClientForChefServer, schedulerWaiter), CreateDownloadVersionSpecifications()); chefGroup.WithOption(new ShowChefStatusOption(clientFactory.RestClientForChefServer), OptionValueSpecification.ForCommand("status"), OnNode()); chefGroup.WithOption( new BootstrapChefRunListOption(clientFactory.RestClientForChefServer, schedulerWaiter, fileSystemCommands), OptionValueSpecification.ForCommand("bootstrap"), OptionValueSpecification.ForValue("run-list:", "the run list"), OptionValueSpecification.ForValue("config:", "the client.rb file"), OptionValueSpecification.ForValue("validator:", "the validator.pem file used to join the node"), OnNode()); chefGroup.WithOption( new BootstrapChefPolicyOption(clientFactory.RestClientForChefServer, schedulerWaiter, fileSystemCommands), OptionValueSpecification.ForCommand("bootstrap"), OptionValueSpecification.ForValue("policy:", "the policy name"), OptionValueSpecification.ForValue("group:", "the policy group"), OptionValueSpecification.ForValue("config:", "the client.rb file"), OptionValueSpecification.ForValue("validator:", "the validator.pem file used to join the node"), OnNode()); var installChefOption = new InstallOption <IChefServer, ChefStatus>(chefProduct, clientFactory.RestClientForChefServer, schedulerWaiter); chefGroup.WithOption(installChefOption, CreateInstallVersionSpecifications()); chefGroup.WithOption(installChefOption, OptionValueSpecification.ForCommand("upgrade"), OptionValueSpecification.ForVersion(), OnNode()); chefGroup.WithOption( ChangeChefRunningStatusOption.CreatePauseChefOption(clientFactory.RestClientForChefServer), OptionValueSpecification.ForCommand("pause"), OnNode()); chefGroup.WithOption( ChangeChefRunningStatusOption.CreateResumeChefOption(clientFactory.RestClientForChefServer), OptionValueSpecification.ForCommand("resume"), OnNode()); }) .WithGroup("inspec", inspecGroup => { const string inspecProduct = "InSpec"; inspecGroup.WithOption(new ShowInSpecStatusOption(clientFactory.RestClientForInspecServer), OptionValueSpecification.ForCommand("status"), OnNode()); inspecGroup.WithOption( new InstallOption <IProductServer <ProductStatus>, ProductStatus>(inspecProduct, clientFactory.RestClientForInspecServer, schedulerWaiter), CreateInstallVersionSpecifications()); inspecGroup.WithOption( new DownloadProductOption <IProductServer <ProductStatus>, ProductStatus>(inspecProduct, clientFactory.RestClientForInspecServer, schedulerWaiter), CreateDownloadVersionSpecifications()); }) .WithGroup("server", serverGroup => { serverGroup.WithDefaultOption(new ServerInteractiveOption()); serverGroup.WithOption(new ServerWindowsServiceOption(), "--run-as-service"); }) .WithGroup("service", serviceGroup => { serviceGroup.WithOption(new RegisterServerWindowsServiceOption(), "register"); serviceGroup.WithOption(new UnregisterServerWindowsServiceOption(), "unregister"); serviceGroup.WithOption(ChangeStateForCafeWindowsServiceOption.StartCafeWindowsServiceOption( processExecutor, fileSystem, serviceStatusWaiter), "start"); serviceGroup.WithOption(ChangeStateForCafeWindowsServiceOption.StopCafeWindowsServiceOption( processExecutor, fileSystem, serviceStatusWaiter), "stop"); serviceGroup.WithOption(new CafeWindowsServiceStatusOption(processExecutor, fileSystem), "status"); }) .WithGroup("job", statusGroup => { var statusOption = new StatusOption(clientFactory.RestClientForJobServer); statusGroup.WithDefaultOption(statusOption); statusGroup.WithOption(statusOption, OptionValueSpecification.ForCommand("status"), OnNode()); statusGroup.WithOption(new JobRunStatusOption(clientFactory.RestClientForJobServer), OptionValueSpecification.ForCommand("status"), OptionValueSpecification.ForValue("id:", "job run id"), OnNode()); }) .WithOption(new InitOption(AssemblyDirectory, environment), "init"); var helpOption = new HelpOption(root); root.WithOption(helpOption, "help"); root.WithDefaultOption(helpOption); return(root); }