Fix duplicate menus on update and exit on signals

Also fixes a few fit-and-finish items for better developer experience
This commit is contained in:
Daniel Hiltgen
2024-02-16 15:33:16 -08:00
parent 88622847c6
commit df6dc4fd96
6 changed files with 52 additions and 36 deletions

View File

@@ -6,6 +6,8 @@ import (
"log"
"log/slog"
"os"
"os/signal"
"syscall"
"github.com/jmorganca/ollama/app/store"
"github.com/jmorganca/ollama/app/tray"
@@ -23,12 +25,18 @@ func Run() {
}
callbacks := t.GetCallbacks()
signals := make(chan os.Signal, 1)
signal.Notify(signals, syscall.SIGINT, syscall.SIGTERM)
go func() {
slog.Debug("starting callback loop")
for {
select {
case <-callbacks.Quit:
slog.Debug("QUIT called")
slog.Debug("quit called")
t.Quit()
case <-signals:
slog.Debug("shutting down due to signal")
t.Quit()
case <-callbacks.Update:
err := DoUpgrade(cancel, done)

View File

@@ -31,11 +31,15 @@ func getCLIFullPath(command string) string {
return cmdPath
}
}
cmdPath = filepath.Join(".", command)
_, err = os.Stat(cmdPath)
pwd, err := os.Getwd()
if err == nil {
return cmdPath
cmdPath = filepath.Join(pwd, command)
_, err = os.Stat(cmdPath)
if err == nil {
return cmdPath
}
}
return command
}

View File

@@ -23,8 +23,9 @@ import (
)
var (
UpdateCheckURLBase = "https://ollama.com/api/update"
UpdateDownloaded = false
UpdateCheckURLBase = "https://ollama.com/api/update"
UpdateDownloaded = false
UpdateCheckInterval = 60 * 60 * time.Second
)
// TODO - maybe move up to the API package?
@@ -112,7 +113,6 @@ func IsNewReleaseAvailable(ctx context.Context) (bool, UpdateResponse) {
return true, updateResp
}
// Returns true if we downloaded a new update, false if we already had it
func DownloadNewRelease(ctx context.Context, updateResp UpdateResponse) error {
// Do a head first to check etag info
req, err := http.NewRequestWithContext(ctx, http.MethodHead, updateResp.UpdateURL, nil)
@@ -144,7 +144,7 @@ func DownloadNewRelease(ctx context.Context, updateResp UpdateResponse) error {
// Check to see if we already have it downloaded
_, err = os.Stat(stageFilename)
if err == nil {
slog.Debug("update already downloaded")
slog.Info("update already downloaded")
return nil
}
@@ -231,7 +231,7 @@ func StartBackgroundUpdaterChecker(ctx context.Context, cb func(string) error) {
slog.Debug("stopping background update checker")
return
default:
time.Sleep(60 * 60 * time.Second)
time.Sleep(UpdateCheckInterval)
}
}
}()