@@ -29,33 +29,32 @@ func commandDaemonInstall(c *cli.Context) error {
2929 baseFolder := filepath .Join (currentUser .HomeDir , ".shelltime" )
3030 username := currentUser .Username
3131
32- installer , err := model .NewDaemonInstaller (baseFolder , username )
33- if err != nil {
34- return err
35- }
36-
37- installer .CheckAndStopExistingService ()
38-
39- // check latest file exist or not
40- if _ , err := os .Stat (filepath .Join (baseFolder , "bin/shelltime-daemon.bak" )); err == nil {
32+ // Handle .bak upgrade for curl-installer users
33+ bakPath := filepath .Join (baseFolder , "bin/shelltime-daemon.bak" )
34+ if _ , err := os .Stat (bakPath ); err == nil {
4135 color .Yellow .Println ("🔄 Found latest daemon file, restoring..." )
42- // try to remove old file
4336 _ = os .Remove (filepath .Join (baseFolder , "bin/shelltime-daemon" ))
44- // rename .bak to original
45- if err := os .Rename (
46- filepath .Join (baseFolder , "bin/shelltime-daemon.bak" ),
47- filepath .Join (baseFolder , "bin/shelltime-daemon" ),
48- ); err != nil {
37+ if err := os .Rename (bakPath , filepath .Join (baseFolder , "bin/shelltime-daemon" )); err != nil {
4938 return fmt .Errorf ("failed to restore latest daemon: %w" , err )
5039 }
5140 }
5241
53- // check shelltime-daemon
54- if _ , err := os .Stat (filepath .Join (baseFolder , "bin/shelltime-daemon" )); err != nil {
55- color .Yellow .Println ("⚠️ shelltime-daemon not found, please reinstall the CLI first:" )
56- color .Yellow .Println ("curl -sSL https://raw.githubusercontent.com/malamtime/installation/master/install.bash | bash" )
42+ // Resolve daemon binary (curl-installer, Homebrew, or PATH)
43+ daemonBinPath , err := model .ResolveDaemonBinaryPath ()
44+ if err != nil {
45+ color .Yellow .Println ("⚠️ shelltime-daemon not found." )
46+ color .Yellow .Println ("Install via Homebrew: brew install shelltime/tap/shelltime" )
47+ color .Yellow .Println ("Or via curl installer: curl -sSL https://shelltime.xyz/i | bash" )
5748 return nil
5849 }
50+ color .Green .Printf ("✅ Found daemon binary at: %s\n " , daemonBinPath )
51+
52+ installer , err := model .NewDaemonInstaller (baseFolder , username , daemonBinPath )
53+ if err != nil {
54+ return err
55+ }
56+
57+ installer .CheckAndStopExistingService ()
5958
6059 // User-level installation - no system-wide symlink needed
6160 color .Yellow .Println ("🔍 Setting up user-level daemon installation..." )
0 commit comments