summaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorCedric Beust <cedric@beust.com>2012-09-17 23:01:04 -0700
committerCedric Beust <cedric@beust.com>2012-09-17 23:01:04 -0700
commitc421118d3104c0594dbe207c8443e51022422d32 (patch)
tree5b458560266ffd8800a719b312a3f47decc93363 /src/main
parent8a4c3d11d8d74628fbe55dce61771810a841723e (diff)
downloadplatform_external_jcommander-c421118d3104c0594dbe207c8443e51022422d32.tar.gz
platform_external_jcommander-c421118d3104c0594dbe207c8443e51022422d32.tar.bz2
platform_external_jcommander-c421118d3104c0594dbe207c8443e51022422d32.zip
Added JCommander#setNoThrow() and JCommander#getUnknownArgs().
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/beust/jcommander/JCommander.java46
-rw-r--r--src/main/java/com/beust/jcommander/internal/Lists.java5
2 files changed, 38 insertions, 13 deletions
diff --git a/src/main/java/com/beust/jcommander/JCommander.java b/src/main/java/com/beust/jcommander/JCommander.java
index 8965f3b..f1717be 100644
--- a/src/main/java/com/beust/jcommander/JCommander.java
+++ b/src/main/java/com/beust/jcommander/JCommander.java
@@ -18,18 +18,6 @@
package com.beust.jcommander;
-import com.beust.jcommander.FuzzyMap.IKey;
-import com.beust.jcommander.converters.IParameterSplitter;
-import com.beust.jcommander.converters.NoConverter;
-import com.beust.jcommander.converters.StringConverter;
-import com.beust.jcommander.internal.Console;
-import com.beust.jcommander.internal.DefaultConsole;
-import com.beust.jcommander.internal.DefaultConverterFactory;
-import com.beust.jcommander.internal.JDK6Console;
-import com.beust.jcommander.internal.Lists;
-import com.beust.jcommander.internal.Maps;
-import com.beust.jcommander.internal.Nullable;
-
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
@@ -50,6 +38,18 @@ import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;
+import com.beust.jcommander.FuzzyMap.IKey;
+import com.beust.jcommander.converters.IParameterSplitter;
+import com.beust.jcommander.converters.NoConverter;
+import com.beust.jcommander.converters.StringConverter;
+import com.beust.jcommander.internal.Console;
+import com.beust.jcommander.internal.DefaultConsole;
+import com.beust.jcommander.internal.DefaultConverterFactory;
+import com.beust.jcommander.internal.JDK6Console;
+import com.beust.jcommander.internal.Lists;
+import com.beust.jcommander.internal.Maps;
+import com.beust.jcommander.internal.Nullable;
+
/**
* The main class for JCommander. It's responsible for parsing the object that contains
* all the annotated fields, parse the command line and assign the fields with the correct
@@ -149,6 +149,9 @@ public class JCommander {
private int m_columnSize = 79;
private boolean m_helpWasSpecified;
+
+ private List<String> m_unknownArgs = Lists.newArrayList();
+ private boolean m_noThrow;
private static Console m_console;
@@ -721,7 +724,16 @@ public class JCommander {
}
}
} else {
- throw new ParameterException("Unknown option: " + arg);
+ if (m_noThrow) {
+ m_unknownArgs.add(arg);
+ i++;
+ while (i < args.length && ! isOption(args, args[i])) {
+ m_unknownArgs.add(args[i++]);
+ }
+ increment = 0;
+ } else {
+ throw new ParameterException("Unknown option: " + arg);
+ }
}
}
else {
@@ -1545,6 +1557,14 @@ public class JCommander {
m_allowAbbreviatedOptions = b;
}
+ public void setNoThrow(boolean b) {
+ m_noThrow = b;
+ }
+
+ public List<String> getUnknownArgs() {
+ return m_unknownArgs;
+ }
+
// public void setCaseSensitiveCommands(boolean b) {
// m_caseSensitiveCommands = b;
// }
diff --git a/src/main/java/com/beust/jcommander/internal/Lists.java b/src/main/java/com/beust/jcommander/internal/Lists.java
index c4017c0..fdbee55 100644
--- a/src/main/java/com/beust/jcommander/internal/Lists.java
+++ b/src/main/java/com/beust/jcommander/internal/Lists.java
@@ -19,6 +19,7 @@
package com.beust.jcommander.internal;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
@@ -33,6 +34,10 @@ public class Lists {
return new ArrayList<K>(c);
}
+ public static <K> List<K> newArrayList(K... c) {
+ return new ArrayList<K>(Arrays.asList(c));
+ }
+
public static <K> List<K> newArrayList(int size) {
return new ArrayList<K>(size);
}