/brisk

Freeze and thaw with Nippy at the command line

Primary LanguageClojureEclipse Public License 2.0EPL-2.0

brisk

Freeze and thaw with Nippy at the command line.

Install

Download the latest from the releases page.

Usage

Freeze data:

brisk --freeze -i data.edn -o data.nippy

Thaw data:

brisk --thaw -i data.nippy -o data.edn

If input or output is not specified, stdin or stdout will be used:

cat data.edn | brisk -f | brisk -t > data2.edn

Encryption

Brisk supports reading and writing encrypted Nippy data. See these docs for details about the difference between cached and salted passwords.

Freeze and thaw data (encrypted):

brisk --freeze --salted-password supersecret -i data.edn -o data.nippy
brisk --thaw --salted-password supersecret -i data.nippy -o data.edn

See brisk --help for more options, including passing the password with environment variables.

Babashka pod support

There are four functions exposed via the pod interface:

  • (freeze-to-file filename data) - freeze data to file, returns the number of bytes written
  • (thaw-from-file filename) - returns data thawed from the file
  • (freeze-to-string data) - returns frozen data as an encoded string
  • (thaw-from-string encoded) - returns data thawed from the encoded string

Any of the above can take an additional argument with options. This can be used to encrypt the frozen data.

Example:

#!/usr/bin/env bb

(require '[babashka.pods :as pods])
(pods/load-pod "brisk")
(require '[pod.brisk :as brisk])

(brisk/freeze-to-file "pod.nippy" {:han :solo})
(prn (brisk/thaw-from-file "pod.nippy"))

(brisk/freeze-to-file "pod.encrypted.nippy" {:han :solo} {:password [:cached "my-password"]})
(prn (brisk/thaw-from-file "pod.encrypted.nippy" {:password [:cached "my-password"]}))

Development

Not quite ready yet. This depends on a soon-to-be-released library.

Things that don't work

  • Embedded objects - Nippy can handle them, but Graal VM does not support them.

License

Copyright © 2020-2022 Nate Jones

Distributed under the EPL License. See LICENSE.