Skip to content

justone/brisk

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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.