awesome_bot 0.1.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -3
- data/CHANGELOG.md +19 -0
- data/README.md +24 -9
- data/awesome_bot.gemspec +6 -4
- data/lib/awesome_bot.rb +2 -1
- data/lib/awesome_bot/{command.rb → check.rb} +2 -50
- data/lib/awesome_bot/cli.rb +51 -0
- data/lib/awesome_bot/version.rb +3 -2
- metadata +11 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1aa43c6f8d790d1333e7777dbd1794552c1f5b51
|
4
|
+
data.tar.gz: ab95e39072c0bc07dce439e09baaba53feac1776
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd052b6b4b58b4cfd60c148aa8f79158aa523e71c8403a5dfa6ff0fea57bc2503a10bd4a4e9e772daf8eebe8ae3a2944ad159d746587840b6cc3a06ce8aa7d19
|
7
|
+
data.tar.gz: 2a95a657d668d72ea67fba69f19a400323d9669938230a9cdee1468f3c01e15de8f0504b7bfcceb00c8f3472eb3850cd900a5588efe38829e62aa7607e390dcb
|
data/.travis.yml
CHANGED
@@ -2,11 +2,10 @@ language: ruby
|
|
2
2
|
rvm:
|
3
3
|
- 2.2
|
4
4
|
before_script:
|
5
|
-
-
|
6
|
-
- bundle install
|
5
|
+
- rake install
|
7
6
|
script:
|
8
7
|
- awesome_bot
|
9
8
|
- awesome_bot bin/assets/test-no-issues
|
10
9
|
- awesome_bot bin/assets/test-no-links
|
11
10
|
- awesome_bot bin/assets/test-dupe --allow-dupe
|
12
|
-
- awesome_bot README.md --allow-dupe --white-list gph.is,bot.svg
|
11
|
+
- awesome_bot README.md --allow-dupe --white-list gph.is,bot.svg,codeload,badge
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# awesome_bot
|
2
|
+
|
3
|
+
## 0.1.0
|
4
|
+
|
5
|
+
- initial version
|
6
|
+
|
7
|
+
## 1.0.0
|
8
|
+
|
9
|
+
- correct failure logic
|
10
|
+
- rename `run` to `check`
|
11
|
+
- isolate cli
|
12
|
+
- [cli] simply usage, output version
|
13
|
+
- [gemspec] update
|
14
|
+
- [travis] simplify
|
15
|
+
|
16
|
+
## Contact
|
17
|
+
|
18
|
+
- [github.com/dkhamsing](https://github.com/dkhamsing)
|
19
|
+
- [twitter.com/dkhamsing](https://twitter.com/dkhamsing)
|
data/README.md
CHANGED
@@ -7,14 +7,13 @@
|
|
7
7
|
`awesome_bot` checks for valid URLs in a file, it can be used to verify pull requests to update a README with [Travis](#travis).
|
8
8
|
|
9
9
|
[![Build Status](https://travis-ci.org/dkhamsing/awesome_bot.svg)](https://travis-ci.org/dkhamsing/awesome_bot)
|
10
|
+
[![Gem Version](https://badge.fury.io/rb/awesome_bot.svg)](https://badge.fury.io/rb/awesome_bot)
|
10
11
|
|
11
12
|
## Installation
|
12
13
|
|
13
14
|
Add this line to your application's Gemfile:
|
14
15
|
|
15
|
-
|
16
|
-
gem 'awesome_bot'
|
17
|
-
```
|
16
|
+
gem 'awesome_bot', '~> 0.1'
|
18
17
|
|
19
18
|
And then execute:
|
20
19
|
|
@@ -26,9 +25,25 @@ Or install it yourself as:
|
|
26
25
|
|
27
26
|
## Usage
|
28
27
|
|
28
|
+
### Library
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
irb(main):001:0> require 'awesome_bot'
|
32
|
+
=> true
|
33
|
+
irb(main):002:0> c = File.read 'README.md'
|
34
|
+
=> "..."
|
35
|
+
irb(main):003:0> AwesomeBot.check c
|
36
|
+
=> [false, [{"url"=>"http://gph.is/1gU5itl", "status"=>301},..]
|
37
|
+
# returning false, statuses and dupes if there are errors
|
38
|
+
# otherwise returning true
|
29
39
|
```
|
30
|
-
|
31
|
-
|
40
|
+
|
41
|
+
More information at [rubydoc](http://www.rubydoc.info/gems/awesome_bot/0.1.0).
|
42
|
+
|
43
|
+
### Command Line
|
44
|
+
|
45
|
+
awesome_bot <file> [--allow-dupe] [--white-list item1,item2,..]
|
46
|
+
|
32
47
|
|
33
48
|
```shell
|
34
49
|
$ awesome_bot README.md
|
@@ -95,13 +110,13 @@ language: ruby
|
|
95
110
|
rvm:
|
96
111
|
- 2.2
|
97
112
|
before_script:
|
98
|
-
- wget https://codeload.github.com/dkhamsing/awesome_bot/tar.gz/
|
113
|
+
- wget https://codeload.github.com/dkhamsing/awesome_bot/tar.gz/master -O /tmp/temp.tar.gz
|
99
114
|
- tar -xvf /tmp/temp.tar.gz
|
100
|
-
- export PATH=$PATH:$PWD/awesome_bot-
|
101
|
-
- cd awesome_bot-
|
115
|
+
- export PATH=$PATH:$PWD/awesome_bot-master/bin/
|
116
|
+
- cd awesome_bot-master
|
102
117
|
- bundle install
|
103
118
|
script:
|
104
|
-
- awesome_bot ../README.md
|
119
|
+
- awesome_bot ../README.md
|
105
120
|
```
|
106
121
|
|
107
122
|
## Credits
|
data/awesome_bot.gemspec
CHANGED
@@ -9,15 +9,17 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ['Daniel Khamsing']
|
10
10
|
spec.email = ['dkhamsing8@gmail.com']
|
11
11
|
|
12
|
-
spec.summary =
|
12
|
+
spec.summary = AwesomeBot::PROJECT_DESCRIPTION
|
13
13
|
spec.description = AwesomeBot::PROJECT_DESCRIPTION
|
14
14
|
spec.homepage = AwesomeBot::PROJECT_URL
|
15
15
|
spec.license = 'MIT'
|
16
16
|
|
17
17
|
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
-
spec.bindir =
|
19
|
-
spec.executables =
|
20
|
-
spec.require_paths = [
|
18
|
+
spec.bindir = 'bin'
|
19
|
+
spec.executables = [AwesomeBot::PROJECT]
|
20
|
+
spec.require_paths = ['lib']
|
21
|
+
|
22
|
+
spec.required_ruby_version = '>= 2.0.0'
|
21
23
|
|
22
24
|
spec.add_runtime_dependency 'faraday', '~> 0.9.2' # validate urls
|
23
25
|
spec.add_runtime_dependency 'uri', '~> 4.4.29' # get urls
|
data/lib/awesome_bot.rb
CHANGED
@@ -1,64 +1,16 @@
|
|
1
1
|
require 'awesome_bot/links'
|
2
2
|
require 'awesome_bot/statuses'
|
3
|
-
require 'awesome_bot/version'
|
4
3
|
require 'awesome_bot/white_list'
|
5
4
|
|
6
|
-
#
|
5
|
+
# Check links
|
7
6
|
module AwesomeBot
|
8
7
|
NUMBER_OF_THREADS = 10
|
9
8
|
|
10
|
-
OPTION_DUPE = 'allow-dupe'
|
11
|
-
OPTION_WHITE_LIST = 'white-list'
|
12
|
-
|
13
9
|
STATUS_OK = '✓'
|
14
10
|
STATUS_OTHER = 'x'
|
15
11
|
|
16
|
-
USAGE = "\t"
|
17
|
-
|
18
12
|
class << self
|
19
|
-
def
|
20
|
-
option_d = "--#{OPTION_DUPE}"
|
21
|
-
option_w = "--#{OPTION_WHITE_LIST}"
|
22
|
-
|
23
|
-
if ARGV.count == 0
|
24
|
-
puts "#{PROJECT_DESCRIPTION} \n"\
|
25
|
-
"Usage: #{PROJECT} <file> [#{option_d}] "\
|
26
|
-
"[#{option_w} item1,item2,..]\n"\
|
27
|
-
"#{USAGE} file \t\t Path to file \n"\
|
28
|
-
"#{USAGE} #{option_d} \t Skip checking for duplicate URLs \n"\
|
29
|
-
"#{USAGE} #{option_w} \t Comma separated URLs to white list \n"\
|
30
|
-
"\nSee #{PROJECT_URL} for more information"
|
31
|
-
|
32
|
-
exit
|
33
|
-
end
|
34
|
-
|
35
|
-
filename = ARGV[0]
|
36
|
-
puts "> Checking links in #{filename}"
|
37
|
-
|
38
|
-
if ARGV.count > 1
|
39
|
-
options = ARGV.drop 1
|
40
|
-
|
41
|
-
skip_dupe = options.include? option_d
|
42
|
-
|
43
|
-
if options.include? option_w
|
44
|
-
i = options.find_index(option_w) + 1
|
45
|
-
white_listed = options[i].split ','
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
begin
|
50
|
-
content = File.read filename
|
51
|
-
rescue => error
|
52
|
-
puts "File open error: #{error}"
|
53
|
-
exit 1
|
54
|
-
end
|
55
|
-
|
56
|
-
exit 1 if run(content, white_listed, skip_dupe, true) == false
|
57
|
-
|
58
|
-
exit
|
59
|
-
end
|
60
|
-
|
61
|
-
def run(content, white_listed = nil, skip_dupe = false, verbose = false)
|
13
|
+
def check(content, white_listed = nil, skip_dupe = false, verbose = false)
|
62
14
|
dupe_success = skip_dupe
|
63
15
|
|
64
16
|
puts '> Will not check for duplicate links' if skip_dupe && verbose
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'awesome_bot/version'
|
2
|
+
|
3
|
+
# Command line interface
|
4
|
+
module AwesomeBot
|
5
|
+
OPTION_DUPE = 'allow-dupe'
|
6
|
+
OPTION_WHITE_LIST = 'white-list'
|
7
|
+
|
8
|
+
USAGE = "\t"
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def cli
|
12
|
+
option_d = "--#{OPTION_DUPE}"
|
13
|
+
option_w = "--#{OPTION_WHITE_LIST}"
|
14
|
+
|
15
|
+
if ARGV.count == 0
|
16
|
+
puts "Usage: #{PROJECT} <file> [#{option_d}] "\
|
17
|
+
"[#{option_w} item1,item2,..]\n"\
|
18
|
+
"#{USAGE} file \t\t Path to file \n"\
|
19
|
+
"#{USAGE} #{option_d} \t Skip checking for duplicate URLs \n"\
|
20
|
+
"#{USAGE} #{option_w} \t Comma separated URLs to white list \n"\
|
21
|
+
"\nVersion #{VERSION}, see #{PROJECT_URL} for more information"
|
22
|
+
exit
|
23
|
+
end
|
24
|
+
|
25
|
+
filename = ARGV[0]
|
26
|
+
puts "> Checking links in #{filename}"
|
27
|
+
|
28
|
+
if ARGV.count > 1
|
29
|
+
options = ARGV.drop 1
|
30
|
+
|
31
|
+
skip_dupe = options.include? option_d
|
32
|
+
|
33
|
+
if options.include? option_w
|
34
|
+
i = options.find_index(option_w) + 1
|
35
|
+
white_listed = options[i].split ','
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
begin
|
40
|
+
content = File.read filename
|
41
|
+
rescue => error
|
42
|
+
puts "File open error: #{error}"
|
43
|
+
exit 1
|
44
|
+
end
|
45
|
+
|
46
|
+
exit 1 unless check(content, white_listed, skip_dupe, true) == true
|
47
|
+
|
48
|
+
exit
|
49
|
+
end
|
50
|
+
end # class
|
51
|
+
end
|
data/lib/awesome_bot/version.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
# Project version and constants
|
2
2
|
module AwesomeBot
|
3
3
|
PROJECT = 'awesome_bot'
|
4
|
-
PROJECT_DESCRIPTION = 'Check for valid and duplicate URLs in a file'
|
4
|
+
PROJECT_DESCRIPTION = 'Check for valid and duplicate URLs in a file. '\
|
5
|
+
'Great for "awesome" projects.'
|
5
6
|
PROJECT_URL = 'https://github.com/dkhamsing/awesome_bot'
|
6
7
|
|
7
|
-
VERSION = '
|
8
|
+
VERSION = '1.0.0'
|
8
9
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awesome_bot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Khamsing
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -66,15 +66,17 @@ dependencies:
|
|
66
66
|
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.7'
|
69
|
-
description: Check for valid and duplicate URLs in a file
|
69
|
+
description: Check for valid and duplicate URLs in a file. Great for "awesome" projects.
|
70
70
|
email:
|
71
71
|
- dkhamsing8@gmail.com
|
72
|
-
executables:
|
72
|
+
executables:
|
73
|
+
- awesome_bot
|
73
74
|
extensions: []
|
74
75
|
extra_rdoc_files: []
|
75
76
|
files:
|
76
77
|
- .gitignore
|
77
78
|
- .travis.yml
|
79
|
+
- CHANGELOG.md
|
78
80
|
- Gemfile
|
79
81
|
- LICENSE
|
80
82
|
- README.md
|
@@ -89,7 +91,8 @@ files:
|
|
89
91
|
- bin/console
|
90
92
|
- bin/setup
|
91
93
|
- lib/awesome_bot.rb
|
92
|
-
- lib/awesome_bot/
|
94
|
+
- lib/awesome_bot/check.rb
|
95
|
+
- lib/awesome_bot/cli.rb
|
93
96
|
- lib/awesome_bot/links.rb
|
94
97
|
- lib/awesome_bot/statuses.rb
|
95
98
|
- lib/awesome_bot/version.rb
|
@@ -106,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
106
109
|
requirements:
|
107
110
|
- - '>='
|
108
111
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
112
|
+
version: 2.0.0
|
110
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
114
|
requirements:
|
112
115
|
- - '>='
|
@@ -117,5 +120,5 @@ rubyforge_project:
|
|
117
120
|
rubygems_version: 2.0.14
|
118
121
|
signing_key:
|
119
122
|
specification_version: 4
|
120
|
-
summary:
|
123
|
+
summary: Check for valid and duplicate URLs in a file. Great for "awesome" projects.
|
121
124
|
test_files: []
|