@@ -30,19 +30,32 @@ func NewMacDaemonInstaller(baseFolder, user string) *MacDaemonInstaller {
3030 }
3131}
3232
33+ func (m * MacDaemonInstaller ) Check () error {
34+ cmd := exec .Command ("launchctl" , "print" , "system/" + m .serviceName )
35+ if err := cmd .Run (); err == nil {
36+ return nil
37+ }
38+ return fmt .Errorf ("service %s is not running" , m .serviceName )
39+ }
40+
3341func (m * MacDaemonInstaller ) CheckAndStopExistingService () error {
3442 color .Yellow .Println ("🔍 Checking if service is running..." )
35- cmd := exec .Command ("launchctl" , "list" , m .serviceName )
36- if err := cmd .Run (); err == nil {
37- color .Yellow .Println ("🛑 Stopping existing service..." )
38- if err := exec .Command ("launchctl" , "unload" , fmt .Sprintf ("/Library/LaunchDaemons/%s.plist" , m .serviceName )).Run (); err != nil {
39- return fmt .Errorf ("failed to stop existing service: %w" , err )
40- }
43+
44+ if err := m .Check (); err != nil {
45+ return err
46+ }
47+
48+ color .Yellow .Println ("🛑 Stopping existing service..." )
49+ if err := exec .Command ("launchctl" , "unload" , fmt .Sprintf ("/Library/LaunchDaemons/%s.plist" , m .serviceName )).Run (); err != nil {
50+ return fmt .Errorf ("failed to stop existing service: %w" , err )
4151 }
4252 return nil
4353}
4454
4555func (m * MacDaemonInstaller ) InstallService (username string ) error {
56+ if m .baseFolder == "" {
57+ return fmt .Errorf ("base folder is not set" )
58+ }
4659 daemonPath := filepath .Join (m .baseFolder , "daemon" )
4760 // Create daemon directory if not exists
4861 if err := os .MkdirAll (daemonPath , 0755 ); err != nil {
@@ -68,6 +81,9 @@ func (m *MacDaemonInstaller) InstallService(username string) error {
6881}
6982
7083func (m * MacDaemonInstaller ) RegisterService () error {
84+ if m .baseFolder == "" {
85+ return fmt .Errorf ("base folder is not set" )
86+ }
7187 plistPath := fmt .Sprintf ("/Library/LaunchDaemons/%s.plist" , m .serviceName )
7288 if _ , err := os .Stat (plistPath ); err != nil {
7389 sourceFile := filepath .Join (m .baseFolder , fmt .Sprintf ("daemon/%s.plist" , m .serviceName ))
@@ -87,6 +103,9 @@ func (m *MacDaemonInstaller) StartService() error {
87103}
88104
89105func (m * MacDaemonInstaller ) UnregisterService () error {
106+ if m .baseFolder == "" {
107+ return fmt .Errorf ("base folder is not set" )
108+ }
90109 color .Yellow .Println ("🛑 Stopping service if running..." )
91110 // Try to stop the service first
92111 _ = exec .Command ("launchctl" , "unload" , fmt .Sprintf ("/Library/LaunchDaemons/%s.plist" , m .serviceName )).Run ()
0 commit comments