diff --git a/internal/service/service.go b/internal/service/service.go index c6afc25..f36730e 100644 --- a/internal/service/service.go +++ b/internal/service/service.go @@ -2,10 +2,13 @@ package service import ( "context" + "fmt" + "os" "time" "github.com/LazyBachelor/LazyPM/internal/models" "github.com/LazyBachelor/LazyPM/internal/storage" + "github.com/charmbracelet/huh" "github.com/google/uuid" "github.com/steveyegge/beads" @@ -28,6 +31,11 @@ type Services struct { func NewServices(ctx context.Context, config Config) (*Services, func(), error) { var cleanupFuncs []func() + if !initialized(config.BeadsDBPath) { + fmt.Println("PM is not initialized") + os.Exit(0) + } + store, err := beads.NewSQLiteStorage(ctx, config.BeadsDBPath) if err != nil { return nil, nil, err @@ -63,3 +71,24 @@ func runCleanup(funcs []func()) { fn() } } + +func initialized(beadsPath string) bool { + _, err := os.Stat(beadsPath) + + if os.IsNotExist(err) { + var initialize bool + + huh.NewForm( + huh.NewGroup( + huh.NewConfirm().Title("PM is not initialized in this directory!"). + Description("Do you want to initialize it here?"). + Value(&initialize), + ), + ).WithTheme(huh.ThemeBase16()).WithAccessible(true).Run() + + if !initialize { + return false + } + } + return true +}