// 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/dev/alexflint/arg" "go.wit.com/gui" "go.wit.com/lib/protobuf/virtpb" "go.wit.com/log" ) // sent via -ldflags var VERSION string var BUILDTIME string var ARGNAME string = "virtigo" //go:embed resources/* var resources embed.FS func main() { me = new(virtigoT) gui.InitArg() me.pp = arg.MustParse(&argv) if argv.Bash { argv.doBash() os.Exit(0) } if len(argv.BashAuto) != 0 { argv.doBashAuto() os.Exit(0) } if me.pp == nil { me.pp.WriteHelp(os.Stdout) os.Exit(0) } 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()) } if argv.Admin { err := me.clusters.ConfigLoad() if err != nil { badExit(err) } doAdminGui() okExit("admin close") } if argv.Server != "" { log.Info("start admin interface") me.admin = new(adminT) var err error me.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) } me.admin.doAdminGui() okExit("admin close") } if argv.Daemon { if err := doDaemon(); err != nil { badExit(err) } okExit("") } // sit here go startHTTP() doGui() }