1.2.2 • Published 8 years ago
swarm-cli v1.2.2
Swarm command-line client
A simple filesystem-backed Swarm client. Works more like a version control system: saves data to plain files, pulls/pushes updates from/to the server. Works offline, reconnects automatically.
Usage
swarm [options] dbdir/
Options
-- dbdir
: replica's home path (default: .)-C --connect url
connect to a server, init a replica- ws://1.2.3.4:5/dbid WebSocket
- wss://1.2.3.4:5/dbid WebSocket (secure)
- tcp://1.2.3.4:5/dbid TCP
-u --update type/id
update (default: all the objects)-c --create type
-g --get type/id
-r --recur depth
recursive retrieval (default: depth 1)
-p --put type/id
commit a manually edited JSON object-o --op type/id
feed an op (args or stdin must contain op name, value)-n --name
op name-v --value
op value
-e --edit type/id
edit a JSON state, put when done (uses $EDITOR)-l --log
list the log of pending ops (those not acked by the server)-m --mute
ignore connect/listen options in the db-R --repl
run REPL-E --exec
execute script(s), e.g. --exec init.js -e run.js-T --trace
trace incoming/outgoing ops
Examples
# install swarm client (see swarm-server on how to run a server)
$ npm i -g swarm-cli
# connect to the server, init the client
$ swarm -C tcp://gritzko:password@localhost:31415/testdb
$ cd testdb/
# create an object
$ swarm --create LWWObject
/LWWObject#1GDBdW+Rgritzko01
# see the outer JSON state of the object
$ cat LWWObject/1GDBdW+Rgritzko01.json
{"_id":"1GDBdW+Rgritzko01","_version":"1GDBdW+Rgritzko01"}
# see the inner CRDT state (data+metadata)
$ cat LWWObject/.1GDBdW+Rgritzko01.~
# make a change to the object, see some client-server chit-chat
$ swarm --trace -o LWWObject/1GDBdW+Rgritzko01 -n FieldName -v FieldValue
...
< /LWWObject#1GDBdW+Rgritzko01!1GDBdk+Rgritzko01.FieldName FieldValue
> /LWWObject#1GDBdW+Rgritzko01!1GDBdk+Rgritzko01.FieldName FieldValue
...
# launch REPL, play with the JavaScript API
$ swarm --repl
≶ o = swarm.get('1GDBdW+Rgritzko01', obj => console.log(obj.get('FieldName')));
FieldValue
≶ o.set('FieldName', 'another value');
...