From 38b31c65f8d4b85df739905d063f431cfa8b43dc Mon Sep 17 00:00:00 2001 From: Matt Bell <mappum@gmail.com> Date: Mon, 10 Nov 2014 16:59:07 -0800 Subject: [PATCH] commands: Added Option helper constructors --- commands/option.go | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/commands/option.go b/commands/option.go index f068ec228..8f11ace49 100644 --- a/commands/option.go +++ b/commands/option.go @@ -18,11 +18,43 @@ type Option struct { Type reflect.Kind // value must be this type Description string // a short string to describe this option - // TODO: add more features(?): + // MAYBE_TODO: add more features(?): //Default interface{} // the default value (ignored if `Required` is true) //Required bool // whether or not the option must be provided } +// constructor helper functions +func NewOption(kind reflect.Kind, names ...string) Option { + if len(names) < 2 { + panic("Options require at least two string values (name and description)") + } + + desc := names[len(names)-1] + names = names[:len(names)-2] + + return Option{ + Names: names, + Type: kind, + Description: desc, + } +} + +func BoolOption(names ...string) Option { + return NewOption(Bool, names...) +} +func IntOption(names ...string) Option { + return NewOption(Int, names...) +} +func UintOption(names ...string) Option { + return NewOption(Uint, names...) +} +func FloatOption(names ...string) Option { + return NewOption(Float, names...) +} +func StringOption(names ...string) Option { + return NewOption(String, names...) +} + // Flag names const ( EncShort = "enc" -- GitLab