#cargo #local #source #locations #listing #third-party #list

app cargo-local

一个第三方 Cargo 扩展,用于列出依赖项的本地源位置

6 个版本

0.3.1 2023年6月4日
0.3.0 2022年1月15日
0.2.1 2021年1月3日
0.2.0 2020年12月5日
0.1.0 2019年3月16日

#229Cargo 插件

每月 30 次下载

MIT/Apache

27KB
101

注意:原始代码库来自 cargo open 项目,并修改为用于列出源文件。

cargolocal

一个第三方 Cargo 扩展,用于列出依赖项的本地源位置。

安装

您可以通过在 crates.io 上运行以下命令来安装此工具:

$ cargo install cargo-local

这将把可执行文件 cargo-local 安装到您的 cargo bin 目录中,在 *nix 系统上通常是 ~/.cargo/bin。您应该将该目录添加到您的 PATH 中。

用法

安装后,您应该能够在任何 cargo 项目的根目录下运行以下命令:

$ cargo local

这将输出所有依赖项的源位置列表,或者在文件系统中存在的那些。如果您提供了一组包名,该工具将只显示那些包的位置。示例输出

$ cargo local clap cargo
/home/andrew/.cargo/registry/src/github.com-1ecc6299db9ec823/clap-2.32.0
/home/andrew/.cargo/registry/src/github.com-1ecc6299db9ec823/cargo-0.28.0

您可以使用 --only-names 来运行命令,只列出包名 - 例如用于生成 shell 完成功能

$ cargo local --only-names
toml
semver-parser
fuchsia-zircon
atty
...

单独使用时,这可能不是特别有趣,但它可以用作其他工具(如 shell 脚本)的组件。以下是一些示例

cargo-open

这个代码库主要复制的项目可以大致实现如下

$ $EDITOR `cargo local <package-name>`

一个更长的脚本,用于处理错误,可能看起来像这样

#! /bin/sh

if [ $# -lt 2 ]; then
  echo "USAGE: cargo open <package-name>"
  exit 1
fi

_subcommand=$1 # ignore the "open" subcommand
package=$2
path=$(cargo local $package)
status=$?
if [ $status -ne 0 ]; then
  exit $status
fi

$EDITOR "$path"

cargo-tags

这个分支的原始计划。类似这样的工具已经存在,如 rusty-tags,但可以通过单行命令轻松实现类似功能:ctags -o Cargo.tags -R $(cargo local)。一个带有错误处理的更长的脚本

#! /bin/sh

sources=$(cargo local)
status=$?
if [ $status -ne 0 ]; then
  exit $status
fi

echo "$sources" | xargs --delimiter="\n" ctags -o Cargo.tags -R

贡献

您可以通过执行以下命令在本地运行此工具:cargo run local。请注意子命令,它是有必要的,因为通常它会被调用为 cargo local

如果您想在不同的目录中运行它,您可以使用以下命令安装本地程序:cargo install --path . --force,或者您可以在 target/debug/cargo-local 中找到编译的二进制文件,并通过执行完整路径来运行它。

如果您做出了一些对您有用的修改,请考虑在 github 上提交一个拉取请求。如果您发现了一个错误或不确定如何实现某个特定功能,请随意打开一个问题并寻求帮助。

依赖关系

~52–84MB
~1.5M SLoC