summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCedric Beust <cedric@beust.com>2014-07-24 22:31:21 -0700
committerCedric Beust <cedric@beust.com>2014-07-24 22:31:21 -0700
commitde233b128afd29605471abd1d17703a6b8c8ff4a (patch)
tree60580c32d4f36844813d77bf690e6da33c6cda38
parent649895bc27f8b294e596727a88d765d923be2226 (diff)
parent9d7035d4d9145090a0d20869963e23014b835577 (diff)
downloadplatform_external_jcommander-de233b128afd29605471abd1d17703a6b8c8ff4a.tar.gz
platform_external_jcommander-de233b128afd29605471abd1d17703a6b8c8ff4a.tar.bz2
platform_external_jcommander-de233b128afd29605471abd1d17703a6b8c8ff4a.zip
Merge pull request #199 from helllth/master
Improve @file possibilities
-rw-r--r--src/main/java/com/beust/jcommander/JCommander.java13
-rw-r--r--src/main/java/com/beust/jcommander/Parameter.java8
-rw-r--r--src/main/java/com/beust/jcommander/ParameterDescription.java6
-rw-r--r--src/main/java/com/beust/jcommander/WrappedParameter.java3
4 files changed, 27 insertions, 3 deletions
diff --git a/src/main/java/com/beust/jcommander/JCommander.java b/src/main/java/com/beust/jcommander/JCommander.java
index 3884976..04f98ba 100644
--- a/src/main/java/com/beust/jcommander/JCommander.java
+++ b/src/main/java/com/beust/jcommander/JCommander.java
@@ -154,6 +154,7 @@ public class JCommander {
private List<String> m_unknownArgs = Lists.newArrayList();
private boolean m_acceptUnknownOptions = false;
+ private boolean m_allowParameterOverwriting = false;
private static Console m_console;
@@ -485,8 +486,10 @@ public class JCommander {
// Read through file one line at time. Print line # and line
while ((line = bufRead.readLine()) != null) {
- // Allow empty lines in these at files
- if (line.length() > 0) result.add(line);
+ // Allow empty lines and # comments in these at files
+ if (line.length() > 0 && ! line.trim().startsWith("#")) {
+ result.add(line);
+ }
}
bufRead.close();
@@ -1565,7 +1568,13 @@ public class JCommander {
public List<String> getUnknownOptions() {
return m_unknownArgs;
}
+ public void setAllowParameterOverwriting(boolean b) {
+ m_allowParameterOverwriting = b;
+ }
+ public boolean isParameterOverwritingAllowed() {
+ return m_allowParameterOverwriting;
+ }
// public void setCaseSensitiveCommands(boolean b) {
// m_caseSensitiveCommands = b;
// }
diff --git a/src/main/java/com/beust/jcommander/Parameter.java b/src/main/java/com/beust/jcommander/Parameter.java
index 974eeaa..d8cf87d 100644
--- a/src/main/java/com/beust/jcommander/Parameter.java
+++ b/src/main/java/com/beust/jcommander/Parameter.java
@@ -119,4 +119,12 @@ public @interface Parameter {
* required parameters are no longer checked for their presence.
*/
boolean help() default false;
+
+ /**
+ * If true, this parameter can be overwritten through a file or another appearance of the parameter
+ * @return
+ */
+ boolean forceNonOverwritable() default false;
+
+
}
diff --git a/src/main/java/com/beust/jcommander/ParameterDescription.java b/src/main/java/com/beust/jcommander/ParameterDescription.java
index 33574a9..e41c782 100644
--- a/src/main/java/com/beust/jcommander/ParameterDescription.java
+++ b/src/main/java/com/beust/jcommander/ParameterDescription.java
@@ -231,7 +231,7 @@ public class ParameterDescription {
p("Adding " + (isDefault ? "default " : "") + "value:" + value
+ " to parameter:" + m_parameterized.getName());
String name = m_wrappedParameter.names()[0];
- if (m_assigned && ! isMultiOption()) {
+ if (m_assigned && ! isMultiOption() && !m_jCommander.isParameterOverwritingAllowed() || isNonOverwritableForced()) {
throw new ParameterException("Can only specify option " + name + " once.");
}
@@ -358,4 +358,8 @@ public class ParameterDescription {
public boolean isHelp() {
return m_wrappedParameter.isHelp();
}
+
+ public boolean isNonOverwritableForced() {
+ return m_wrappedParameter.isNonOverwritableForced();
+ }
}
diff --git a/src/main/java/com/beust/jcommander/WrappedParameter.java b/src/main/java/com/beust/jcommander/WrappedParameter.java
index 52cafc4..f4e7d56 100644
--- a/src/main/java/com/beust/jcommander/WrappedParameter.java
+++ b/src/main/java/com/beust/jcommander/WrappedParameter.java
@@ -109,4 +109,7 @@ public class WrappedParameter {
return m_parameter != null && m_parameter.help();
}
+ public boolean isNonOverwritableForced() {
+ return m_parameter != null && m_parameter.forceNonOverwritable();
+ }
}