diff --git a/README.md b/README.md index 8669a29..6feed60 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ This thing was created from [Hello Rust Episode specially by using a `GITHUB_TOKEN` to avoid getting blocked by the rate limiter. -TODO: Add screenshots here +![Lychee demo](./assets/lychee.gif) ## Why? @@ -20,41 +20,48 @@ runs all requests fully asynchronously and has a low memory/CPU footprint. ## Features -lychee can... +| | lychee | awesome_bot | muffet | broken-link-checker | linkinator | +| ------------------------------ | ------ | ----------- | ------ | ------------------- | ---------- | +| Language | Rust | Ruby | Go | JS | TypeScript | +| Static binary | ☑ | ☒ | ☑ | ☒ | ☒ | +| Async/Parallel | ☑ | ☑ | ☑ | ☑ | ☑ | +| Markdown support | ☑ | ☑ | ☒ | ☒ | ☒ | +| HTML support | ☑ | ☒ | ☒ | ☑ | ☑ | +| Plaintext support | ☑ | ☒ | ☒ | ☒ | ☒ | +| Website support | ☑ | ☒ | ☑ | ☑ | ☑ | +| Chunked encodings | ☑ | ? | ? | ? | ? | +| GZIP compression | ☑ | ? | ? | ☑ | ? | +| Basic Auth | ☒ | ☒ | ☒ | ☑ | ☒ | +| Custom user agent | ☑ | ☒ | ☒ | ☑ | ☒ | +| Relative URLs | ☒ | ☑ | ☒ | ☑ | ☑ | +| Skip relative URLs | ☑ | ☒ | ☒ | ? | ☒ | +| Include patterns | ☒ | ☑ | ☒ | ☑ | ☒ | +| Exclude patterns | ☑ | ☒ | ☑ | ☑ | ☑ | +| Handle redirects | ☑ | ☑ | ☑ | ☑ | ☑ | +| Ignore SSL | ☑ | ☑ | ☑ | ☒ | ☒ | +| File globbing | ☑ | ☑ | ☒ | ☒ | ☑ | +| Limit scheme (e.g. only HTTPS) | ☑ | ☒ | ☒ | ☑ | ☒ | +| [Custom headers] | ☑ | ☒ | ☑ | ☒ | ☒ | +| Summary | ☑ | ☑ | ☑ | ? | ☑ | +| `HEAD` requests | ☑ | ☑ | ☒ | ☑ | ☑ | +| Colored output | ☑ | ? | ☑ | ? | ☑ | +| [Filter on status code] | ☑ | ☑ | ☒ | ☒ | ☒ | +| Custom request timeout | ☑ | ☑ | ☑ | ☒ | ☑ | +| E-mail links | ☑ | ☒ | ☒ | ☒ | ☒ | +| Progress bar | ☑ | ☑ | ☒ | ☒ | ☒ | +| Retry and backoff | ☑ | ☒ | ☒ | ☒ | ☑ | +| Exclude private domains | ☑ | ☒ | ☒ | ☒ | ☒ | +| [Usable as a library] | ☒ | ☑ | ☒ | ☑ | ☑ | +| Silent mode | ☑ | ☒ | ☒ | ☒ | ☑ | -- 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 (`--insecure`) -- check multiple files at once (supports globbing) -- support checking links from any website URL -- limit scheme (e.g. only check HTTPS links with "https") -- accept custom headers (e.g. for cases like https://github.com/rust-lang/crates.io/issues/788) -- show final summary/statistics -- optionally use `HEAD` requests instead of `GET` -- show colored output -- filter based on status codes (https://github.com/tcort/markdown-link-check/issues/94) - (e.g. `--accept 200,204`) -- accept a request timeout (`--timeout`) in seconds. Default is 20s. Set to 0 for no timeout. -- check e-mail links using [check-if-mail-exists](https://github.com/amaurymartiny/check-if-email-exists) -- show the progress interactively with progress bar and in-flight requests (`--progress`) by @xiaochuanyu -- automatically retry failed links with exponential backoff -- exclude private domains (https://github.com/appscodelabs/liche/blob/a5102b0bf90203b467a4f3b4597d22cd83d94f99/url_checker.go) thanks to @pawroman +## Planned features: -SOON: - -- report output in HTML, SQL, CSV, XML, JSON, YAML... -- check relative URLs (`base-url` to set project root) -- usable as a library (https://github.com/raviqqe/liche/issues/13) -- recursion -- extended statistics: request latency - lychee.toml +- report output in HTML, SQL, CSV, XML, JSON, YAML... format +- report extended statistics: request latency +- recursion - use colored output (https://crates.io/crates/colored) +- skip duplicate urls ## Users @@ -68,8 +75,7 @@ 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 +Run it inside a repository with a `README.md` or specify a file with ``` lychee @@ -94,3 +100,8 @@ Collecting other link checkers here to crush them in comparison. :P ...to my Github sponsors and Patreon sponsors for supporting these projects. If you want to help out as well, [go here](https://github.com/sponsors/mre/). + +[custom headers]: https://github.com/rust-lang/crates.io/issues/788) +[filter on status code]: https://github.com/tcort/markdown-link-check/issues/94 +[exclude private domains]: https://github.com/appscodelabs/liche/blob/a5102b0bf90203b467a4f3b4597d22cd83d94f99/url_checker.go +[usable as library]: https://github.com/raviqqe/liche/issues/13 diff --git a/assets/lychee.gif b/assets/lychee.gif new file mode 100644 index 0000000..79b823e Binary files /dev/null and b/assets/lychee.gif differ