OSDN Git Service

d9738fc3778e84af4ac85109ada9e859c817c983
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / command / HelpCommand.java
1 package jp.sourceforge.stigmata.command;
2
3 import java.util.ResourceBundle;
4
5 import jp.sourceforge.stigmata.BirthmarkContext;
6 import jp.sourceforge.stigmata.BirthmarkEnvironment;
7 import jp.sourceforge.stigmata.ComparisonPairFilter;
8 import jp.sourceforge.stigmata.ComparisonPairFilterSet;
9 import jp.sourceforge.stigmata.Stigmata;
10 import jp.sourceforge.stigmata.spi.BirthmarkSpi;
11 import jp.sourceforge.talisman.xmlcli.ResourceHelpFormatter;
12
13 import org.apache.commons.cli.HelpFormatter;
14 import org.apache.commons.cli.Options;
15
16 /**
17  * 
18  * @author Haruaki Tamada
19  */
20 public class HelpCommand extends AbstractStigmataCommand{
21     private Options options;
22
23     public HelpCommand(Options options){
24         this.options = options;
25     }
26
27     @Override
28     public String getCommandString(){
29         return "help";
30     }
31
32     @Override
33     public void perform(Stigmata stigmata, BirthmarkContext context, String[] args){
34         BirthmarkEnvironment env = context.getEnvironment();
35         Package p = getClass().getPackage();
36
37         ResourceBundle helpResource = ResourceBundle.getBundle("resources.options");
38         HelpFormatter formatter = new ResourceHelpFormatter(helpResource);
39         formatter.printHelp(
40             String.format(
41                 helpResource.getString("cli.interface"),
42                 p.getImplementationVersion()
43             ),
44             options
45         );
46         System.out.println();
47         System.out.println(helpResource.getString("cli.interface.birthmarks"));
48         for(BirthmarkSpi service: env.getServices()){
49             if(!service.isExperimental()){
50                 System.out.printf("    %-5s (%s): %s%n", service.getType(),
51                         service.getDisplayType(), service.getDescription());
52             }
53         }
54         System.out.println();
55         System.out.println(helpResource.getString("cli.interface.filters"));
56         for(ComparisonPairFilterSet filterset: env.getFilterManager().getFilterSets()){
57             String matchString = helpResource.getString("cli.interface.filter.matchall");
58             if(filterset.isMatchAny()) matchString = helpResource.getString("cli.interface.filter.matchany");
59             System.out.printf("    %s (%s)%n", filterset.getName(), matchString);
60             for(ComparisonPairFilter filter: filterset){
61                 System.out.printf("        %s%n", filter);
62             }
63         }
64         System.out.println();
65         System.out.println(helpResource.getString("cli.interface.copyright"));
66         System.out.println(helpResource.getString("cli.interface.mailto"));
67     }
68 }