mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-05-12 06:39:39 +08:00
- 后端新增更新检查/下载/安装流程与应用信息接口 - 关于弹窗展示版本/作者/仓库/Issue/Release,并内置检查更新 - 构建/发布注入版本号并生成 SHA256SUMS - 顶部工具栏入口调整与新建查询补全默认空 SQL
54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
package app
|
|
|
|
import (
|
|
"encoding/json"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
var AppVersion = "0.0.0"
|
|
var AppBuildTime = ""
|
|
|
|
func getCurrentVersion() string {
|
|
version := strings.TrimSpace(AppVersion)
|
|
if version == "" || version == "0.0.0" {
|
|
if env := strings.TrimSpace(os.Getenv("GONAVI_VERSION")); env != "" {
|
|
version = env
|
|
} else if pkgVersion, err := readPackageVersion(); err == nil && pkgVersion != "" {
|
|
version = pkgVersion
|
|
}
|
|
}
|
|
return normalizeVersion(version)
|
|
}
|
|
|
|
func readPackageVersion() (string, error) {
|
|
paths := []string{
|
|
filepath.Join("frontend", "package.json"),
|
|
}
|
|
exe, err := os.Executable()
|
|
if err == nil {
|
|
base := filepath.Dir(exe)
|
|
paths = append(paths, filepath.Join(base, "frontend", "package.json"))
|
|
paths = append(paths, filepath.Join(base, "..", "frontend", "package.json"))
|
|
}
|
|
|
|
for _, p := range paths {
|
|
data, err := os.ReadFile(p)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
var payload struct {
|
|
Version string `json:"version"`
|
|
}
|
|
if err := json.Unmarshal(data, &payload); err != nil {
|
|
continue
|
|
}
|
|
if strings.TrimSpace(payload.Version) != "" {
|
|
return strings.TrimSpace(payload.Version), nil
|
|
}
|
|
}
|
|
|
|
return "", os.ErrNotExist
|
|
}
|