package org.atomnuke.util.cli.command; import org.atomnuke.cli.CliConfigurationHandler; import org.atomnuke.cli.command.AbstractNukeCommand; import org.atomnuke.util.cli.command.result.CommandResult; import org.atomnuke.util.cli.command.result.MessageResult; /** * * @author zinic */ public abstract class AbstractCommandList extends AbstractNukeCommand { private final Command[] availableCommands; public AbstractCommandList(CliConfigurationHandler cfgHandler, Command... availableCommands) { super(cfgHandler); this.availableCommands = availableCommands; } private CommandResult usage() { final StringBuilder message = new StringBuilder("Available commands: \r\n"); for (Command availableCommand : availableCommands()) { message.append(availableCommand.getCommandToken()); // TODO: Fix this one day if (availableCommand.getCommandToken().length() > 7) { message.append("\t"); } else { message.append("\t\t"); } message.append(availableCommand.getCommandDescription()); message.append("\n"); } return new MessageResult(message.toString()); } @Override public final Command[] availableCommands() { return availableCommands; } public CommandResult perform() throws Exception { return usage(); } @Override public CommandResult perform(String[] arguments) throws Exception { return arguments.length > 0 ? usage() : perform(); } }