diff options
author | helllth <th@cismet.de> | 2014-07-22 16:13:01 +0200 |
---|---|---|
committer | helllth <th@cismet.de> | 2014-07-22 16:13:01 +0200 |
commit | 9d7035d4d9145090a0d20869963e23014b835577 (patch) | |
tree | 60580c32d4f36844813d77bf690e6da33c6cda38 | |
parent | 55e9949641d8906e622ea92f40ac1138ae74a30c (diff) | |
download | platform_external_jcommander-9d7035d4d9145090a0d20869963e23014b835577.tar.gz platform_external_jcommander-9d7035d4d9145090a0d20869963e23014b835577.tar.bz2 platform_external_jcommander-9d7035d4d9145090a0d20869963e23014b835577.zip |
add possibility to allow parameter overwriting (and even disallowing it for certain parameters)
4 files changed, 23 insertions, 1 deletions
diff --git a/src/main/java/com/beust/jcommander/JCommander.java b/src/main/java/com/beust/jcommander/JCommander.java index f4a29e5..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; @@ -1567,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(); + } } |