From e6b5fdc30e0398dfe0c08355babf397fb8bfc470 Mon Sep 17 00:00:00 2001 From: Ben Johnson Date: Fri, 11 Apr 2014 13:23:11 -0600 Subject: Add import/export to CLI. This commit adds two new commands: bolt import --input INPUT PATH bolt export PATH This exports the database in a simple, nested, key/value JSON document. Each node in the document has a "key", a "value", and an optional "type". The key and value fields are both base64 encoded. --- cmd/bolt/main.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'cmd/bolt/main.go') diff --git a/cmd/bolt/main.go b/cmd/bolt/main.go index ff3c1bf..1930e7d 100644 --- a/cmd/bolt/main.go +++ b/cmd/bolt/main.go @@ -2,6 +2,7 @@ package main import ( "bytes" + "encoding/json" "fmt" "log" "os" @@ -55,6 +56,24 @@ func NewApp() *cli.App { Buckets(path) }, }, + { + Name: "import", + Usage: "Imports from a JSON dump into a database", + Flags: []cli.Flag{ + &cli.StringFlag{Name: "input"}, + }, + Action: func(c *cli.Context) { + Import(c.Args().Get(0), c.String("input")) + }, + }, + { + Name: "export", + Usage: "Exports a database to JSON", + Action: func(c *cli.Context) { + path := c.Args().Get(0) + Export(path) + }, + }, { Name: "pages", Usage: "Dumps page information for a database", @@ -144,3 +163,10 @@ func SetTestMode(value bool) { logger = log.New(os.Stderr, "", 0) } } + +// rawMessage represents a JSON element in the import/export document. +type rawMessage struct { + Type string `json:"type,omitempty"` + Key []byte `json:"key"` + Value json.RawMessage `json:"value"` +} -- cgit v1.2.3