diff --git a/event.go b/event.go index c538ecb..5101479 100644 --- a/event.go +++ b/event.go @@ -102,7 +102,7 @@ example: if relayUrls := c.Args().Slice(); len(relayUrls) > 0 { _, relays = connectToAllRelays(c.Context, relayUrls) if len(relays) == 0 { - fmt.Fprintf(os.Stderr, "failed to connect to any of the given relays.\n") + log("failed to connect to any of the given relays.\n") os.Exit(3) } } @@ -218,16 +218,16 @@ example: fmt.Println(evt.String()) os.Stdout.Sync() for _, relay := range relays { - fmt.Fprintf(os.Stderr, "publishing to %s... ", relay.URL) + log("publishing to %s... ", relay.URL) if relay, err := nostr.RelayConnect(c.Context, relay.URL); err != nil { - fmt.Fprintf(os.Stderr, "failed to connect: %s\n", err) + log("failed to connect: %s\n", err) } else { ctx, cancel := context.WithTimeout(c.Context, 10*time.Second) defer cancel() if status, err := relay.Publish(ctx, evt); err != nil { - fmt.Fprintf(os.Stderr, "failed: %s\n", err) + log("failed: %s\n", err) } else { - fmt.Fprintf(os.Stderr, "%s.\n", status) + log("%s.\n", status) } } } diff --git a/helpers.go b/helpers.go index 0be6c38..94fce32 100644 --- a/helpers.go +++ b/helpers.go @@ -17,6 +17,10 @@ const ( LINE_PROCESSING_ERROR = iota ) +var log = func(msg string, args ...any) { + fmt.Fprintf(os.Stderr, msg, args...) +} + func isPiped() bool { stat, _ := os.Stdin.Stat() return stat.Mode()&os.ModeCharDevice == 0 @@ -104,12 +108,12 @@ func connectToAllRelays(ctx context.Context, relayUrls []string) (*nostr.SimpleP relays := make([]*nostr.Relay, 0, len(relayUrls)) pool := nostr.NewSimplePool(ctx) for _, url := range relayUrls { - fmt.Fprintf(os.Stderr, "connecting to %s... ", url) + log("connecting to %s... ", url) if relay, err := pool.EnsureRelay(url); err == nil { relays = append(relays, relay) - fmt.Fprintf(os.Stderr, "ok.\n") + log("ok.\n") } else { - fmt.Fprintf(os.Stderr, err.Error()+"\n") + log(err.Error() + "\n") } } return pool, relays @@ -117,7 +121,7 @@ func connectToAllRelays(ctx context.Context, relayUrls []string) (*nostr.SimpleP func lineProcessingError(c *cli.Context, msg string, args ...any) { c.Context = context.WithValue(c.Context, LINE_PROCESSING_ERROR, true) - fmt.Fprintf(os.Stderr, msg+"\n", args...) + log(msg+"\n", args...) } func exitIfLineProcessingError(c *cli.Context) { diff --git a/main.go b/main.go index b07350b..56c8192 100644 --- a/main.go +++ b/main.go @@ -19,6 +19,19 @@ var app = &cli.App{ encode, verify, }, + Flags: []cli.Flag{ + &cli.BoolFlag{ + Name: "silent", + Usage: "do not print logs and info messages to stderr", + Aliases: []string{"s"}, + Action: func(ctx *cli.Context, b bool) error { + if b { + log = func(msg string, args ...any) {} + } + return nil + }, + }, + }, } func main() { diff --git a/req.go b/req.go index cbc11e9..b75cfb9 100644 --- a/req.go +++ b/req.go @@ -102,7 +102,7 @@ example: var relays []*nostr.Relay pool, relays = connectToAllRelays(c.Context, relayUrls) if len(relays) == 0 { - fmt.Fprintf(os.Stderr, "failed to connect to any of the given relays.\n") + log("failed to connect to any of the given relays.\n") os.Exit(3) } relayUrls = make([]string, len(relays))