diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..7a7974b Binary files /dev/null and b/.DS_Store differ diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..f37c99f --- /dev/null +++ b/build.sh @@ -0,0 +1,3 @@ +#!/bin/bash +GOOS=linux GOARCH=amd64 go build + diff --git a/go-glitch b/go-glitch index 421132f..eb5be21 100755 Binary files a/go-glitch and b/go-glitch differ diff --git a/go-glitch.go b/go-glitch.go index 1d0a9ad..e9f1aca 100644 --- a/go-glitch.go +++ b/go-glitch.go @@ -1,53 +1,78 @@ package main import ( + "bufio" "fmt" "os" + "strings" "time" "github.com/getsentry/sentry-go" ) func main() { - // Check for the right number of command line arguments + // Check that exactly one argument is passed (file path) if len(os.Args) != 2 { - fmt.Println("Usage: ./go-glitch \"Your log message here\"") + fmt.Fprintf(os.Stderr, "Usage: %s \n", os.Args[0]) os.Exit(1) } - - logMessage := os.Args[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.Println("Error: SENTRY_DSN environment variable is not set.") + 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{ + err = sentry.Init(sentry.ClientOptions{ Dsn: dsn, }) if err != nil { - fmt.Printf("Error initializing Sentry: %s\n", err) + 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.Println("Failed to flush Sentry buffer within the expected time.") + 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.Println("Failed to send message to Sentry.") + fmt.Fprintf(os.Stderr, "Failed to send message to Sentry.\n") } }