Crates.io | ion-cli |
lib.rs | ion-cli |
version | 0.9.1 |
source | src |
created_at | 2021-01-22 00:30:05.897844 |
updated_at | 2024-11-06 22:41:59.337796 |
description | Command line tool for working with the Ion data format. |
homepage | |
repository | https://github.com/amzn/ion-cli |
max_upload_size | |
id | 345108 |
size | 585,905 |
ion-cli
This repository is home to the ion
command line tool, which provides subcommands
for working with the Ion data format.
These examples use the .ion
file extension for text Ion and the .10n
file
extension for binary Ion. This is simply a convention; the tool does not
evaluate the file extension.
Unless otherwise noted, these commands can accept any Ion format as input.
The ion cat
command reads the contents of the specified files (or STDIN
) sequentially
and writes their content to STDOUT
in the requested Ion format.
ion cat my_file.ion
You can use the --format
/-f
flag to specify the desired format. The supported formats are:
pretty
- Generously spaced, human-friendly text Ion. This is the default.text
- Minimally spaced text Ion.lines
- Text Ion that places each value on its own line.binary
- Binary IonConvert Ion text (or JSON) to Ion binary:
ion cat --format binary my_text_file.ion -o my_binary_file.ion
Convert Ion binary to generously-spaced, human-friendly text:
ion cat --format pretty my_binary_file.ion -o my_text_file.ion
Convert Ion binary to minimally-spaced, compact text:
ion cat --format text my_binary_file.ion -o my_text_file.ion
to
and from
The to
and from
commands can convert Ion to and from other formats.
Currently, JSON is supported.
Convert Ion to JSON:
ion to -X json my_file.10n
Convert JSON to Ion:
ion from -X json my_file.json
Code generation is supported with generate
subcommand on the CLI.
For more information on how to use code generator,
see Ion code generator user guide.
inspect
The inspect
command can display the hex bytes of a binary Ion file alongside
the equivalent text Ion for easier analysis.
# Write some text Ion to a file
echo '{foo: null, bar: true, baz: [1, 2, 3]}' > my_file.ion
# Convert the text Ion to binary Ion
ion cat --format binary my_file.ion > my_file.10n
# Show the binary encoding alongside its equivalent text
ion inspect my_file.10n
The --skip-bytes
flag
To skip to a particular offset in the stream, you can use the --skip-bytes
flag.
ion inspect --skip-bytes 30 my_file.10n
Notice that the text column adds comments indicating where data has been skipped. Also, if the requested index is nested inside one or more containers, the beginnings of those containers (along with their lengths and offsets) will still be included in the output.
The --limit-bytes
flag
You can limit the amount of data that inspect
displays by using the --limit-bytes
flag:
ion inspect --skip-bytes 30 --limit-bytes 2 my_file.10n
All the subcommand to load or validate schema are under the schema
subcommand.
To load a schema:
ion schema -X load --directory <DIRECTORY> --schema <SCHEMA_FILE>
To validate an ion value against a schema type:
ion schema -X validate --directory <DIRECTORY> --schema <SCHEMA_FILE> --input <INPUT_FILE> --type <TYPE>
For more information on how to use the schema subcommands using CLI, run the following command:
ion schema help
brew
The easiest way to install the ion-cli
is via Homebrew.
Once the brew
command is available, run:
brew tap amazon-ion/ion-cli
brew install ion-cli
To install the (potentially unstable) latest changes from the tip of main
rather than the latest release, use:
brew install ion-cli --HEAD
cargo
The ion-cli
can also be installed by using Rust's package manager, cargo
.
If you don't already have cargo
, you can install it by visiting
rustup.rs.
To install ion-cli
, run the following command:
cargo install ion-cli
Clone the repository:
git clone https://github.com/amzn/ion-cli.git
Step into the newly created directory:
cd ion-cli
Install Rust/Cargo by visiting rustup.rs.
Build the ion
tool:
cargo install --path .
This will put a copy of the ion
executable in ~/.cargo/bin
.
Confirm that ~/.cargo/bin
is on your $PATH
. rustup
will probably take care of this for you.
Confirm that the executable is available by running:
ion help
git clone https://github.com/amzn/ion-cli.git
cd ion-cli
# build the image
docker build -t <IMAGE_NAME>:<TAG> .
# run the CLI binary inside the Docker image
docker run -it --rm [optional flags...] <IMAGE_NAME>:<TAG> ion <SUBCOMMAND>
# examples:
# build docker image with current release version
docker build -t ion-cli:0.1.1 .
# print the help message
docker run -it --rm ion-cli:0.1.1 ion -V
# mount current directory to /data volume and cat an ion file
docker run -it --rm -v $PWD:/data ion-cli:0.1.1 ion cat /data/test.ion
See CONTRIBUTING for more information.
This project is licensed under the Apache-2.0 License.