Skip to content

caldwell/sad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sad

Scalar, Array, Dictionary

Convert between JSON, YAML, TOML formats.

Usage

Usage:
  sad --help
  sad   [-h] [--check] [--ugly] [--in=<format>] [--out=<format>] [<in-file>] [<out-file>]
  json2 [-h] [--check] [--ugly] [--out=<format>] [<in-file>] [<out-file>]
  yaml2 [-h] [--check] [--ugly] [--out=<format>] [<in-file>] [<out-file>]
  toml2 [-h] [--check] [--ugly] [--out=<format>] [<in-file>] [<out-file>]

Options:

-h --help

Show this message.

-i --in=<format>

Select input format. One of: json yaml toml. If not specified it will try to guess the input format from the <in-file> extension.

-o --out=<format>

Select output format. One of: json yaml toml ruby php go python puppet. If not specified it try to guess from the <out-file> extension. If there is no <out-file> then it will use the input format.

-u --ugly

Don't pretty-print the output (JSON and TOML only)

--check

Don't output. Parse the input and report errors.

Examples

Convert myfile.json (assumed to be in JSON format because of the extension) into YAML, printing it to stdout:

sad myfile.json --out yaml

The same as above, but use stdin instead of reading the file directly:

sad --in json --out yaml < myfile.json

Convert myfile.json from JSON to YAML, store it in myfile.yaml:

sad myfile.json myfile.yaml

Pretty print JSON in myfile.json (it will assume the input format if no <out-file> and no --out is specified):

sad myfile.json

Ugly (compact) print JSON in myfile.json:

sad --ugly myfile.json

Pretty print JSON from myfile and store it in myfile.pretty (--out is required here because it can't guess the output format from the myfile.pretty name):

sad --out json myfile.json myfile.pretty

Same as above (don't need --out in this case since it's printing to stdout which makes it assume you wanted to pretty print):

sad myfile.json > myfile.pretty

Pretty print myfile.json in place:

sad myfile.json myfile.json

This will not work (the shell will clobber the file before sad can open it):

# Won't work!
#   sad myfile.json > myfile.json

If you symlink the executable to json2, yaml2, or toml2 then running those will hardcode the input format accordingly:

ln -s ./sad ./json2
./json2 < myfile.json

License

Copyright © 2023 David Caldwell david@porkrind.org

Licensed under the MIT License (see LICENSE.md for details)

About

Scalar, Array, Dictionary: Convert between JSON, YAML, TOML formats

Resources

License

Stars

Watchers

Forks

Languages