sops icon indicating copy to clipboard operation
sops copied to clipboard

Serialize using mapstructure conversion instead of JSON marshalling.

Open slewsys opened this issue 2 years ago • 1 comments

These changes remove the JSON encoding/decoding steps that are performed during the serialization of ini and dotenv files. This roundtrip loses type information during the transformation which causes values to be incorrectly converted to the JSON marshaller defaults (int becomes float64, bool becomes string, etc, etc). In place of this JSON encoding, the mapstructure library allows for a direct conversion between the Metadata struct and map[string]interface{} needed to leverage the stores.Flatten and stores.Unflatten functions.

In addition, this adds mapstructure tags to the metadata structures to allow backwards compatibility with the JSON encoding.

Resolves #879 & resolves #857

This is a re-submission of @acastle's #1009 - with mapstructure updated to v1.5.0 and unused imports removed - applied to getsops/sops/main HEAD (previously #1338).

slewsys avatar Dec 30 '23 15:12 slewsys

If following commits look okay, I'll squash and add sign-off per devstein request.

slewsys avatar Jan 04 '24 00:01 slewsys