mirror of https://github.com/jetkvm/kvm.git
feat: add command to show version (#604)
* feat: add -version flag for jetkvm_app * move code to kvm package
This commit is contained in:
parent
ab3dda6dee
commit
d704fcc6c7
|
@ -23,6 +23,9 @@ linters:
|
||||||
- linters:
|
- linters:
|
||||||
- errcheck
|
- errcheck
|
||||||
path: _test.go
|
path: _test.go
|
||||||
|
- linters:
|
||||||
|
- forbidigo
|
||||||
|
path: cmd/main.go
|
||||||
- linters:
|
- linters:
|
||||||
- gochecknoinits
|
- gochecknoinits
|
||||||
path: internal/logging/sse.go
|
path: internal/logging/sse.go
|
||||||
|
|
18
cmd/main.go
18
cmd/main.go
|
@ -1,9 +1,27 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
"github.com/jetkvm/kvm"
|
"github.com/jetkvm/kvm"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
versionPtr := flag.Bool("version", false, "print version and exit")
|
||||||
|
versionJsonPtr := flag.Bool("version-json", false, "print version as json and exit")
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
if *versionPtr || *versionJsonPtr {
|
||||||
|
versionData, err := kvm.GetVersionData(*versionJsonPtr)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf("failed to get version data: %v\n", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
fmt.Println(string(versionData))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
kvm.Main()
|
kvm.Main()
|
||||||
}
|
}
|
||||||
|
|
|
@ -174,7 +174,7 @@ cd "${REMOTE_PATH}"
|
||||||
chmod +x jetkvm_app_debug
|
chmod +x jetkvm_app_debug
|
||||||
|
|
||||||
# Run the application in the background
|
# Run the application in the background
|
||||||
PION_LOG_TRACE=${LOG_TRACE_SCOPES} GODEBUG=netdns=1 ./jetkvm_app_debug
|
PION_LOG_TRACE=${LOG_TRACE_SCOPES} ./jetkvm_app_debug | tee -a /tmp/jetkvm_app_debug.log
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
echo "Deployment complete."
|
echo "Deployment complete."
|
19
native.go
19
native.go
|
@ -9,6 +9,7 @@ import (
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -366,6 +367,22 @@ func shouldOverwrite(destPath string, srcHash []byte) bool {
|
||||||
return !bytes.Equal(srcHash, dstHash)
|
return !bytes.Equal(srcHash, dstHash)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getNativeSha256() ([]byte, error) {
|
||||||
|
version, err := resource.ResourceFS.ReadFile("jetkvm_native.sha256")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return version, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetNativeVersion() (string, error) {
|
||||||
|
version, err := getNativeSha256()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return strings.TrimSpace(string(version)), nil
|
||||||
|
}
|
||||||
|
|
||||||
func ensureBinaryUpdated(destPath string) error {
|
func ensureBinaryUpdated(destPath string) error {
|
||||||
srcFile, err := resource.ResourceFS.Open("jetkvm_native")
|
srcFile, err := resource.ResourceFS.Open("jetkvm_native")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -373,7 +390,7 @@ func ensureBinaryUpdated(destPath string) error {
|
||||||
}
|
}
|
||||||
defer srcFile.Close()
|
defer srcFile.Close()
|
||||||
|
|
||||||
srcHash, err := resource.ResourceFS.ReadFile("jetkvm_native.sha256")
|
srcHash, err := getNativeSha256()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
nativeLogger.Debug().Msg("error reading embedded jetkvm_native.sha256, proceeding with update")
|
nativeLogger.Debug().Msg("error reading embedded jetkvm_native.sha256, proceeding with update")
|
||||||
srcHash = nil
|
srcHash = nil
|
||||||
|
|
4
ota.go
4
ota.go
|
@ -50,6 +50,10 @@ const UpdateMetadataUrl = "https://api.jetkvm.com/releases"
|
||||||
|
|
||||||
var builtAppVersion = "0.1.0+dev"
|
var builtAppVersion = "0.1.0+dev"
|
||||||
|
|
||||||
|
func GetBuiltAppVersion() string {
|
||||||
|
return builtAppVersion
|
||||||
|
}
|
||||||
|
|
||||||
func GetLocalVersion() (systemVersion *semver.Version, appVersion *semver.Version, err error) {
|
func GetLocalVersion() (systemVersion *semver.Version, appVersion *semver.Version, err error) {
|
||||||
appVersion, err = semver.NewVersion(builtAppVersion)
|
appVersion, err = semver.NewVersion(builtAppVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
package kvm
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
|
"html/template"
|
||||||
|
"runtime"
|
||||||
|
|
||||||
|
"github.com/prometheus/common/version"
|
||||||
|
)
|
||||||
|
|
||||||
|
var versionInfoTmpl = `
|
||||||
|
JetKVM Application, version {{.version}} (branch: {{.branch}}, revision: {{.revision}})
|
||||||
|
build date: {{.buildDate}}
|
||||||
|
go version: {{.goVersion}}
|
||||||
|
platform: {{.platform}}
|
||||||
|
|
||||||
|
{{if .nativeVersion}}
|
||||||
|
JetKVM Native, version {{.nativeVersion}}
|
||||||
|
{{end}}
|
||||||
|
`
|
||||||
|
|
||||||
|
func GetVersionData(isJson bool) ([]byte, error) {
|
||||||
|
version.Version = GetBuiltAppVersion()
|
||||||
|
|
||||||
|
m := map[string]string{
|
||||||
|
"version": version.Version,
|
||||||
|
"revision": version.GetRevision(),
|
||||||
|
"branch": version.Branch,
|
||||||
|
"buildDate": version.BuildDate,
|
||||||
|
"goVersion": version.GoVersion,
|
||||||
|
"platform": runtime.GOOS + "/" + runtime.GOARCH,
|
||||||
|
}
|
||||||
|
|
||||||
|
nativeVersion, err := GetNativeVersion()
|
||||||
|
if err == nil {
|
||||||
|
m["nativeVersion"] = nativeVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
if isJson {
|
||||||
|
jsonData, err := json.Marshal(m)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return jsonData, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
t := template.Must(template.New("version").Parse(versionInfoTmpl))
|
||||||
|
|
||||||
|
var buf bytes.Buffer
|
||||||
|
if err := t.ExecuteTemplate(&buf, "version", m); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf.Bytes(), nil
|
||||||
|
}
|
Loading…
Reference in New Issue