From 4377cfdbdde45eca250e83ce1cb41f1a3479e61a Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Sat, 11 Apr 2015 12:07:33 +0200 Subject: [PATCH] Fixed getting homeDir on OSX for cross compilation --- service_darwin.go | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/service_darwin.go b/service_darwin.go index 9a338a8..fa87023 100644 --- a/service_darwin.go +++ b/service_darwin.go @@ -13,6 +13,7 @@ import ( "syscall" "text/template" "time" + "errors" ) const maxPathSize = 32 * 1024 @@ -74,13 +75,27 @@ func (s *darwinLaunchdService) String() string { return s.Name } +func (s *darwinLaunchdService) getHomeDir() (string, error) { + u, err := user.Current() + if err == nil { + return u.HomeDir, nil + } + + // alternate methods + homeDir := os.Getenv("HOME") // *nix + if homeDir == "" { + return "", errors.New("User home directory not found.") + } + return homeDir, nil +} + func (s *darwinLaunchdService) getServiceFilePath() (string, error) { if s.userService { - u, err := user.Current() + homeDir, err := s.getHomeDir() if err != nil { return "", err } - return u.HomeDir + "/Library/LaunchAgents/" + s.Name + ".plist", nil + return homeDir + "/Library/LaunchAgents/" + s.Name + ".plist", nil } return "/Library/LaunchDaemons/" + s.Name + ".plist", nil }