mooli tayer has posted comments on this change. Change subject: uutils: added new cli parser ......................................................................
Patch Set 8: (4 comments) https://gerrit.ovirt.org/#/c/40157/8/backend/manager/modules/uutils/src/main/java/org/ovirt/engine/core/uutils/cli/parser/ParametersParser.java File backend/manager/modules/uutils/src/main/java/org/ovirt/engine/core/uutils/cli/parser/ParametersParser.java: Line 25: /** Line 26: * Key under which are stored other arguments in map <code>arguments</code>. Line 27: * Use it to obtain rest of arguments, which was not parsed by parser. Line 28: */ Line 29: public static final String PARAMETER_KEY_OTHER = "__other__"; > why not __extra__ or __positional__? I think tail (or positional) is a better name for a new user of this class to understand what get("X") means. it describes what king of other/extra args these are. Line 30: /** Line 31: * Key under which are stored exceptions during parsing in map <code>arguments</code>. Line 32: * Use it to obtain exception which happend during parsing. Line 33: */ Line 104: } Line 105: if (parserArgument.getType() == ArgumentType.has_argument && value == null) { Line 106: errors.add( Line 107: new IllegalArgumentException( Line 108: String.format("Value is required, but missing for argument '%1$s'", key) > multiple errors are good service to user, instead of executing again and di ok. Line 109: ) Line 110: ); Line 111: } Line 112: if (value == null) { Line 128: } Line 129: putValue(argMap, parserArgument, convertedValue); Line 130: } Line 131: } Line 132: fillDefaults(argMap); > you cannot put default first as it is important to know if the parameter wa right my mistake Line 133: Line 134: List<String> mandatoryCopy = new ArrayList<String>(mandatory); Line 135: mandatoryCopy.removeAll(argMap.keySet()); Line 136: if(!mandatoryCopy.isEmpty()) { https://gerrit.ovirt.org/#/c/40157/8/backend/manager/modules/uutils/src/main/resources/org/ovirt/engine/core/uutils/cli/parser/defaults.properties File backend/manager/modules/uutils/src/main/resources/org/ovirt/engine/core/uutils/cli/parser/defaults.properties: Line 16: # argument can be specified more times, it will store list of values Line 17: arg.multivalue = false Line 18: # If argument has no value specified this value will be set Line 19: #arg.value = Line 20: # if argument is mandatory and not specified set it's value to arg.default, by default it's none, > if argument is mandatory why not always take default? mandatory & no value & has def = def not mandatory & no value & has def = def this is simpler to test & more powerful since user can decide if he wants default regardless of type. am I missing something? if so documentation can be something like: # if arg not provided set to this value #arg.defmissing # if no value provided set to this value #arg.defnoval Line 21: # so if argument is mandatory and has no default value parsing will fail on IllegalArgumentException Line 22: #arg.default = Line 23: # will be print as first, should contain usage of program/module/action Line 24: help.usage = -- To view, visit https://gerrit.ovirt.org/40157 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: comment Gerrit-Change-Id: I00042b669e19293641579582223e7ca40717132d Gerrit-PatchSet: 8 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Ondra Machacek <omach...@redhat.com> Gerrit-Reviewer: Alon Bar-Lev <alo...@redhat.com> Gerrit-Reviewer: Martin Peřina <mper...@redhat.com> Gerrit-Reviewer: Mooli Tayer <mta...@redhat.com> Gerrit-Reviewer: Ondra Machacek <omach...@redhat.com> Gerrit-Reviewer: Oved Ourfali <oourf...@redhat.com> Gerrit-Reviewer: automat...@ovirt.org Gerrit-Reviewer: mooli tayer <mta...@redhat.com> Gerrit-Reviewer: oVirt Jenkins CI Server Gerrit-HasComments: Yes _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches