blob: 1d9ead347fe00d19d47bb9e29094f9b3d61929dc [file] [log] [blame]
package org.qi4j.tools.shell.help;
import java.io.BufferedReader;
import java.io.PrintWriter;
import org.qi4j.api.injection.scope.Service;
import org.qi4j.api.mixin.Mixins;
import org.qi4j.api.service.ServiceReference;
import org.qi4j.tools.shell.Command;
@Mixins( HelpCommand.Mixin.class )
public interface HelpCommand extends Command
{
public class Mixin
implements Command
{
@Service
private Iterable<ServiceReference<Command>> commands;
@Override
public void execute( String[] args, BufferedReader input, PrintWriter output )
{
for( ServiceReference<Command> ref : commands )
{
Command command = ref.get();
String name = command.name();
String spacing = createSpacing( name );
output.println( name + spacing + command.description() );
output.flush();
}
}
private String createSpacing( String name )
{
int length = 20 - name.length();
StringBuilder builder = new StringBuilder( length + 1 );
for( int i = 0; i < length; i++ )
{
builder.append( ' ' );
}
return builder.toString();
}
@Override
public String description()
{
return "Prints this help text.";
}
@Override
public String name()
{
return "help";
}
}
}