2 * command line option definition
4 * License : The MIT License
5 * Copyright(c) 2013 MikuToga Partners
8 package jp.sfjp.mikutoga.pmd2xml;
10 import java.util.Arrays;
11 import java.util.Collections;
12 import java.util.HashMap;
13 import java.util.List;
21 OPT_HELP( 0, "-h", "-help", "-?"),
23 OPT_OUTFILE( 1, "-o"),
25 OPT_NEWLINE( 1, "-nl"),
26 OPT_GENOUT( 1, "-genout"),
27 OPT_IFORM( 1, "-iform"),
28 OPT_OFORM( 1, "-oform"),
31 private static final String HELP_CONSOLE =
32 "-h : put help message\n\n"
33 + "-i <file> : specify input file\n"
34 + "-o <file> : specify output file\n"
35 + "-f : force overwriting\n\n"
36 + "-nl <newline> : specify XML-newline character"
38 + "-genout <bool> : mark generator-name to XML"
40 + "-iform <format> : specify input format explicitly\n"
41 + "-oform <format> : specify output format explicitly\n\n"
42 + " bool : \"on\" or \"off\""
43 + " or \"true\" or \"false\""
44 + " or \"yes\" or \"no\"\n"
45 + " format : \"pmd\" or \"xml\" or"
46 + " \"xml101009\" or \"xml130128\"\n"
47 + " newline : \"lf\" or \"crlf\"\n"
50 private static final Map<String, OptSwitch> MAP_OPT;
53 Map<String, OptSwitch> map = new HashMap<String, OptSwitch>();
55 for(OptSwitch opt : values()){
56 for(String cmdarg : opt.cmdopts){
61 map = Collections.unmodifiableMap(map);
66 private final int exArgNum;
67 private final List<String> cmdopts;
73 * @param argnum 必要な引数の数
74 * @param cmdopts オプションスイッチパターン群
76 private OptSwitch(int argnum, String... cmdopts) {
77 this.exArgNum = argnum;
80 optlist = Arrays.asList(cmdopts);
81 optlist = Collections.unmodifiableList(optlist);
82 this.cmdopts = optlist;
89 * コンソール提示用ヘルプ出力文字列を返す。
93 static String getConsoleHelp(){
100 * <p>一つのオプションが複数の表記に合致する場合がある。
103 * @return オプション種別。合致する物が見つからなければnull
105 static OptSwitch parse(String cmd){
106 OptSwitch result = MAP_OPT.get(cmd);
112 * 各オプションに後続する引数の数を返す。
114 * <p>引数をとらないオプションは0を返す。
119 return this.exArgNum;