badgerbadgerbadger 0.3.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/config/config.yaml +1 -0
- data/config/licenses.yaml +22 -0
- data/config/services.yaml +22 -25
- data/features/badger.feature +18 -18
- data/features/licenses.feature +45 -0
- data/features/support/hooks.rb +27 -1
- data/lib/badger.rb +1 -0
- data/lib/badger/badger.rb +29 -37
- data/lib/badger/cli.rb +24 -6
- data/lib/badger/license.rb +27 -0
- data/lib/badger/version.rb +1 -1
- data/spec/badger_spec.rb +26 -0
- metadata +6 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c290bb11da1c9bd67b11daa9f0dd1a734dce612
|
4
|
+
data.tar.gz: 5262999603b13416c27d83bf98de0d25b9a31883
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3fb86368c205671bf9e6d4a6107b31c5a4223740efb16054aed7491c97cd750ca3aaf20413784440a924d1b53e956ada96314613670acbfef2f2adec1f41e563
|
7
|
+
data.tar.gz: 96141314900a00beb62b70384f288b800cba8dcdd86f4491b3ad384b21a69075f233ea5212c126abc8a9729a4aa66a79b7a5c7222c27d17e8a5ea7b9b284df9d
|
data/.gitignore
CHANGED
data/config/config.yaml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
badge_service: img.shields.io
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# license_name: - as found in a gemspec
|
2
|
+
# url: - where the license lives
|
3
|
+
# regex: - text to look for in the license file
|
4
|
+
# badge-text: - text to use in the generated badge, if different from license_name
|
5
|
+
|
6
|
+
mit:
|
7
|
+
url: http://%s.mit-license.org
|
8
|
+
regex: The MIT License
|
9
|
+
|
10
|
+
apache:
|
11
|
+
url: http://www.apache.org/licenses/LICENSE-2.0.html
|
12
|
+
regex: Apache License
|
13
|
+
|
14
|
+
gpl-2.0:
|
15
|
+
url: http://www.gnu.org/licenses/gpl-2.0.html
|
16
|
+
badge_text: gpl2
|
17
|
+
regex: GNU GENERAL PUBLIC LICENSE.*Version 2
|
18
|
+
|
19
|
+
gpl-3.0:
|
20
|
+
url: http://www.gnu.org/licenses/gpl-3.0.html
|
21
|
+
badge_text: gpl3
|
22
|
+
regex: GNU GENERAL PUBLIC LICENSE.*Version 3/
|
data/config/services.yaml
CHANGED
@@ -1,29 +1,26 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
badge_slug: travis
|
1
|
+
defaults:
|
2
|
+
travis:
|
3
|
+
alt_text: Build Status
|
4
|
+
url: travis-ci.org
|
5
|
+
badge_slug: travis
|
7
6
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
7
|
+
coveralls:
|
8
|
+
alt_text: Coverage Status
|
9
|
+
url: coveralls.io/r
|
10
|
+
badge_slug: coveralls
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
gemnasium:
|
13
|
+
alt_text: Dependency Status
|
14
|
+
url: gemnasium.com
|
15
|
+
badge_slug: gemnasium
|
17
16
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
codeclimate:
|
18
|
+
alt_text: Code Climate
|
19
|
+
url: codeclimate.com/github
|
20
|
+
badge_slug: codeclimate/github
|
22
21
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
badge_service: img.shields.io
|
22
|
+
extras:
|
23
|
+
mit:
|
24
|
+
alt_text: License
|
25
|
+
badge_path: ":license-mit-blue.svg"
|
26
|
+
url: http://%s.mit-license.org
|
data/features/badger.feature
CHANGED
@@ -58,16 +58,16 @@ Feature: Badge Robot
|
|
58
58
|
[![Code Climate](http://img.shields.io/codeclimate/github/doge/wow.svg)](https://codeclimate.com/github/doge/wow)
|
59
59
|
"""
|
60
60
|
|
61
|
-
Scenario: Generate additional badges
|
62
|
-
When I successfully run `badger badge --also mit /tmp/wow_repo`
|
63
|
-
Then the output should contain:
|
64
|
-
"""
|
65
|
-
[![Build Status](http://img.shields.io/travis/doge/wow.svg)](https://travis-ci.org/doge/wow)
|
66
|
-
[![Coverage Status](http://img.shields.io/coveralls/doge/wow.svg)](https://coveralls.io/r/doge/wow)
|
67
|
-
[![Dependency Status](http://img.shields.io/gemnasium/doge/wow.svg)](https://gemnasium.com/doge/wow)
|
68
|
-
[![Code Climate](http://img.shields.io/codeclimate/github/doge/wow.svg)](https://codeclimate.com/github/doge/wow)
|
69
|
-
[![License](http://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org)
|
70
|
-
"""
|
61
|
+
# Scenario: Generate additional badges
|
62
|
+
# When I successfully run `badger badge --also mit /tmp/wow_repo`
|
63
|
+
# Then the output should contain:
|
64
|
+
# """
|
65
|
+
#[![Build Status](http://img.shields.io/travis/doge/wow.svg)](https://travis-ci.org/doge/wow)
|
66
|
+
#[![Coverage Status](http://img.shields.io/coveralls/doge/wow.svg)](https://coveralls.io/r/doge/wow)
|
67
|
+
#[![Dependency Status](http://img.shields.io/gemnasium/doge/wow.svg)](https://gemnasium.com/doge/wow)
|
68
|
+
#[![Code Climate](http://img.shields.io/codeclimate/github/doge/wow.svg)](https://codeclimate.com/github/doge/wow)
|
69
|
+
#[![License](http://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org)
|
70
|
+
# """
|
71
71
|
|
72
72
|
@gemspec
|
73
73
|
Scenario: Generate badges based on gemspec
|
@@ -82,14 +82,14 @@ Feature: Badge Robot
|
|
82
82
|
[![License](http://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org)
|
83
83
|
"""
|
84
84
|
|
85
|
-
@gemspec
|
86
|
-
Scenario: gemspec and --also mit
|
87
|
-
Given I successfully run `badger badge --also mit /tmp/wow_repo`
|
88
|
-
Then the output should not contain:
|
89
|
-
"""
|
90
|
-
[![License](http://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org)
|
91
|
-
[![License](http://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org)
|
92
|
-
"""
|
85
|
+
# @gemspec
|
86
|
+
# Scenario: gemspec and --also mit
|
87
|
+
# Given I successfully run `badger badge --also mit /tmp/wow_repo`
|
88
|
+
# Then the output should not contain:
|
89
|
+
# """
|
90
|
+
#[![License](http://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org)
|
91
|
+
#[![License](http://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org)
|
92
|
+
# """
|
93
93
|
|
94
94
|
Scenario: handle a non-git-repo gracefully
|
95
95
|
When I run `badger badge /tmp`
|
@@ -0,0 +1,45 @@
|
|
1
|
+
Feature: Badge Robot
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given git remote is "https://github.com/doge/wow.git"
|
5
|
+
|
6
|
+
@license @mit
|
7
|
+
Scenario: Generate MIT license
|
8
|
+
When I successfully run `badger badge /tmp/wow_repo`
|
9
|
+
Then the output should contain:
|
10
|
+
"""
|
11
|
+
![License](http://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org)
|
12
|
+
"""
|
13
|
+
And the output should not contain:
|
14
|
+
"""
|
15
|
+
Apache
|
16
|
+
"""
|
17
|
+
And the output should not contain:
|
18
|
+
"""
|
19
|
+
![License](http://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org)
|
20
|
+
![License](http://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org)
|
21
|
+
"""
|
22
|
+
|
23
|
+
@license @apache
|
24
|
+
Scenario: Generate Apache license
|
25
|
+
When I successfully run `badger badge /tmp/wow_repo`
|
26
|
+
Then the output should contain:
|
27
|
+
"""
|
28
|
+
![License](http://img.shields.io/:license-apache-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0.html)
|
29
|
+
"""
|
30
|
+
And the output should not contain:
|
31
|
+
"""
|
32
|
+
GPL
|
33
|
+
"""
|
34
|
+
|
35
|
+
@license @gpl2
|
36
|
+
Scenario: Generate GPL2 license
|
37
|
+
When I successfully run `badger badge /tmp/wow_repo`
|
38
|
+
Then the output should contain:
|
39
|
+
"""
|
40
|
+
![License](http://img.shields.io/:license-gpl2-blue.svg)](http://www.gnu.org/licenses/gpl-2.0.html)
|
41
|
+
"""
|
42
|
+
And the output should not contain:
|
43
|
+
"""
|
44
|
+
MIT
|
45
|
+
"""
|
data/features/support/hooks.rb
CHANGED
@@ -23,6 +23,32 @@ Before '@no-remote' do
|
|
23
23
|
end
|
24
24
|
|
25
25
|
After '@no-remote' do
|
26
|
-
|
26
|
+
FileUtils.remove_dir '/tmp/not_wow', :force => true
|
27
27
|
end
|
28
28
|
|
29
|
+
Before '@mit' do
|
30
|
+
f = File.open '/tmp/wow_repo/LICENSE.md', 'w'
|
31
|
+
f.write "The MIT License (MIT)\n"
|
32
|
+
f.close
|
33
|
+
end
|
34
|
+
|
35
|
+
Before '@apache' do
|
36
|
+
f = File.open '/tmp/wow_repo/LICENSE.md', 'w'
|
37
|
+
f.write "Apache License\n"
|
38
|
+
f.write "Version 2.0\n"
|
39
|
+
f.close
|
40
|
+
end
|
41
|
+
|
42
|
+
Before '@gpl2' do
|
43
|
+
f = File.open '/tmp/wow_repo/LICENSE.md', 'w'
|
44
|
+
f.write "GNU GENERAL PUBLIC LICENSE\n"
|
45
|
+
f.write "Version 2\n"
|
46
|
+
f.close
|
47
|
+
end
|
48
|
+
|
49
|
+
Before '@gpl3' do
|
50
|
+
f = File.open '/tmp/wow_repo/LICENSE.md', 'w'
|
51
|
+
f.write "GNU GENERAL PUBLIC LICENSE\n"
|
52
|
+
f.write "Version 3\n"
|
53
|
+
f.close
|
54
|
+
end
|
data/lib/badger.rb
CHANGED
data/lib/badger/badger.rb
CHANGED
@@ -2,32 +2,31 @@ require 'yaml'
|
|
2
2
|
|
3
3
|
module Badger
|
4
4
|
class Badger
|
5
|
+
attr_reader :licenses, :badge_service
|
6
|
+
|
5
7
|
def initialize url
|
6
8
|
@github_slug = github_slug url
|
7
9
|
@blacklist = []
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
)
|
17
|
-
)
|
18
|
-
)
|
19
|
-
|
20
|
-
@services = yaml['services']['defaults']
|
21
|
-
@extras = yaml['services']['extras']
|
22
|
-
@badge_service = yaml['badge_service']
|
23
|
-
@extra_badges = []
|
11
|
+
@licenses = YAML.load(File.open(File.join(File.dirname(__FILE__), '..', '..', 'config/licenses.yaml')))
|
12
|
+
yaml = YAML.load(File.open(File.join(File.dirname(__FILE__), '..', '..', 'config/services.yaml')))
|
13
|
+
@services = yaml['defaults']
|
14
|
+
@extras = yaml['extras']
|
15
|
+
@config = YAML.load(File.open(File.join(File.dirname(__FILE__), '..', '..', 'config/config.yaml')))
|
16
|
+
|
17
|
+
@badge_service = @config['badge_service']
|
24
18
|
|
19
|
+
@extra_badges = []
|
25
20
|
end
|
26
21
|
|
27
22
|
def github_slug url
|
28
23
|
@github_slug ||= /.*github\.com.(.*)\.git/.match(url)[1]
|
29
24
|
end
|
30
25
|
|
26
|
+
def owner
|
27
|
+
@owner ||= @github_slug.split('/')[0]
|
28
|
+
end
|
29
|
+
|
31
30
|
def badge
|
32
31
|
s = []
|
33
32
|
@services.each_pair do |k, h|
|
@@ -47,6 +46,11 @@ module Badger
|
|
47
46
|
s.uniq
|
48
47
|
end
|
49
48
|
|
49
|
+
def license type
|
50
|
+
@license = License.new self, type
|
51
|
+
@extra_badges << @license.badge
|
52
|
+
end
|
53
|
+
|
50
54
|
def remove items
|
51
55
|
items = [items] unless items.class.name == 'Array'
|
52
56
|
items.each do |item|
|
@@ -68,20 +72,10 @@ module Badger
|
|
68
72
|
items = [items] unless items.class.name == 'Array'
|
69
73
|
s = ''
|
70
74
|
items.each do |item|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
owner = @github_slug.split('/')[0]
|
76
|
-
t = e['url'] % owner
|
77
|
-
s = "[![%s](http://%s/%s)](%s)" % [
|
78
|
-
e['alt_text'],
|
79
|
-
@badge_service,
|
80
|
-
e['badge_path'],
|
81
|
-
t
|
82
|
-
]
|
75
|
+
if @licenses[item]
|
76
|
+
@license = License.new self, item
|
77
|
+
s << @license.badge
|
83
78
|
end
|
84
|
-
|
85
79
|
@extra_badges << s
|
86
80
|
end
|
87
81
|
end
|
@@ -97,17 +91,15 @@ module Badger
|
|
97
91
|
|
98
92
|
@extra_badges << rg
|
99
93
|
|
100
|
-
|
101
|
-
owner = @github_slug.split('/')[0]
|
102
|
-
license = (lines.select { |l| /license/.match l })[0].split(/\s/)[-1]
|
103
|
-
if /MIT/i.match license
|
104
|
-
lc << "[![License](http://%s/:license-mit-blue.svg)](http://%s.mit-license.org)" % [
|
105
|
-
@badge_service,
|
106
|
-
owner
|
107
|
-
]
|
94
|
+
spec_license = (lines.select { |l| /license/.match l })[0].split(/\s/)[-1][1..-2]
|
108
95
|
|
109
|
-
|
96
|
+
@licenses.each_pair do |k, v|
|
97
|
+
if /#{k}/im.match spec_license
|
98
|
+
@license = License.new self, spec_license
|
99
|
+
end
|
110
100
|
end
|
101
|
+
|
102
|
+
@extra_badges << @license.badge
|
111
103
|
end
|
112
104
|
|
113
105
|
def to_s
|
data/lib/badger/cli.rb
CHANGED
@@ -15,21 +15,28 @@ Generates badges for Github READMEs. The default services are:
|
|
15
15
|
|
16
16
|
* Gemnasium
|
17
17
|
|
18
|
-
|
18
|
+
If a gemspec is found, the following badges will also be generated:
|
19
19
|
|
20
|
-
|
20
|
+
* [License] badge, linking to the appropriate license
|
21
21
|
|
22
|
+
* [Gem version] badge, linking to rubygems.org
|
22
23
|
|
23
|
-
If a
|
24
|
+
If a license file is found, a license badge will be generated. Currently supported licenses are:
|
24
25
|
|
25
|
-
*
|
26
|
+
* MIT
|
27
|
+
|
28
|
+
* Apache
|
29
|
+
|
30
|
+
* GPL-2
|
31
|
+
|
32
|
+
* GPL-3
|
33
|
+
|
34
|
+
The supported license details are in https://github.com/pikesley/badger/blob/master/config/licenses.yaml, if you're using a different license, send a PR! And if your gemspec license conflicts with your LICENSE file, you should probably fix that.
|
26
35
|
|
27
|
-
* [Gem version] badge, linking to rubygems.org
|
28
36
|
|
29
37
|
LONGDESC
|
30
38
|
option :not, desc: 'Exclude these services (comma-separated list)'
|
31
39
|
option :only, desc: 'Generate for *only* these services (comma-separated list)'
|
32
|
-
option :also, desc: 'Include this extra service (currently only \'mit\')'
|
33
40
|
|
34
41
|
def badge dir = '.'
|
35
42
|
begin
|
@@ -57,6 +64,17 @@ If a gemspec is found, the following badges will also be generated:
|
|
57
64
|
@badger.gemspec lines
|
58
65
|
end
|
59
66
|
|
67
|
+
license_file = (Dir.entries dir).select { |i| /LICENSE/i.match i }[0]
|
68
|
+
|
69
|
+
if license_file
|
70
|
+
words = File.open(File.join(dir, license_file), 'r').read
|
71
|
+
@badger.licenses.each_pair do |k, v|
|
72
|
+
if /#{v['regex']}/im.match words
|
73
|
+
@badger.license k
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
60
78
|
puts @badger.to_s
|
61
79
|
end
|
62
80
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Badger
|
2
|
+
class License
|
3
|
+
def initialize badger, type
|
4
|
+
@badger = badger
|
5
|
+
@type = type.downcase
|
6
|
+
end
|
7
|
+
|
8
|
+
def badge
|
9
|
+
return nil unless config = @badger.licenses[@type]
|
10
|
+
|
11
|
+
@url = config['url']
|
12
|
+
if /%s/.match @url
|
13
|
+
@url = @url % @badger.owner
|
14
|
+
end
|
15
|
+
|
16
|
+
badge_text = @type unless badge_text = config['badge_text']
|
17
|
+
|
18
|
+
s = "[![License](http://%s/:license-%s-blue.svg)](%s)" % [
|
19
|
+
@badger.badge_service,
|
20
|
+
badge_text,
|
21
|
+
@url
|
22
|
+
]
|
23
|
+
|
24
|
+
s
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/badger/version.rb
CHANGED
data/spec/badger_spec.rb
CHANGED
@@ -14,6 +14,10 @@ module Badger
|
|
14
14
|
it 'for an ssh url' do
|
15
15
|
@badger.github_slug('git@github.com:doge/wow.git').should eql('doge/wow')
|
16
16
|
end
|
17
|
+
|
18
|
+
it 'should have the owner' do
|
19
|
+
@badger.owner.should eql 'doge'
|
20
|
+
end
|
17
21
|
end
|
18
22
|
|
19
23
|
it 'should generate a badge list' do
|
@@ -64,5 +68,27 @@ module Badger
|
|
64
68
|
@badger.badge[5].should == "[![License](http://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org)"
|
65
69
|
end
|
66
70
|
end
|
71
|
+
|
72
|
+
context 'licenses' do
|
73
|
+
it 'should generate an MIT badge' do
|
74
|
+
@badger.license 'mit'
|
75
|
+
@badger.badge[4].should == "[![License](http://img.shields.io/:license-mit-blue.svg)](http://doge.mit-license.org)"
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'should generate an Apache badge' do
|
79
|
+
@badger.license 'apache'
|
80
|
+
@badger.badge[4].should == "[![License](http://img.shields.io/:license-apache-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0.html)"
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'should generate a GPL3 badge' do
|
84
|
+
@badger.license 'gpl-3.0'
|
85
|
+
@badger.badge[4].should == "[![License](http://img.shields.io/:license-gpl3-blue.svg)](http://www.gnu.org/licenses/gpl-3.0.html)"
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'should generate nothing for an unknown license' do
|
89
|
+
@badger.license 'doge-license'
|
90
|
+
@badger.badge[4].should == nil
|
91
|
+
end
|
92
|
+
end
|
67
93
|
end
|
68
94
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: badgerbadgerbadger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- pikesley
|
@@ -211,14 +211,18 @@ files:
|
|
211
211
|
- Rakefile
|
212
212
|
- badger.gemspec
|
213
213
|
- bin/badger
|
214
|
+
- config/config.yaml
|
215
|
+
- config/licenses.yaml
|
214
216
|
- config/services.yaml
|
215
217
|
- features/badger.feature
|
218
|
+
- features/licenses.feature
|
216
219
|
- features/step_definitions/badger_steps.rb
|
217
220
|
- features/support/env.rb
|
218
221
|
- features/support/hooks.rb
|
219
222
|
- lib/badger.rb
|
220
223
|
- lib/badger/badger.rb
|
221
224
|
- lib/badger/cli.rb
|
225
|
+
- lib/badger/license.rb
|
222
226
|
- lib/badger/service.rb
|
223
227
|
- lib/badger/version.rb
|
224
228
|
- spec/badger_spec.rb
|
@@ -250,6 +254,7 @@ summary: Badge-Driven Development made easy. Generate a set of Github badges for
|
|
250
254
|
project without cutting-n-pasting every time
|
251
255
|
test_files:
|
252
256
|
- features/badger.feature
|
257
|
+
- features/licenses.feature
|
253
258
|
- features/step_definitions/badger_steps.rb
|
254
259
|
- features/support/env.rb
|
255
260
|
- features/support/hooks.rb
|