112 lines
1.8 KiB
Go
112 lines
1.8 KiB
Go
// 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()
|
|
}
|