jxcape

Crates.iojxcape
lib.rsjxcape
version0.2.0
sourcesrc
created_at2023-11-23 05:31:21.340448
updated_at2023-11-24 02:03:13.959787
descriptionA command line tool for creating JSON values
homepage
repositoryhttps://github.com/rhysparry/jxcape
max_upload_size
id1045829
size31,924
Rhys Parry (rhysparry)

documentation

README

About jxcape

jxcape is a tool for creating JSON values from the command line.

Strings

To convert a value into a JSON string, use the string subcommand:

$ jxcape string "Hello, world!"
"Hello, world!"

It can also take input from stdin:

$ echo "Hello, world!" | jxcape string --from-stdin 
"Hello, world!"

Arrays

To convert a value into a JSON array, use the array subcommand:

$ jxcape array 1 2 3
["1","2","3"]

By default, jxscape will treat all input as strings. To treat input as native JSON, use the --auto flag:

$ jxcape array --auto 1 2 3 foo
[1,2,3,"foo"]

Any value that cannot be parsed as JSON will be treated as a string.

It can also take input from stdin:

$ seq 3 | jxcape array --from-stdin
["1","2","3"]

If for some reason you need an empty array, you can use the --empty flag:

$ jxcape array --empty
[]

This is included mostly for completeness.

Objects

To convert a value into a JSON object, use the object subcommand:

$ jxcape object foo=1 bar=2
{"foo":"1","bar":"2"}

By default, jxscape will treat all input as strings. To treat input as native JSON, use the --auto flag:

$ jxcape object --auto foo=1 bar=2 baz=3
{"foo":1,"bar":2,"baz":3}

Any value that cannot be parsed as JSON will be treated as a string.

It can also take input from stdin:

$ env | jxcape object --from-stdin
{"TERM":"xterm-256color","SHELL":"/bin/bash",...} # truncated for brevity

You can specify a custom separator using the --separator flag:

$ jxcape object --separator=: foo:1 bar:2 baz:3
{"foo":"1","bar":"2","baz":"3"}

Separators can be multiple characters:

$ jxcape object --separator=:: foo::1 bar::2 baz::3
{"foo":"1","bar":"2","baz":"3"}

If a key is specified multiple times, the last value to appear will be used:

$ jxcape object foo=1 foo=2 foo=3
{"foo":"3"}

If for some reason you need an empty object, you can use the --empty flag:

$ jxcape object --empty
{}

This is included mostly for completeness.

Pretty Printing

To pretty print a JSON value, use the --pretty flag before the subcommand:

$ jxcape --pretty array 1 2 3
[
  "1",
  "2",
  "3"
]

Installation

From Source

$ git clone https://github.com/rhysparry/jxcape.git
$ cd jxcape
$ cargo install --path .
Commit count: 8

cargo fmt