Verify links in awesome projects ๐
awesome_bot
checks for valid URLs in a file, it can be used to verify pull requests updating a README.
Add this line to your application's Gemfile
gem 'awesome_bot'
And then execute
$ bundle
Or install it yourself as
$ gem install awesome_bot
irb(main):001:0> require 'awesome_bot'
=> true
irb(main):002:0> content = File.read 'README.md'
=> "..."
irb(main):003:0> result = AwesomeBot.check content
=> #<AwesomeBot::Result:0x007fdde39f4408 @links=...>
# AwesomeBot Result with success, statuses_issues, dupes and more
irb(main):004:0> puts result.success ? 'No errors' : ':-('
:-(
More information at rubydoc.
awesome_bot <file> [--allow-dupe] [--allow-redirect] [--allow-timeout] [--set-timeout d] [--white-list item1,item2,..]
file Path to file, required as first argument
--allow-dupe Duplicates URLs are allowed URLs
--allow-redirect Redirected URLs are allowed
--allow-timeout URLs that time out are allowed
--set-timeout Set connection timeout (seconds)
--white-list Comma separated URLs/domains to white list
--ignore-ssl Do not verify SSL certificate
By default, awesome_bot
flags duplicates and URL redirects.
- Use option
--allow-dupe
to allow duplicates. - Use option
--allow-redirect
to all redirects - You can also white list specific links that will not be flagged (for dupe or redirect).
--white-list domain1.com/post/article,domain2.com
white listsdomain1.com/post/article
and all URLs matchingdomain2.com
.
$ awesome_bot README.md
> Checking links in README.md
Links found: 56, 53 unique
1. https://github.com/sindresorhus/awesome
2. http://i.giphy.com/urvsFBDfR6N32.gif
3. https://travis-ci.org/dkhamsing/awesome_bot.svg
...
53. https://twitter.com/dkhamsing
Checking URLs: โxโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Issues :-(
> Links
1. 202 http://www.rubydoc.info/gems/awesome_bot
2. 301 http://rubygems.org/gems/awesome_bot โ https://rubygems.org/gems/awesome_bot
3. 302 https://badge.fury.io/rb/awesome_bot.svg โ https://d25lcipzij17d.cloudfront.net/badge.svg?id=rb&type=6&v=1.4.0&x2=0
4. 302 https://badge.fury.io/rb/awesome_bot โ http://rubygems.org/gems/awesome_bot
5. 301 https://travis-ci.org/dkhamsing/awesome_bot.svg โ https://api.travis-ci.org/dkhamsing/awesome_bot.svg
6. 301 http://gph.is/XM6gMT โ http://giphy.com/gifs/urvsFBDfR6N32
> Dupes
1. https://github.com/sindresorhus/awesome
2. https://github.com/veggiemonk/awesome-docker
3. https://github.com/dotfiles/dotfiles.github.com
$ awesome_bot README.md --allow-dupe --white-list fury,rubydoc,travis,codeload,gems,giphy,gph
> Checking links in README.md
> Will allow duplicate links
> White list: fury, rubydoc, travis, codeload, gems, giphy, gph
Links found: 51, 23 white listed, 42 unique
1. https://github.com/sindresorhus/awesome
2. https://twitter.com/dkhamsing
...
Checking URLs: โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Checking white listed URLs: โโโxโโโโโโโโโ
> White listed:
1. 301 http://rubygems.org/gems/awesome_bot โ https://rubygems.org/gems/awesome_bot
2. 301 http://gph.is/XM6gMT โ http://giphy.com/gifs/urvsFBDfR6N32
3. 200 http://i.giphy.com/urvsFBDfR6N32.gif
...
No issues :-)
awesome_bot
can help you validate GitHub pull requests, it is used by
- https://github.com/tiimgreen/github-cheat-sheet
- https://github.com/vinta/awesome-python
- https://github.com/enaqx/awesome-react
- https://github.com/vsouza/awesome-ios
- https://github.com/alebcay/awesome-shell
- https://github.com/matteocrippa/awesome-swift
and more.
To use awesome_bot
with Travis CI, connect your repo and create a .travis.yml
file.
language: ruby
rvm:
- 2.2
before_script:
- gem install awesome_bot
script:
- awesome_bot README.md
To turn off email notifications, add the lines below
notifications:
email: false
If you prefer Circle CI, it'll work too. Connect your repo and create a circle.yml
file.
machine:
ruby:
version: 2.2.0
test:
pre:
- gem install awesome_bot
override:
- awesome_bot README.md
To add the Travis CI build status badge above to your project, use the following code
[![Build Status](https://travis-ci.org/<username>/<project>.svg)](https://travis-ci.org/<username>/<project>)
i.e.
[![Build Status](https://travis-ci.org/dkhamsing/awesome_bot.svg?branch=master)](https://travis-ci.org/dkhamsing/awesome_bot)
As it happens, the default code snippet provided contain a redirect so adding a badge could fail your status ๐ญ.. one way to fix this is to white list travis-ci
, i.e.
- awesome_bot README.md --white-list travis-ci
To add the Circle CI build status badge above to your project, use the following code
[![Circle CI](https://circleci.com/gh/<username>/<project>.svg?style=svg)](https://circleci.com/gh/<username>/<project>)
i.e.
[![Circle CI](https://circleci.com/gh/dkhamsing/awesome_bot.svg?style=svg)](https://circleci.com/gh/dkhamsing/awesome_bot)
This project is available under the MIT license. See the LICENSE file for more info.