9 个版本 (5 个重大变更)
0.6.0 | 2024年6月6日 |
---|---|
0.5.1 | 2024年2月8日 |
0.4.1 | 2022年8月11日 |
0.3.0 | 2022年5月31日 |
0.1.1 | 2021年1月28日 |
#205 在 解析实现
175KB
3.5K SLoC
包含 (JAR 文件,44KB) gradle-wrapper.jar
ion-cli
本存储库是 ion
命令行工具的家园,该工具提供用于处理 Ion 数据格式 的子命令。
目录
示例
这些示例使用 .ion
文件扩展名表示文本 Ion,使用 .10n
文件扩展名表示二进制 Ion。这只是一个约定;该工具不会评估文件扩展名。
除非另有说明,否则这些命令可以接受任何 Ion 格式作为输入。
使用 dump
在格式之间进行转换
将 Ion 文本(或 JSON)转换为 Ion 二进制格式
ion dump --format binary my_file.ion
将 Ion 二进制转换为宽松间距、易于阅读的文本
ion dump --format pretty my_file.10n
将 Ion 二进制转换为紧凑的文本
ion dump --format text my_file.10n
使用 to
和 from
在 Ion 和其他格式之间进行转换
beta to
和 beta from
命令可以将 Ion 转换为其他格式,也可以将其他格式转换为 Ion。目前支持 JSON。
将 Ion 转换为 JSON
ion beta to json my_file.10n
将 JSON 转换为 Ion
ion beta from json my_file.json
使用 inspect
分析二进制 Ion 文件的编码
beta inspect
命令可以显示二进制 Ion 文件的十六进制字节及其等效的文本 Ion,以便于分析。
# 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 dump --format binary my_file.ion > my_file.10n
# Show the binary encoding alongside its equivalent text
ion beta inspect my_file.10n
---------------------------------------------------------------------------
Offset | Length | Binary Ion | Text Ion
---------------------------------------------------------------------------
| 4 | e0 01 00 ea | // Ion 1.0 Version Marker
4 | 4 | ee 95 81 83 | '$ion_symbol_table':: // $3::
8 | 19 | de 91 | {
10 | 1 | 86 | 'imports': // $6:
11 | 2 | 71 03 | $ion_symbol_table, // $3
13 | 1 | 87 | 'symbols': // $7:
14 | 13 | bc | [
15 | 4 | 83 66 6f 6f | "foo",
19 | 4 | 83 62 61 72 | "bar",
23 | 4 | 83 62 61 7a | "baz",
| | | ],
| | | }
27 | 13 | dc | {
28 | 1 | 8a | 'foo': // $10:
29 | 1 | 0f | null,
30 | 1 | 8b | 'bar': // $11:
31 | 1 | 11 | true,
32 | 1 | 8c | 'baz': // $12:
33 | 7 | b6 | [
34 | 2 | 21 01 | 1,
36 | 2 | 21 02 | 2,
38 | 2 | 21 03 | 3,
| | | ],
| | | }
要跳到流中的特定偏移量,可以使用 --skip-bytes
标志
ion beta inspect --skip-bytes 30 my_file.10n
---------------------------------------------------------------------------
Offset | Length | Binary Ion | Text Ion
---------------------------------------------------------------------------
| 4 | e0 01 00 ea | // Ion 1.0 Version Marker
| | ... | // Skipped 23 bytes of user-level data
27 | 13 | dc | {
| | ... | // Skipped 2 bytes of user-level data
30 | 1 | 8b | 'bar': // $11:
31 | 1 | 11 | true,
32 | 1 | 8c | 'baz': // $12:
33 | 7 | b6 | [
34 | 2 | 21 01 | 1,
36 | 2 | 21 02 | 2,
38 | 2 | 21 03 | 3,
| | | ],
| | | }
请注意,文本列添加了注释,指出数据已跳过。此外,如果请求的索引位于一个或多个容器内部,则这些容器的开头(包括它们的长度和偏移量)也将包含在输出中。
您可以使用 --limit-bytes
标志限制 inspect
显示的数据量
ion beta inspect --skip-bytes 30 --limit-bytes 2 my_file.10n
---------------------------------------------------------------------------
Offset | Length | Binary Ion | Text Ion
---------------------------------------------------------------------------
| 4 | e0 01 00 ea | // Ion 1.0 Version Marker
| | ... | // Skipped 23 bytes of user-level data
27 | 13 | dc | {
| | ... | // Skipped 2 bytes of user-level data
30 | 1 | 8b | 'bar': // $11:
31 | 1 | 11 | true,
| | ... | // --limit-bytes reached, stepping out.
| | | }
模式子命令
所有加载或验证模式的子命令都在 beta schema
子命令下。
加载模式
ion beta schema load --directory <DIRECTORY> --schema <SCHEMA_FILE>
验证 ion 值与模式类型
ion beta schema validate --directory <DIRECTORY> --schema <SCHEMA_FILE> --input <INPUT_FILE> --type <TYPE>
有关如何使用CLI的schema子命令的更多信息,请运行以下命令
ion beta schema help
安装
通过 brew
安装 ion-cli
最简单的方法是通过 Homebrew。
一旦 brew
命令可用,请运行
brew tap amazon-ion/ion-cli
brew install ion-cli
通过 cargo
ion-cli
还可以通过使用Rust的包管理器 cargo
进行安装。如果您还没有 cargo
,您可以通过访问 rustup.rs 来安装它。
要安装 ion-cli
,请运行以下命令
cargo install ion-cli
然后确保 ~/.cargo/bin
在您的 $PATH
上。您可以通过运行以下命令来确认是否已成功安装:
ion help
您应该看到类似以下内容的输出
ion 0.4.0
The Ion Team <ion-team@amazon.com>
USAGE:
ion <SUBCOMMAND>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
beta The 'beta' command is a namespace for commands whose interfaces are
not yet stable.
dump Prints Ion in the requested format
help Prints this message or the help of the given subcommand(s)
构建说明
从源代码构建
-
克隆存储库
git clone https://github.com/amzn/ion-cli.git
-
进入新创建的目录
cd ion-cli
-
通过访问 rustup.rs 安装Rust/Cargo。
-
构建
ion
工具cargo install --path .
这将把
ion
可执行文件的副本放入~/.cargo/bin
。 -
请确保
~/.cargo/bin
在您的$PATH
上。rustup
可能会为您处理这个问题。 -
通过运行以下命令来确认可执行文件是否可用:
ion help
使用 Docker
- 安装Docker(请参阅Docker网站上的操作系统特定说明 Docker website)
- 克隆存储库(无需递归克隆)
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 dump an ion file docker run -it --rm -v $PWD:/data ion-cli:0.1.1 ion dump /data/test.ion
安全
有关更多信息,请参阅 CONTRIBUTING。
许可协议
本项目采用Apache-2.0许可协议。
依赖关系
~15–28MB
~431K SLoC