初步实现安装界面

This commit is contained in:
GoEdgeLab
2020-10-13 20:05:13 +08:00
parent 911e57b1f2
commit 23c0200e73
76 changed files with 2550 additions and 88 deletions

View File

@@ -1,18 +1,47 @@
package main
import (
"encoding/json"
"github.com/TeaOSLab/EdgeAPI/internal/apps"
teaconst "github.com/TeaOSLab/EdgeAPI/internal/const"
"github.com/TeaOSLab/EdgeAPI/internal/nodes"
"github.com/TeaOSLab/EdgeAPI/internal/setup"
_ "github.com/TeaOSLab/EdgeAPI/internal/tasks"
"github.com/iwind/TeaGo/Tea"
_ "github.com/iwind/TeaGo/bootstrap"
"github.com/iwind/TeaGo/maps"
"log"
"os"
)
func main() {
if !Tea.IsTesting() {
Tea.Env = "prod"
}
app := apps.NewAppCmd()
app.Version(teaconst.Version)
app.Product(teaconst.ProductName)
app.Usage(teaconst.ProcessName + " [start|stop|restart]")
app.Usage(teaconst.ProcessName + " [start|stop|restart|setup]")
app.On("setup", func() {
setupCmd := setup.NewSetupFromCmd()
err := setupCmd.Run()
result := maps.Map{}
if err != nil {
result["isOk"] = false
result["error"] = err.Error()
} else {
result["isOk"] = true
result["adminNodeId"] = setupCmd.AdminNodeId
result["adminNodeSecret"] = setupCmd.AdminNodeSecret
}
resultJSON, err := json.Marshal(result)
if err != nil {
log.Fatal(err.Error())
}
_, _ = os.Stdout.Write(resultJSON)
})
app.Run(func() {
nodes.NewAPINode().Start()
})

103
cmd/sql-generate/main.go Normal file
View File

@@ -0,0 +1,103 @@
package main
import (
"bytes"
"flag"
"fmt"
"github.com/iwind/TeaGo/Tea"
_ "github.com/iwind/TeaGo/bootstrap"
"github.com/iwind/TeaGo/logs"
"go/format"
"io/ioutil"
"os"
"path/filepath"
"strings"
)
func main() {
var dir string
flag.StringVar(&dir, "dir", "", "SQL dir")
flag.Parse()
if len(dir) == 0 {
fmt.Println("[ERROR]'dir' should not be empty")
return
}
sourceDir := filepath.Dir(Tea.Root)
// full
fullSQLFile := dir + "/full.sql"
_, err := os.Stat(fullSQLFile)
if err != nil {
if os.IsNotExist(err) {
fmt.Println("[ERROR]'full.sql' not found")
return
}
fmt.Println("[ERROR]checking 'full.sql' failed: " + err.Error())
return
}
matches, err := filepath.Glob(dir + "/*.sql")
if err != nil {
fmt.Println("[ERROR]" + err.Error())
return
}
versionsCode := "// generated\npackage sqls\n\nvar SQLVersions = []map[string]string{"
for _, match := range matches {
baseName := filepath.Base(match)
logs.Println("reading " + baseName + " ...")
data, err := ioutil.ReadFile(match)
if err != nil {
fmt.Println("[ERROR]" + err.Error())
return
}
version := baseName[:strings.LastIndex(baseName, ".")]
versionsCode += "\n" + `{ "version": "` + version + `", "sql": SQL_` + version + ` },`
code := "// generated\npackage sqls \n\n"
lines := bytes.Split(data, []byte{'\n'})
for index, line := range lines {
if index == 0 {
code += "var SQL_" + version + " = "
}
code += `"` + string(line) + `\n"`
if index != len(lines)-1 {
code += "+"
}
code += "\n"
}
code += "\n"
codeBytes, err := format.Source([]byte(code))
if err != nil {
fmt.Println("[ERROR]" + err.Error())
return
}
fmt.Println("writing sql_" + version + ".go ...")
err = ioutil.WriteFile(sourceDir+"/internal/setup/sqls/sql_"+version+".go", codeBytes, 0666)
if err != nil {
fmt.Println("[ERROR]" + err.Error())
return
}
fmt.Println("ok")
}
versionsCode += "\n}"
versionsCodeBytes, err := format.Source([]byte(versionsCode))
if err != nil {
fmt.Println("[ERROR]" + err.Error())
return
}
fmt.Println("writing sqls.go ...")
err = ioutil.WriteFile(sourceDir+"/internal/setup/sqls/sqls.go", versionsCodeBytes, 0666)
if err != nil {
fmt.Println("[ERROR]" + err.Error())
return
}
fmt.Println("ok")
}