2 个不稳定版本
0.2.0 | 2024 年 5 月 12 日 |
---|---|
0.1.0 | 2023 年 12 月 14 日 |
#194 在 Cargo 插件
50KB
537 行
Cargo Describe
基本上是 cargo metadata
,但是输出可以被脚本使用,不需要复杂的 jq
命令。
安装
常规方法。 cargo install cargo-describe
。
用法
CLI tool to produce human-friendly information from cargo-metadata
Usage: cargo-describe.exe [OPTIONS]
Options:
-m, --manifest <MANIFEST>
Path to a non-standard 'Cargo.toml' package manifest, if not in current directory
-o, --output-format <OUTPUT_FORMAT>
The output format of this tool
[default: human-text]
Possible values:
- human-text: Pretty human text
- csv: Comma separated values
- md-table: Markdown Table
- plain: No formatting, one value per line
-f, --fields <FIELDS>
An optional list of manifest fields to display
[default: name version]
Possible values:
- name: Name of the package
- version: Version of the package from the manifest
- git-version: 'Git Describe' output of the specific package
- module-relative-path: Path to the module's dir, relative to the root dir
- module-absolute-path: Absolute path on disk to the module dir
- module-relative-manifest-path: Path to the module's Cargo.toml, relative to the root dir
- module-absolute-manifest-path: Absolute path on disk to the module's Cargo.toml
- all: Prints everything
-p, --package <PACKAGE>
An optional list of crate packages members to display in this workspace
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
示例
...从该仓库的根目录运行
无参数,"人类友好格式化"
$> cargo run --bin cargo-describe --
irox
Version : 0.5.0
irox-carto
Version : 0.5.0
irox-enums
Version : 0.2.1
irox-enums_derive
Version : 0.2.1
irox-time
Version : 0.3.5
...snipped...
人类友好,所有字段
$> cargo run --bin cargo-describe -- -fall
irox
Version : 0.5.0
Git Version : irox-0.5.0-10-g23110f9
Module Relative Path : irox
Module Absolute Path : V:\irox\irox\
Manifest Relative Path : irox\Cargo.toml
Manifest Absolute Path : V:\irox\irox\Cargo.toml
irox-carto
Version : 0.5.0
Git Version : irox-carto-0.5.0-44-gf2d62c7
Module Relative Path : libraries\carto
Module Absolute Path : V:\irox\libraries\carto\
Manifest Relative Path : libraries\carto\Cargo.toml
Manifest Absolute Path : V:\irox\libraries\carto\Cargo.toml
irox-enums
Version : 0.2.1
Git Version : irox-enums-0.2.1-48-g7b1646e
Module Relative Path : libraries\enums
Module Absolute Path : V:\irox\libraries\enums\
Manifest Relative Path : libraries\enums\Cargo.toml
Manifest Absolute Path : V:\irox\libraries\enums\Cargo.toml
irox-enums_derive
Version : 0.2.1
Git Version : irox-enums_derive-0.2.1-49-g845a800
Module Relative Path : libraries\enums_derive
Module Absolute Path : V:\irox\libraries\enums_derive\
Manifest Relative Path : libraries\enums_derive\Cargo.toml
Manifest Absolute Path : V:\irox\libraries\enums_derive\Cargo.toml
...snipped..
纯文本输出(最适合脚本编写)
将打印指定字段的值,每行一个,按包组织。
$> cargo run --bin cargo-describe -- -o plain -f module-relative-manifest-path
irox\Cargo.toml
libraries\carto\Cargo.toml
libraries\enums\Cargo.toml
libraries\enums_derive\Cargo.toml
libraries\time\Cargo.toml
libraries\tools\Cargo.toml
libraries\units\Cargo.toml
data-formats\csv\Cargo.toml
libraries\egui_extras\Cargo.toml
data-formats\gpx\Cargo.toml
interfaces\influxdb_v1\Cargo.toml
libraries\network\Cargo.toml
libraries\types\Cargo.toml
libraries\log\Cargo.toml
data-formats\nmea0183\Cargo.toml
libraries\progress\Cargo.toml
data-formats\raymarine-sonar\Cargo.toml
data-formats\sirf\Cargo.toml
libraries\structs\Cargo.toml
libraries\structs_derive\Cargo.toml
libraries\stats\Cargo.toml
libraries\threading\Cargo.toml
interfaces\win-location-api\Cargo.toml
eieio\api\Cargo.toml
eieio\nmea0183\Cargo.toml
libraries\build-rs\Cargo.toml
tools\cargo-describe\Cargo.toml
tools\gpsd\Cargo.toml
tools\halflifes\Cargo.toml
tools\influx-cli\Cargo.toml
tools\sonar-sdf-convert\Cargo.toml
带有过滤的 CSV
$> cargo run --bin cargo-describe -- -o csv -p irox-tools -p cargo-describe
Name,Version
irox-tools,0.4.1
cargo-describe,0.1.0
Markdown 表格(过滤后的)
使用 -o md-table
将打印一个 Markdown 格式的表格
$> cargo run --bin cargo-describe -- -o md-table -p irox-tools -p cargo-describe
| Name | Version |
|----------------|---------|
| irox-tools | 0.4.1 |
| cargo-describe | 0.1.0 |
渲染为
名称 | 版本 |
---|---|
irox-tools | 0.4.1 |
cargo-describe | 0.1.0 |
带有所有字段的 Markdown 表格(过滤后的)
使用 -f all
将打印所有可用的字段
$> cargo run --bin cargo-describe -- -o md-table -p irox-tools -p cargo-describe -f all
| Name | Version | GitVersion | ModuleRelativePath | ModuleAbsolutePath | ModuleRelativeManifestPath | ModuleAbsoluteManifestPath |
|----------------|---------|---------------------------------|----------------------|-------------------------------|---------------------------------|-----------------------------------------|
| irox-tools | 0.4.1 | irox-tools-0.4.1-14-g465c708 | libraries\tools | V:\irox\libraries\tools\ | libraries\tools\Cargo.toml | V:\irox\libraries\tools\Cargo.toml |
| cargo-describe | 0.1.0 | cargo-describe-0.1.0-1-g1762e52 | tools\cargo-describe | V:\irox\tools\cargo-describe\ | tools\cargo-describe\Cargo.toml | V:\irox\tools\cargo-describe\Cargo.toml |
渲染为
名称 | 版本 | Git 版本 | 模块相对路径 | 模块绝对路径 | 模块相对清单路径 | 模块绝对清单路径 |
---|---|---|---|---|---|---|
irox-tools | 0.4.1 | irox-tools-0.4.1-14-g465c708 | libraries\tools | V:\irox\libraries\tools\ | libraries\tools\Cargo.toml | V:\irox\libraries\tools\Cargo.toml |
cargo-describe | 0.1.0 | cargo-describe-0.1.0-1-g1762e52 | tools\cargo-describe | V:\irox\tools\cargo-describe\ | tools\cargo-describe\Cargo.toml | V:\irox\tools\cargo-describe\Cargo.toml |
字段
名称
-f name
或-f all
- 输出:从 Cargo.toml 清单中获取的包名称
- irox-tools 的示例:
irox-tools
版本
-f version
或-f all
- 输出:从 Cargo.toml 清单中获取的包版本
- irox-tools 的示例:
0.4.1
Git 版本
这提供了一种与 git describe
略有不同变体的 git describe
。它不是在整个仓库上操作,而是在仓库的特定包目录上操作。这就像如果 git describe
接受一个路径过滤参数,就像 git log <path>...
一样。就像 git log <package-dir> | git describe
一样工作。
-f git-version
或-f all
- 输出:我最喜欢的
git describe
变体{名称}-{版本}-{提交次数}-g{短哈希}{-脏}
name
:与-f name
相同 - 来自清单的包名tag
:尝试找到包含该包目录最后提交的最新 Git 标签。如果找不到提交,则将回退到-f version
的输出 - 来自清单文件的版本commit_count
:HEAD 在{tag}
之后提交的次数short_hash
:HEAD
的 Git 短哈希-dirty
:如果工作树是脏的,则可选的脏后缀
- irox-tools 的示例:
irox-tools-0.4.1-14-g465c708
- 脏 irox-tools 的示例:
irox-tools-0.4.1-14-g465c708-dirty
模块相对路径
-f module-relative-path
或-f all
- 输出:包相对于工作空间根目录的相对路径。在根清单的
members
数组中会出现什么 - irox-tools 的示例:
libraries\tools
模块绝对路径
-f module-absolute-path
或-f all
- 输出:包在磁盘上的绝对路径。如果从工作空间根目录运行,则与
pwd/module-relative-path
相同 - irox-tools 的示例:
V:\irox\libraries\tools
模块相对清单路径
-f module-relative-manifest-path
或-f all
- 输出:
模块相对路径
+Cargo.toml
。 - irox-tools 的示例:
libaries\tools\Cargo.toml
模块绝对清单路径
-f module-absolute-manifest-path
或-f all
- 输出:
模块绝对路径
+Cargo.toml
- irox-tools 的示例:
V:\irox\libraries\tools\Cargo.toml
依赖项
~88MB
~2M SLoC