package org.opencb.opencga.storage.app.cli.server.options; import com.beust.jcommander.JCommander; import com.beust.jcommander.Parameter; import com.beust.jcommander.Parameters; import com.beust.jcommander.ParametersDelegate; import org.opencb.opencga.storage.app.cli.GeneralCliOptions; /** * Created by joaquin on 2/2/17. */ @Parameters(commandNames = {"server"}, commandDescription = "REST and gRPC server management.") public class ServerCommandOptions { public RestServerCommandOptions restServerCommandOptions; public GrpcServerCommandOptions grpcServerCommandOptions; public JCommander jCommander; public GeneralCliOptions.CommonOptions commonCommandOptions; public ServerCommandOptions(GeneralCliOptions.CommonOptions commonOptions, JCommander jCommander) { this.jCommander = jCommander; this.commonCommandOptions = commonOptions; this.restServerCommandOptions = new RestServerCommandOptions(); this.grpcServerCommandOptions = new GrpcServerCommandOptions(); } /** * Generic server options (for REST and gRPC) */ public class GenericServerOptions { @Parameter(names = {"--start"}, description = "Start server.") public boolean start; @Parameter(names = {"--stop"}, description = "Stop server.") public boolean stop; @Parameter(names = {"--status"}, description = "Status server.") public boolean status; @Parameter(names = {"--port"}, description = "Port number.", arity = 1) public int port; @Parameter(names = {"--auth-manager"}, description = "Authentication manager.", arity = 1) public String authManager; } /** * REST command */ @Parameters(commandNames = {"rest"}, commandDescription = "REST server") public class RestServerCommandOptions extends GenericServerOptions { @ParametersDelegate public GeneralCliOptions.CommonOptions commonOptions = commonCommandOptions; } /** * GRPC command */ @Parameters(commandNames = {"grpc"}, commandDescription = "gRPC server") public class GrpcServerCommandOptions extends GenericServerOptions { @ParametersDelegate public GeneralCliOptions.CommonOptions commonOptions = commonCommandOptions; } public JCommander getJCommander() { return this.jCommander; } }