nak encode that takes json from stdin.

This commit is contained in:
fiatjaf
2025-04-25 13:30:32 -03:00
parent 148f6e8bcb
commit e91a454fc0
2 changed files with 80 additions and 16 deletions

View File

@@ -49,6 +49,7 @@ func isPiped() bool {
func getJsonsOrBlank() iter.Seq[string] {
var curr strings.Builder
var finalJsonErr error
return func(yield func(string) bool) {
hasStdin := writeStdinLinesOrNothing(func(stdinLine string) bool {
// we're look for an event, but it may be in multiple lines, so if json parsing fails
@@ -58,8 +59,10 @@ func getJsonsOrBlank() iter.Seq[string] {
var dummy any
if err := json.Unmarshal([]byte(stdinEvent), &dummy); err != nil {
finalJsonErr = err
return true
}
finalJsonErr = nil
if !yield(stdinEvent) {
return false
@@ -72,6 +75,10 @@ func getJsonsOrBlank() iter.Seq[string] {
if !hasStdin {
yield("{}")
}
if finalJsonErr != nil {
log(color.YellowString("stdin json parse error: %s", finalJsonErr))
}
}
}
@@ -388,6 +395,19 @@ func clampError(err error, prefixAlreadyPrinted int) string {
return msg
}
func appendUnique[A comparable](list []A, newEls ...A) []A {
ex:
for _, newEl := range newEls {
for _, el := range list {
if el == newEl {
continue ex
}
}
list = append(list, newEl)
}
return list
}
var colors = struct {
reset func(...any) (int, error)
italic func(...any) string