// Copyright 2024 WIT.COM Inc Licensed GPL 3.0 package main import ( "embed" "net/url" "os" "path/filepath" "github.com/google/uuid" "go.wit.com/lib/protobuf/argvpb" "go.wit.com/lib/protobuf/virtpb" "go.wit.com/log" ) //go:embed resources/* var resources embed.FS func main() { me = new(virtigoT) me.argv = argvpb.Autocomplete(&argv) // adds shell auto complete to go-args if os.Getenv("VIRTIGO_HOME") == "" { homeDir, _ := os.UserHomeDir() fullpath := filepath.Join(homeDir, ".config/virtigo") os.Setenv("VIRTIGO_HOME", fullpath) } me.clusters = virtpb.NewClusters() if argv.List != nil { err := me.clusters.ConfigLoad() if err != nil { badExit(err) } doList() okExit("virtigo list") } if argv.Droplet != nil { exit(doDroplet()) } me.myGui.Start() // loads the GUI toolkit if argv.Admin { err := me.clusters.ConfigLoad() if err != nil { badExit(err) } doAdminGui() okExit("admin close") } if argv.Server != "" { log.Info("start admin interface") admin := new(adminT) var err error admin.url, err = url.Parse(argv.Server) if err != nil { badExit(err) } err = me.clusters.ConfigLoad() if err != nil { clusters := virtpb.NewClusters() c := new(virtpb.Cluster) c.Uuid = uuid.New().String() c.URL = append(c.URL, argv.Server) clusters.Append(c) virtpb.ConfigWriteTEXT(clusters, "cluster.text") badExit(err) } admin.doAdminGui() okExit("admin close") } if argv.Daemon { if err := doDaemon(); err != nil { badExit(err) } okExit("") } doGui() // start making our forge GUI startHTTP() // sit here forever }