#工具 #过时链接 #修复器

bin+lib fixred

用于修复带有重定向URL的文件中的过时URL的命令行工具

7个稳定版本

1.1.3 2021年9月30日
1.1.2 2021年9月29日

#1268 in 命令行工具

MIT 许可证

40KB
816

fixred

crate CI

fixred 是一个命令行工具,用于修复具有重定向URL的文件中的过时链接。

demo

安装

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文件链接进行了如下重定向。

  1. https://github.com/rhysd/vim-crystal/raw/master/README.md
  2. https://github.com/vim-crystal/vim-crystal/raw/master/README.md
  3. 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

现实世界示例

以下是在 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