add --silent global option to remove the stderr logs.

This commit is contained in:
fiatjaf 2023-11-13 15:03:27 -03:00
parent 11fe6b5809
commit 8fbfdc65c8
No known key found for this signature in database
GPG Key ID: BAD43C4BE5C1A3A1
4 changed files with 27 additions and 10 deletions

View File

@ -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)
}
}
}

View File

@ -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) {

13
main.go
View File

@ -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() {

2
req.go
View File

@ -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))