/* * The Alluxio Open Foundation licenses this work under the Apache License, version 2.0 * (the "License"). You may not use this work except in compliance with the License, which is * available at www.apache.org/licenses/LICENSE-2.0 * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied, as more fully set forth in the License. * * See the NOTICE file distributed with this work for information regarding copyright ownership. */ package alluxio.shell.command; import alluxio.cli.AlluxioShell; import alluxio.exception.AlluxioException; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.Options; import java.io.IOException; /** * An interface for all the commands that can be run from {@link AlluxioShell}. */ public interface ShellCommand { /** * Gets the command name as input from the shell. * * @return the command name */ String getCommandName(); /** * @return the supported {@link Options} of the command */ Options getOptions(); /** * Parses and validates the arguments. * * @param args the arguments for the command, excluding the command name * @return the parsed command line object. If the arguments are invalid, return null */ CommandLine parseAndValidateArgs(String... args); /** * Runs the command. * * @param cl the parsed command line for the arguments * @return the result of running the command */ int run(CommandLine cl) throws AlluxioException, IOException; /** * @return the usage information of the command */ String getUsage(); /** * @return the description information of the command */ String getDescription(); }