diff options
| author | Jeff Carr <[email protected]> | 2023-12-16 12:59:18 -0600 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2023-12-16 12:59:18 -0600 |
| commit | bbf96ee7fa67a6d50ea1d1b3a23a3f44f136a30e (patch) | |
| tree | a96585438a24f296d58fb3d2bd5cad8f1d4c8f3c /args.go | |
| parent | e9f1723dbc8dab3bd84f7006723f6ae9c97df88c (diff) | |
seems to compile and runv0.1.1
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'args.go')
| -rw-r--r-- | args.go | 62 |
1 files changed, 59 insertions, 3 deletions
@@ -5,10 +5,13 @@ package main */ import ( + "log" "fmt" + "reflect" + "strconv" arg "github.com/alexflint/go-arg" "git.wit.org/wit/gui" - log "git.wit.org/wit/gui/log" + // log "git.wit.org/wit/gui/log" ) @@ -25,7 +28,7 @@ var args struct { User string `arg:"env:USER"` Demo bool `help:"run a demo"` gui.GuiArgs - log.LogArgs + // log.LogArgs } func init() { @@ -35,6 +38,59 @@ func init() { if (args.Gui != "") { gui.GuiArg.Gui = args.Gui } - log.Log(true, "INIT() args.GuiArg.Gui =", gui.GuiArg.Gui) + log.Println(true, "INIT() args.GuiArg.Gui =", gui.GuiArg.Gui) + Set(&me, "default") + log.Println("init() me.artificialSleep =", me.artificialSleep) + log.Println("init() me.artificialS =", me.artificialS) + me.artificialSleep = 2.3 + log.Println("init() me.artificialSleep =", me.artificialSleep) + sleep(me.artificialSleep) +} + +func Set(ptr interface{}, tag string) error { + if reflect.TypeOf(ptr).Kind() != reflect.Ptr { + log.Println(logError, "Set() Not a pointer", ptr, "with tag =", tag) + return fmt.Errorf("Not a pointer") + } + + v := reflect.ValueOf(ptr).Elem() + t := v.Type() + + for i := 0; i < t.NumField(); i++ { + defaultVal := t.Field(i).Tag.Get(tag) + name := t.Field(i).Name + // log("Set() try name =", name, "defaultVal =", defaultVal) + setField(v.Field(i), defaultVal, name) + } + return nil +} + +func setField(field reflect.Value, defaultVal string, name string) error { + + if !field.CanSet() { + // log("setField() Can't set value", field, defaultVal) + return fmt.Errorf("Can't set value\n") + } else { + log.Println("setField() Can set value", name, defaultVal) + } + + switch field.Kind() { + case reflect.Int: + val, _ := strconv.Atoi(defaultVal) + field.Set(reflect.ValueOf(int(val)).Convert(field.Type())) + case reflect.Float64: + val, _ := strconv.ParseFloat(defaultVal, 64) + field.Set(reflect.ValueOf(float64(val)).Convert(field.Type())) + case reflect.String: + field.Set(reflect.ValueOf(defaultVal).Convert(field.Type())) + case reflect.Bool: + if defaultVal == "true" { + field.Set(reflect.ValueOf(true)) + } else { + field.Set(reflect.ValueOf(false)) + } + } + + return nil } |
