1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package lifecycle
- import (
- "errors"
- "fmt"
- "log/slog"
- "os"
- "path/filepath"
- "runtime"
- "strings"
- )
- var (
- AppName = "ollama app"
- CLIName = "ollama"
- AppDir = "/opt/Ollama"
- AppDataDir = "/opt/Ollama"
- // TODO - should there be a distinct log dir?
- UpdateStageDir = "/tmp"
- AppLogFile = "/tmp/ollama_app.log"
- ServerLogFile = "/tmp/ollama.log"
- UpgradeLogFile = "/tmp/ollama_update.log"
- Installer = "OllamaSetup.exe"
- LogRotationCount = 5
- )
- func init() {
- if runtime.GOOS == "windows" {
- AppName += ".exe"
- CLIName += ".exe"
- // Logs, configs, downloads go to LOCALAPPDATA
- localAppData := os.Getenv("LOCALAPPDATA")
- AppDataDir = filepath.Join(localAppData, "Ollama")
- UpdateStageDir = filepath.Join(AppDataDir, "updates")
- AppLogFile = filepath.Join(AppDataDir, "app.log")
- ServerLogFile = filepath.Join(AppDataDir, "server.log")
- UpgradeLogFile = filepath.Join(AppDataDir, "upgrade.log")
- // Executables are stored in APPDATA
- AppDir = filepath.Join(localAppData, "Programs", "Ollama")
- // Make sure we have PATH set correctly for any spawned children
- paths := strings.Split(os.Getenv("PATH"), ";")
- // Start with whatever we find in the PATH/LD_LIBRARY_PATH
- found := false
- for _, path := range paths {
- d, err := filepath.Abs(path)
- if err != nil {
- continue
- }
- if strings.EqualFold(AppDir, d) {
- found = true
- }
- }
- if !found {
- paths = append(paths, AppDir)
- pathVal := strings.Join(paths, ";")
- slog.Debug("setting PATH=" + pathVal)
- err := os.Setenv("PATH", pathVal)
- if err != nil {
- slog.Error(fmt.Sprintf("failed to update PATH: %s", err))
- }
- }
- // Make sure our logging dir exists
- _, err := os.Stat(AppDataDir)
- if errors.Is(err, os.ErrNotExist) {
- if err := os.MkdirAll(AppDataDir, 0o755); err != nil {
- slog.Error(fmt.Sprintf("create ollama dir %s: %v", AppDataDir, err))
- }
- }
- } else if runtime.GOOS == "darwin" {
- // TODO
- AppName += ".app"
- // } else if runtime.GOOS == "linux" {
- // TODO
- }
- }
|