Skip to content

justone/brisk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.