diff options
author | Cedric Beust <cedric@beust.com> | 2014-07-24 22:31:21 -0700 |
---|---|---|
committer | Cedric Beust <cedric@beust.com> | 2014-07-24 22:31:21 -0700 |
commit | de233b128afd29605471abd1d17703a6b8c8ff4a (patch) | |
tree | 60580c32d4f36844813d77bf690e6da33c6cda38 | |
parent | 649895bc27f8b294e596727a88d765d923be2226 (diff) | |
parent | 9d7035d4d9145090a0d20869963e23014b835577 (diff) | |
download | platform_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
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(); + } } |