package de.kroesch.clt.internal; import static de.kroesch.clt.Util.UTIL; import java.io.PrintWriter; import java.util.List; import de.kroesch.clt.Command; import de.kroesch.clt.Environment; import de.kroesch.clt.HasArguments; import de.kroesch.clt.InternalEnvironment; import de.kroesch.clt.Parser; import de.kroesch.clt.UserHelp; /** * Get help. * * @author karsten * */ public class Help implements Command, HasArguments { private Environment env; private List<String> args; public void run() { Parser parser = ((InternalEnvironment) env).parser(); PrintWriter writer = env.writer(); // General help: list all commands if (args.size() == 0) { List<String> commands = parser.availableCommands(); writer.print("Commands available:\n"); UTIL.printColumns(commands, writer, 4); writer.printf("\n"); return; } // Help for specified command if available Class<? extends Command> cmdClass = parser.byName(args.get(0)); try { UserHelp uh = (UserHelp) cmdClass.newInstance(); writer.print(uh.help()); writer.flush(); } catch (InstantiationException e) { writer.print("No help available"); } catch (IllegalAccessException e) { writer.print("No help available"); } } public void setEnvironment(Environment env) { this.env = env; } public String toString() { return "help"; } public void setArguments(List<String> args) { this.args = args; } }