info.go 869 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package version
  2. import (
  3. "os"
  4. "path/filepath"
  5. "runtime"
  6. "github.com/0xJacky/Nginx-UI/internal/helper"
  7. "github.com/pkg/errors"
  8. )
  9. type RuntimeInfo struct {
  10. OS string `json:"os"`
  11. Arch string `json:"arch"`
  12. ExPath string `json:"ex_path"`
  13. CurVersion *Info `json:"cur_version"`
  14. InDocker bool `json:"in_docker"`
  15. }
  16. func GetRuntimeInfo() (r RuntimeInfo, err error) {
  17. ex, err := os.Executable()
  18. if err != nil {
  19. err = errors.Wrap(err, "service.GetRuntimeInfo os.Executable() err")
  20. return
  21. }
  22. realPath, err := filepath.EvalSymlinks(ex)
  23. if err != nil {
  24. err = errors.Wrap(err, "service.GetRuntimeInfo filepath.EvalSymlinks() err")
  25. return
  26. }
  27. r = RuntimeInfo{
  28. OS: runtime.GOOS,
  29. Arch: runtime.GOARCH,
  30. ExPath: realPath,
  31. CurVersion: GetVersionInfo(),
  32. InDocker: helper.InNginxUIOfficialDocker(),
  33. }
  34. return
  35. }