package main import ( "bufio" "fmt" "os" "strings" "time" "github.com/getsentry/sentry-go" ) func main() { // Check that exactly one argument is passed (file path) if len(os.Args) != 2 { fmt.Fprintf(os.Stderr, "Usage: %s \n", os.Args[0]) os.Exit(1) } filePath := os.Args[1] // Open the file file, err := os.Open(filePath) if err != nil { fmt.Fprintf(os.Stderr, "Error opening file: %s\n", err) os.Exit(1) } defer file.Close() // Read file contents into a string scanner := bufio.NewScanner(file) var content strings.Builder for scanner.Scan() { content.WriteString(scanner.Text()) content.WriteString("\n") // Preserve line breaks } if err := scanner.Err(); err != nil { fmt.Fprintf(os.Stderr, "Error reading file: %s\n", err) os.Exit(1) } logMessage := content.String() dsn := os.Getenv("SENTRY_DSN") if dsn == "" { fmt.Fprintf(os.Stderr, "Error: SENTRY_DSN environment variable is not set.\n") os.Exit(1) } // Initialize Sentry with the DSN err = sentry.Init(sentry.ClientOptions{ Dsn: dsn, }) if err != nil { fmt.Fprintf(os.Stderr, "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.Fprintf(os.Stderr, "Failed to flush Sentry buffer within the expected time.\n") } 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.Fprintf(os.Stderr, "Failed to send message to Sentry.\n") } }