diff --git a/cmd/gitx/main.go b/cmd/gitx/main.go index e6ef02b..814e4ab 100644 --- a/cmd/gitx/main.go +++ b/cmd/gitx/main.go @@ -5,7 +5,7 @@ import ( "fmt" "log" "os" - + "os/exec" tea "github.com/charmbracelet/bubbletea" "github.com/gitxtui/gitx/internal/tui" zone "github.com/lrstanley/bubblezone" @@ -14,6 +14,11 @@ import ( var version = "dev" func main() { + if err := ensureGitRepo(); err != nil { + fmt.Fprintln(os.Stderr, err) // print to stderr + os.Exit(1) + } + if len(os.Args) > 1 && (os.Args[1] == "--version" || os.Args[1] == "-v") { fmt.Printf("gitx version: %s\n", version) return @@ -23,10 +28,19 @@ func main() { defer zone.Close() app := tui.NewApp() + if err := app.Run(); err != nil { if !errors.Is(err, tea.ErrProgramKilled) { - log.Fatalf("Error running application: %v", err) + log.Fatalf("error running application: %v", err) } } fmt.Println("Bye from gitx! :)") } + +func ensureGitRepo() error { + cmd := exec.Command("git", "rev-parse", "--is-inside-work-tree") + if err := cmd.Run(); err != nil { + return fmt.Errorf("error: not a git repository") + } + return nil +}