package main

import (
    "fmt"
    "os"
    "time"

    "github.com/getsentry/sentry-go"
)

func main() {
    // Check for the right number of command line arguments
    if len(os.Args) != 2 {
        fmt.Println("Usage: ./go-glitch \"Your log message here\"")
        os.Exit(1)
    }
    
    logMessage := os.Args[1]
    
    dsn := os.Getenv("SENTRY_DSN")
    if dsn == "" {
        fmt.Println("Error: SENTRY_DSN environment variable is not set.")
        os.Exit(1)
    }
    
    // Initialize Sentry with the DSN
    err := sentry.Init(sentry.ClientOptions{
        Dsn: dsn,
    })
    if err != nil {
        fmt.Printf("Error initializing Sentry: %s\n", err)
        os.Exit(1)
    }
    
    // Defer a function to flush Sentry's buffer
    defer func() {
        success := sentry.Flush(5 * time.Second)
        if !success {
            fmt.Println("Failed to flush Sentry buffer within the expected time.")
        } else {
            fmt.Println("Sentry buffer flushed successfully.")
        }
    }()
    
    // Capture the message and output the event ID
    eventID := sentry.CaptureMessage(logMessage)
    if eventID != nil {
        fmt.Printf("Sent message to Sentry with event ID: %s\n", *eventID)
    } else {
        fmt.Println("Failed to send message to Sentry.")
    }
}

