lockbox

password manager
Log | Files | Refs | README | LICENSE

commit 9ff8e3c72b3a9081a76557cdc08300be2dd7f30c
parent 3a20266324068de66972ca077bc95b35d92e6443
Author: Sean Enck <sean@ttypty.com>
Date:   Thu, 30 Mar 2023 20:53:31 -0400

improved json output

Diffstat:
Minternal/app/conv.go | 17++++++++++++-----
Mtests/expected.log | 19++++++++-----------
2 files changed, 20 insertions(+), 16 deletions(-)

diff --git a/internal/app/conv.go b/internal/app/conv.go @@ -1,11 +1,11 @@ package app import ( - "bytes" "encoding/json" "errors" "fmt" "io" + "strings" "github.com/enckse/lockbox/internal/backend" ) @@ -39,12 +39,19 @@ func serialize(w io.Writer, tx *backend.Transaction) error { if idx > 0 { fmt.Fprintf(w, ",\n") } - var buf bytes.Buffer - if err := json.Indent(&buf, []byte(item.Value), " ", " "); err != nil { + obj := backend.JSON{} + if err := json.Unmarshal([]byte(item.Value), &obj); err != nil { return err } - fmt.Fprintf(w, " \"%s\": %s\n", item.Path, buf.String()) + b, err := json.MarshalIndent(map[string]backend.JSON{item.Path: obj}, "", " ") + if err != nil { + return err + } + trimmed := strings.TrimSpace(string(b)) + trimmed = strings.TrimPrefix(trimmed, "{") + trimmed = strings.TrimSuffix(trimmed, "}") + fmt.Fprintf(w, " %s", strings.TrimSpace(trimmed)) } - fmt.Fprintf(w, "}") + fmt.Fprintf(w, "\n}\n") return nil } diff --git a/tests/expected.log b/tests/expected.log @@ -16,18 +16,17 @@ keys2/k/three "key/a/one": { "modtime": "XXXX-XX-XX", "hash": "ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff" - } -, + }, "keys/k/one2": { "modtime": "XXXX-XX-XX", "hash": "6d201beeefb589b08ef0672dac82353d0cbd9ad99e1642c83a1601f3d647bcca003257b5e8f31bdc1d73fbec84fb085c79d6e2677b7ff927e823a54e789140d9" - } -, + }, "keys2/k/three": { "modtime": "XXXX-XX-XX", "hash": "132ab0244293c495a027cec12d0050598616daca888449920fc652719be0987830827d069ef78cc613e348de37c9b592d3406e2fb8d99a6961bf0c58da8a334f" } } + test2 test3 test4 @@ -44,23 +43,21 @@ XXXXXX "key/a/one": { "modtime": "XXXX-XX-XX", "hash": "ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff" - } -, + }, "keys/k/one2": { "modtime": "XXXX-XX-XX", "hash": "6d201beeefb589b08ef0672dac82353d0cbd9ad99e1642c83a1601f3d647bcca003257b5e8f31bdc1d73fbec84fb085c79d6e2677b7ff927e823a54e789140d9" - } -, + }, "keys2/k/three": { "modtime": "XXXX-XX-XX", "hash": "132ab0244293c495a027cec12d0050598616daca888449920fc652719be0987830827d069ef78cc613e348de37c9b592d3406e2fb8d99a6961bf0c58da8a334f" - } -, + }, "test/k/totp": { "modtime": "XXXX-XX-XX", "hash": "7ef183065ba70aaa417b87ea0a96b7e550a938a52440c640a07537f7794d8a89e50078eca6a7cbcfacabd97a2db06d11e82ddf7556ca909c4df9fc0d006013b1" } -}delete entry? (y/N) +} +delete entry? (y/N) delete entry? (y/N) delete entry? (y/N) unable to remove: no entities given