|
@@ -0,0 +1,83 @@
|
|
|
+package main
|
|
|
+
|
|
|
+import (
|
|
|
+ "encoding/json"
|
|
|
+ "errors"
|
|
|
+ "fmt"
|
|
|
+ "io"
|
|
|
+ "io/fs"
|
|
|
+ "log"
|
|
|
+ "os"
|
|
|
+ "path"
|
|
|
+ "runtime"
|
|
|
+
|
|
|
+ "github.com/0xJacky/Nginx-UI/app"
|
|
|
+)
|
|
|
+
|
|
|
+type VersionInfo struct {
|
|
|
+ Version string `json:"version"`
|
|
|
+ BuildId int `json:"build_id"`
|
|
|
+ TotalBuild int `json:"total_build"`
|
|
|
+}
|
|
|
+
|
|
|
+func main() {
|
|
|
+ _, file, _, ok := runtime.Caller(0)
|
|
|
+ if !ok {
|
|
|
+ log.Print("Unable to get the current file")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ basePath := path.Join(path.Dir(file), "../../")
|
|
|
+
|
|
|
+ versionFile, err := app.DistFS.Open("dist/version.json")
|
|
|
+ if err != nil {
|
|
|
+ if errors.Is(err, fs.ErrNotExist) {
|
|
|
+ log.Print("\"dist/version.json\" not found, load from src instead")
|
|
|
+ versionFile, err = os.Open(path.Join(basePath, "app/src/version.json"))
|
|
|
+ }
|
|
|
+
|
|
|
+ if err != nil {
|
|
|
+ log.Fatal(err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ defer func(versionFile fs.File) {
|
|
|
+ err := versionFile.Close()
|
|
|
+ if err != nil {
|
|
|
+ log.Fatal(err)
|
|
|
+ }
|
|
|
+ }(versionFile)
|
|
|
+
|
|
|
+ // Read the version.json file
|
|
|
+ data, err := io.ReadAll(versionFile)
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalf("Failed to read version.json: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ // Parse the JSON data
|
|
|
+ var versionInfo VersionInfo
|
|
|
+ err = json.Unmarshal(data, &versionInfo)
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalf("Failed to parse JSON: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ // Generate the version.gen.go file content
|
|
|
+ genContent := fmt.Sprintf(`// Code generated by cmd/version/generate.go; DO NOT EDIT.
|
|
|
+
|
|
|
+package version
|
|
|
+
|
|
|
+func init() {
|
|
|
+ Version = "%s"
|
|
|
+ BuildId = %d
|
|
|
+ TotalBuild = %d
|
|
|
+}
|
|
|
+`, versionInfo.Version, versionInfo.BuildId, versionInfo.TotalBuild)
|
|
|
+
|
|
|
+ genPath := path.Join(basePath, "internal/version/version.gen.go")
|
|
|
+ err = os.WriteFile(genPath, []byte(genContent), 0644)
|
|
|
+ if err != nil {
|
|
|
+ log.Fatalf("Failed to write version.gen.go: %v", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ fmt.Println("version.gen.go has been generated successfully.")
|
|
|
+}
|