info.go 736 B

1234567891011121314151617181920212223242526272829303132333435363738
  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. }
  14. func GetRuntimeInfo() (r RuntimeInfo, err error) {
  15. ex, err := os.Executable()
  16. if err != nil {
  17. err = errors.Wrap(err, "service.GetRuntimeInfo os.Executable() err")
  18. return
  19. }
  20. realPath, err := filepath.EvalSymlinks(ex)
  21. if err != nil {
  22. err = errors.Wrap(err, "service.GetRuntimeInfo filepath.EvalSymlinks() err")
  23. return
  24. }
  25. r = RuntimeInfo{
  26. OS: runtime.GOOS,
  27. Arch: runtime.GOARCH,
  28. ExPath: realPath,
  29. CurVersion: GetVersionInfo(),
  30. }
  31. return
  32. }