summaryrefslogtreecommitdiff
path: root/args.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2023-12-16 12:59:18 -0600
committerJeff Carr <[email protected]>2023-12-16 12:59:18 -0600
commitbbf96ee7fa67a6d50ea1d1b3a23a3f44f136a30e (patch)
treea96585438a24f296d58fb3d2bd5cad8f1d4c8f3c /args.go
parente9f1723dbc8dab3bd84f7006723f6ae9c97df88c (diff)
seems to compile and runv0.1.1
Signed-off-by: Jeff Carr <[email protected]>
Diffstat (limited to 'args.go')
-rw-r--r--args.go62
1 files changed, 59 insertions, 3 deletions
diff --git a/args.go b/args.go
index 578f514..8df208b 100644
--- a/args.go
+++ b/args.go
@@ -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
}