lockbox

password manager
Log | Files | Refs | README | LICENSE

commit 458e9904b71cb73b8e16295ab8adebf59bcf2968
parent c8fb0e37f68a23eac591bd4f3a59fbb452c7a1f6
Author: Sean Enck <sean@ttypty.com>
Date:   Fri, 31 Mar 2023 20:37:35 -0400

conv is not JSON

Diffstat:
Minternal/app/conv.go | 35++++++++++++++++++++++++++---------
Minternal/app/json.go | 2+-
Mtests/expected.log | 32+++++++++++++++-----------------
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)