7个稳定版本
1.1.3 | 2021年9月30日 |
---|---|
1.1.2 | 2021年9月29日 |
#1268 in 命令行工具
40KB
816 行
fixred
fixred 是一个命令行工具,用于修复具有重定向URL的文件中的过时链接。
安装
fixred 通过 cargo 包管理器安装。作为依赖项需要 libcurl。
cargo install fixred
fixred --help
如果您没有Rust工具链,还可以使用 Docker镜像。
docker run -it --rm rhysd/fixred:latest --help
使用方法
fixred 会检查文本文件中URL的重定向。当URL被重定向时,fixred 会将其替换为重定向后的URL。fixred 会忽略无效的URL或断链(例如404),以避免在提取的URL中产生假阳性。
请参阅每个标志、选项和参数的帮助输出。
fixred --help
修复文件
最基本的使用方法是通过命令行参数传递文件来修复文件。
# Fix a file
fixred ./docs/usage.md
# Fix all files in a directory (recursively)
fixred ./docs
# Multiple paths can be passed
fixred ./README.md ./CONTRIBUTING.md ./docs
请注意,fixred 只处理UTF8文件。非UTF8文件将被忽略。要了解哪些文件被忽略,请尝试 --verbose
标志。
修复stdin
如果没有提供任何参数,fixred 会读取stdin并将结果输出到stdout。
cat ./docs/usage.md | fixred
通过Docker容器运行
使用 -v
挂载本地目录,并使用 -e
传递环境变量(如果需要)。默认情况下,运行 Docker镜像 会执行 fixred
可执行文件。
# Fix all files in ./docs
docker run -it --rm -v $(pwd):/app -e FIXRED_LOG=info rhysd/fixred:latest /app/docs
也可以通过stdin传递输入。结果将输出到stdout。
# Fix stdin and output the result to stdout
cat ./docs/usage.md | docker run -i --rm rhysd/fixred:latest
仅重定向一次
默认情况下,fixred 会多次跟随重定向并使用最后一个URL进行替换。但是,有时仅进行一次重定向会更有用。可以使用 --shallow
标志来实现。
例如,在 rhysd/vim-crystal
仓库(后来移动到 vim-crystal/vim-crystal
)中的原始README文件链接进行了如下重定向。
- https://github.com/rhysd/vim-crystal/raw/master/README.md
- https://github.com/vim-crystal/vim-crystal/raw/master/README.md
- https://raw.githubusercontent.com/vim-crystal/vim-crystal/master/README.md
当您想要修复1到2,但不想修复1到3时,--shallow
会很有用。
fixred --shallow ./README.md
过滤URL
当您只想修复文件中的特定链接时,可以使用正则表达式过滤URL。以下示例使用 --extract
选项修复以 https://github.com/
开头的URL。
fixred --extract '^https://github\.com/' ./docs
--ignore
选项是 --extract
的反转版本。与模式匹配的 URL 将被忽略。以下示例避免了解析包含哈希的 URL。
fixred --ignore '#' ./docs
详细日志
默认情况下,fixred 在成功运行时不会输出任何内容。对于详细日志输出,可以使用 --verbose
标志或 $FIXRED_LOG
环境变量。
# Outputs which file is being processed
fixred --verbose
# Or
FIXRED_LOG=info fixred ./docs
# Outputs what fixred is doing in detail
FIXRED_LOG=debug fixred ./docs
现实世界示例
- https://github.com/rhysd/actionlint/commit/0b7375279d2caf63203701eccc39ab091cc83a50
- https://github.com/rhysd/actionlint/commit/a3f270b313affa81cc41709587cbd2588d4ac4ce
以下是在 actionlint 项目中的使用示例。
将此工具作为 Rust 库使用
请参阅 API 文档。对于现实世界示例,请参阅 src 目录。
要将它作为依赖项安装,请在您的 Cargo.toml
文件中添加 fixred
。请确保禁用默认功能。这将删除所有不必要的依赖项,以便将此工具用作库。
[dependencies]
fixred = { version = "1", default-features = false, features = [] }
以下是一个小示例代码
use fixred::resolve::CurlResolver;
use fixred::redirect::Redirector;
fn main() {
let red = Redirector::<CurlResolver>::default();
let fixed = red.fix(std::io::stdin(), std::io::stdout()).unwrap();
eprintln!("Fixed {} link(s)", fixed);
}
许可证
在 MIT 许可证 下发布。
依赖项
~13–22MB
~332K SLoC