command.line/java/com/jetbrains/teamcity/command/Help.java (83 lines of code) (raw):

package com.jetbrains.teamcity.command; import com.jetbrains.teamcity.*; import java.text.MessageFormat; import java.util.Comparator; import java.util.TreeSet; import javax.naming.directory.InvalidAttributesException; import jetbrains.buildServer.core.runtime.IProgressMonitor; class Help implements ICommand { static final String ID = Messages.getString("Help.command.id"); //$NON-NLS-1$ private String myResultDescription; public void execute(Server server, final Args args, final IProgressMonitor monitor) throws EAuthorizationException, ECommunicationException, ERemoteError, InvalidAttributesException { final StringBuffer buffer = new StringBuffer(); buffer.append(MessageFormat.format(Messages.getString("Help.command.header"), //$NON-NLS-1$ Build.build)); final String commandId = args != null && args.getArguments() != null && args.getArguments().length > 0 ? args.getArguments()[0] : null; if (args != null && args.getCommandId() != null && args.getCommandId().equals(ID) && commandId != null && !commandId.equals(ID)) {// help // command // used buffer.append(printDescription(commandId)); myResultDescription = buffer.toString(); return; } if (args != null && args.getCommandId() != null && !args.getCommandId().equals(ID)) { // no // help // command // used buffer.append(printDescription(args.getCommandId())); myResultDescription = buffer.toString(); } else {// nothing passed buffer.append(printDefault()); myResultDescription = buffer.toString(); } } private String printDefault() { final StringBuffer buffer = new StringBuffer(); buffer.append(Messages.getString("Help.tool.usage.description")); //$NON-NLS-1$ // print command list buffer.append(Messages.getString("Help.available.commands.list.header")); //$NON-NLS-1$ final TreeSet<ICommand> knownCommands = new TreeSet<ICommand>(new Comparator<ICommand>() { public int compare(ICommand o1, ICommand o2) { return o1.getId().compareTo(o2.getId()); } }); knownCommands.addAll(CommandRegistry.getInstance().commands()); for (final ICommand command : knownCommands) { buffer.append(MessageFormat.format(Messages.getString("Help.available.commands.list.pattern"), prepare(String.valueOf(command.getId())), String.valueOf(command.getCommandDescription()))); //$NON-NLS-1$ } buffer.append(Messages.getString("Help.command.usage.text")); //$NON-NLS-1$ buffer.append(printGlobalOptions()); return buffer.toString(); } private static String prepare(final String s) { return s.length() < 4 ? s + "\t" : s; } private String printGlobalOptions() { final String globalOptions = Messages.getString("Help.global.options.header"); //$NON-NLS-1$ return MessageFormat.format(globalOptions, CommandRunner.HOST_ARG, CommandRunner.USER_ARG, CommandRunner.PASSWORD_ARG, Args.DEBUG_ARG, Args.DEBUG_CLEAN_OFF); } private String printDescription(final String commandId) { StringBuffer buffer = new StringBuffer(); final ICommand command = CommandRegistry.getInstance().getCommand(commandId); if (command != null && command.getId().equals(commandId)) { buffer.append(command.getUsageDescription()); buffer.append(printGlobalOptions()); return buffer.toString(); } else { buffer.append(MessageFormat.format(Messages.getString("Help.no.one.registered.command.found.message"), commandId)); //$NON-NLS-1$ buffer.append(printDefault()); return buffer.toString(); } } public String getId() { return ID; } public boolean isConnectionRequired(final Args args) { return false; } public String getUsageDescription() { return getCommandDescription(); } public String getCommandDescription() { return Messages.getString("Help.command.description"); //$NON-NLS-1$ } public String getResultDescription() { return myResultDescription; } public void validate(Args args) throws IllegalArgumentException { // TODO Auto-generated method stub } }