info.go 831 B

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