From a3ff066c2906337cca0d1172f0dcdbcb66d99606 Mon Sep 17 00:00:00 2001 From: NotAShelf Date: Sun, 24 Dec 2023 22:15:51 +0300 Subject: [PATCH] add usage and license information --- .github/assets/demo.png | Bin 0 -> 18219 bytes README.md | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 .github/assets/demo.png diff --git a/.github/assets/demo.png b/.github/assets/demo.png new file mode 100644 index 0000000000000000000000000000000000000000..adef01922816f2627d7de619e1e711f6ad379e09 GIT binary patch literal 18219 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

qAJpJAzk@a6Fdi?77kiE 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index b5d2445..da0e98e 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,42 @@ # 🚨 mdlinkt A CLI tool for detecting dead or inaccessible links in markdown files. + +## Usage + +To check a markdown file for dead or inaccessible links + +```console +mdlinkt -file your-file.md +``` + +This will return each tested link and a summary message in an example markdown file containing 1 valid and 1 invalid file. + +```console +mdlinkt -file test.md +2023/12/12 12:00:00 ERROR Invalid link: https://probablynotvalid.com +2023/12/12 12:00:00 INFO Summary: 1 valid links, 1 invalid links +``` + +Should you want more details on the links that are scanned, you may pass the `-verbose` flag. + +```console +2023/12/12 12:00:00 INFO https://github.com: 200 +2023/12/12 12:00:00 ERROR Invalid link: https://probablynotvalid.com +2023/12/12 12:00:00 INFO Summary: 1 valid links, 1 invalid links +``` + +In case of invalid links, the program will exit with exit code 1, making it perfect for usage in +GitHub actions or other pipelines. + +## Hacking + +A nix flake is provided. Use `direnv allow` or `nix develop` to enter the development shell. + +### Contributing + +PRs are always welcome. + +## License + +**mdlinkt** is licensed under the GPLv3. See [LICENSE](LICENSE) for more details.