Mercurial > hg4j
annotate cmdline/org/tmatesoft/hg/console/Options.java @ 480:f3fab7a20841
Refactor LineReader utility as stanalone class to facilitate reuse
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> | 
|---|---|
| date | Tue, 17 Jul 2012 22:14:21 +0200 | 
| parents | 45dc79e545f5 | 
| children | 
| rev | line source | 
|---|---|
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
1 /* | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
2 * Copyright (c) 2011 TMate Software Ltd | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
3 * | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
4 * This program is free software; you can redistribute it and/or modify | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
5 * it under the terms of the GNU General Public License as published by | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
6 * the Free Software Foundation; version 2 of the License. | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
7 * | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
8 * This program is distributed in the hope that it will be useful, | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
11 * GNU General Public License for more details. | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
12 * | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
13 * For information on how to redistribute this software under | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
14 * the terms of a license other than GNU General Public License | 
| 
102
 
a3a2e5deb320
Updated contact address to support@hg4j.com
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
95 
diff
changeset
 | 
15 * contact TMate Software at support@hg4j.com | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
16 */ | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
17 package org.tmatesoft.hg.console; | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
18 | 
| 
299
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
19 import java.util.Collections; | 
| 
143
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
20 import java.util.HashMap; | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
21 import java.util.LinkedList; | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
22 import java.util.List; | 
| 
143
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
23 import java.util.Map; | 
| 
299
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
24 import java.util.Set; | 
| 
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
25 import java.util.TreeSet; | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
26 | 
| 
143
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
27 import org.tmatesoft.hg.repo.HgLookup; | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
28 import org.tmatesoft.hg.repo.HgRepository; | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
29 | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
30 /** | 
| 
143
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
31 * Parse command-line options. Primitive implementation that recognizes options with 0 or 1 argument. | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
32 * | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
33 * @author Artem Tikhomirov | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
34 * @author TMate Software Ltd. | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
35 */ | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
36 class Options { | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
37 | 
| 
143
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
38 public final Map<String,List<String>> opt2values = new HashMap<String, List<String>>(); | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
39 | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
40 public boolean getBoolean(String... aliases) { | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
41 return getBoolean(false, aliases); | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
42 } | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
43 | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
44 public boolean getBoolean(boolean def, String... aliases) { | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
45 for (String s : aliases) { | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
46 if (opt2values.containsKey(s)) { | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
47 return true; | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
48 } | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
49 } | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
50 return def; | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
51 } | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
52 | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
53 public String getSingle(String... aliases) { | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
54 String rv = null; | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
55 for (String s : aliases) { | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
56 List<String> values = opt2values.get(s); | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
57 if (values != null && values.size() > 0) { | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
58 rv = values.get(values.size() - 1); // take last one, most recent | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
59 } | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
60 } | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
61 return rv; | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
62 } | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
63 | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
64 public int getSingleInt(int def, String... aliases) { | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
65 String r = getSingle(aliases); | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
66 if (r == null) { | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
67 return def; | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
68 } | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
69 return Integer.parseInt(r); | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
70 } | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
71 | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
72 public List<String> getList(String... aliases) { | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
73 LinkedList<String> rv = new LinkedList<String>(); | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
74 for (String s : aliases) { | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
75 List<String> values = opt2values.get(s); | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
76 if (values != null) { | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
77 rv.addAll(values); | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
78 } | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
79 } | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
80 return rv; | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
81 } | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
82 | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
83 public HgRepository findRepository() throws Exception { | 
| 
143
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
84 String repoLocation = getSingle("-R", "--repository"); | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
85 if (repoLocation != null) { | 
| 
95
 
bcd31a4c638a
Lookup to HgLookup
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
74 
diff
changeset
 | 
86 return new HgLookup().detect(repoLocation); | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
87 } | 
| 
95
 
bcd31a4c638a
Lookup to HgLookup
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
74 
diff
changeset
 | 
88 return new HgLookup().detectFromWorkingDir(); | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
89 } | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
90 | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
91 | 
| 
299
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
92 public static Options parse(String[] commandLineArgs, Set<String> flagOptions) { | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
93 Options rv = new Options(); | 
| 
143
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
94 List<String> values = new LinkedList<String>(); | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
95 rv.opt2values.put("", values); // values with no options | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
96 for (String arg : commandLineArgs) { | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
97 if (arg.charAt(0) == '-') { | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
98 // option | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
99 if (arg.length() == 1) { | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
100 throw new IllegalArgumentException("Bad option: -"); | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
101 } | 
| 
299
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
102 if (flagOptions.contains(arg)) { | 
| 
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
103 rv.opt2values.put(arg, Collections.<String>emptyList()); | 
| 
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
104 values = rv.opt2values.get(""); | 
| 
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
105 } else { | 
| 
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
106 values = rv.opt2values.get(arg); | 
| 
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
107 if (values == null) { | 
| 
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
108 rv.opt2values.put(arg, values = new LinkedList<String>()); | 
| 
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
109 } | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
110 } | 
| 
143
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
111 // next value, if any, gets into the values list for arg option. | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
112 } else { | 
| 
143
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
113 values.add(arg); | 
| 
 
b9700740553a
Command line tools parse and respect most of command-line arguments
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
102 
diff
changeset
 | 
114 values = rv.opt2values.get(""); | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
115 } | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
116 } | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
117 return rv; | 
| 
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
118 } | 
| 
299
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
119 | 
| 
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
120 public static Set<String> asSet(String... ss) { | 
| 
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
121 TreeSet<String> rv = new TreeSet<String>(); | 
| 
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
122 for (String s : ss) { | 
| 
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
123 rv.add(s); | 
| 
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
124 } | 
| 
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
125 return rv; | 
| 
 
45dc79e545f5
Recognize flag options (options with no arguments) in command line sample apps
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents: 
143 
diff
changeset
 | 
126 } | 
| 
74
 
6f1b88693d48
Complete refactoring to org.tmatesoft
 
Artem Tikhomirov <tikhomirov.artem@gmail.com> 
parents:  
diff
changeset
 | 
127 } | 
