commit 458e9904b71cb73b8e16295ab8adebf59bcf2968
parent c8fb0e37f68a23eac591bd4f3a59fbb452c7a1f6
Author: Sean Enck <sean@ttypty.com>
Date: Fri, 31 Mar 2023 20:37:35 -0400
conv is not JSON
Diffstat:
3 files changed, 42 insertions(+), 27 deletions(-)
diff --git a/internal/app/conv.go b/internal/app/conv.go
@@ -22,19 +22,21 @@ func Conv(cmd CommandOptions) error {
if err != nil {
return err
}
- if err := serialize(w, t, ""); err != nil {
+ if err := serialize(w, t, false, ""); err != nil {
return err
}
}
return nil
}
-func serialize(w io.Writer, tx *backend.Transaction, filter string) error {
+func serialize(w io.Writer, tx *backend.Transaction, isJSON bool, filter string) error {
e, err := tx.QueryCallback(backend.QueryOptions{Mode: backend.ListMode, Values: backend.JSONValue})
if err != nil {
return err
}
- fmt.Fprint(w, "{")
+ if isJSON {
+ fmt.Fprint(w, "{")
+ }
hasFilter := len(filter) > 0
printed := false
for _, item := range e {
@@ -44,9 +46,13 @@ func serialize(w io.Writer, tx *backend.Transaction, filter string) error {
}
}
if printed {
- fmt.Fprint(w, ",")
+ if isJSON {
+ fmt.Fprint(w, ",")
+ }
+ }
+ if isJSON {
+ fmt.Fprint(w, "\n")
}
- fmt.Fprint(w, "\n")
b, err := json.MarshalIndent(map[string]json.RawMessage{item.Path: json.RawMessage([]byte(item.Value))}, "", " ")
if err != nil {
return err
@@ -54,12 +60,23 @@ func serialize(w io.Writer, tx *backend.Transaction, filter string) error {
trimmed := strings.TrimSpace(string(b))
trimmed = strings.TrimPrefix(trimmed, "{")
trimmed = strings.TrimSuffix(trimmed, "}")
- fmt.Fprintf(w, " %s", strings.TrimSpace(trimmed))
+ if isJSON {
+ fmt.Fprintf(w, " %s", strings.TrimSpace(trimmed))
+ } else {
+ for _, line := range strings.Split(trimmed, "\n") {
+ if strings.TrimSpace(line) == "" {
+ continue
+ }
+ fmt.Fprintf(w, "%s\n", strings.Replace(line, " ", "", 1))
+ }
+ }
printed = true
}
- if printed {
- fmt.Fprint(w, "\n")
+ if isJSON {
+ if printed {
+ fmt.Fprint(w, "\n")
+ }
+ fmt.Fprint(w, "}\n")
}
- fmt.Fprint(w, "}\n")
return nil
}
diff --git a/internal/app/json.go b/internal/app/json.go
@@ -15,5 +15,5 @@ func JSON(cmd CommandOptions) error {
if len(args) == 1 {
filter = args[0]
}
- return serialize(cmd.Writer(), cmd.Transaction(), filter)
+ return serialize(cmd.Writer(), cmd.Transaction(), true, filter)
}
diff --git a/tests/expected.log b/tests/expected.log
@@ -41,23 +41,21 @@ test/k
XXXXXX
XXXXXX
XXXXXX
-{
- "key/a/one": {
- "modtime": "XXXX-XX-XX",
- "data": "ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff"
- },
- "keys/k/one2": {
- "modtime": "XXXX-XX-XX",
- "data": "6d201beeefb589b08ef0672dac82353d0cbd9ad99e1642c83a1601f3d647bcca003257b5e8f31bdc1d73fbec84fb085c79d6e2677b7ff927e823a54e789140d9"
- },
- "keys2/k/three": {
- "modtime": "XXXX-XX-XX",
- "data": "132ab0244293c495a027cec12d0050598616daca888449920fc652719be0987830827d069ef78cc613e348de37c9b592d3406e2fb8d99a6961bf0c58da8a334f"
- },
- "test/k/totp": {
- "modtime": "XXXX-XX-XX",
- "data": "7ef183065ba70aaa417b87ea0a96b7e550a938a52440c640a07537f7794d8a89e50078eca6a7cbcfacabd97a2db06d11e82ddf7556ca909c4df9fc0d006013b1"
- }
+"key/a/one": {
+ "modtime": "XXXX-XX-XX",
+ "data": "ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff"
+}
+"keys/k/one2": {
+ "modtime": "XXXX-XX-XX",
+ "data": "6d201beeefb589b08ef0672dac82353d0cbd9ad99e1642c83a1601f3d647bcca003257b5e8f31bdc1d73fbec84fb085c79d6e2677b7ff927e823a54e789140d9"
+}
+"keys2/k/three": {
+ "modtime": "XXXX-XX-XX",
+ "data": "132ab0244293c495a027cec12d0050598616daca888449920fc652719be0987830827d069ef78cc613e348de37c9b592d3406e2fb8d99a6961bf0c58da8a334f"
+}
+"test/k/totp": {
+ "modtime": "XXXX-XX-XX",
+ "data": "7ef183065ba70aaa417b87ea0a96b7e550a938a52440c640a07537f7794d8a89e50078eca6a7cbcfacabd97a2db06d11e82ddf7556ca909c4df9fc0d006013b1"
}
delete entry? (y/N)
delete entry? (y/N)