lychee/README.md
2020-08-14 02:33:04 +02:00

1.8 KiB

lychee

Rust

...because who says I can't write yet another link checker.

What?

This thing was created from Hello Rust Episode 10. It's a link checker that treats Github links specially by using a GITHUB_TOKEN to avoid getting blocked less by the rate limiter.

Why?

The existing link checkers were not flexible enough for my use-case. lychee can...

  • run requests concurrently (fully async Rust)
  • handle links inside Markdown, HTML, and other documents
  • handle chunked encodings
  • handle gzip compression
  • fake user agents (required for some firewalls)
  • skip non-links like anchors or relative URLs
  • exclude some websites with regular expressions
  • handle a configurable number of redirects
  • disguise as a different user agent (like curl)
  • optionally ignore SSL certificate errors
  • run with a low memory/CPU footprint
  • check multiple files at once (supports globbing)
  • support checking links from any website URL
  • limit scheme (e.g. only check HTTPS links with "https")

SOON:

  • automatically retry and backoff
  • check relative and absolute URLs
  • set timeout for HTTP requests in seconds. Disabled by default.
  • accept custom headers (see https://github.com/rust-lang/crates.io/issues/788)
  • use HEAD requests instead of GET to avoid network I/O
  • show the progress
  • show final status

How?

cargo install lychee

Set an environment variable with your token like so GITHUB_TOKEN=xxxx.

Run it inside a repository with a README.md or specify a different Markdown file with

lychee <yourfile>

Thanks

...to my Github sponsors and Patreon sponsors for supporting these projects. If you want to help out as well, go here.