diligent 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +20 -0
- data/.travis.yml +7 -0
- data/Gemfile +2 -0
- data/Guardfile +9 -0
- data/LICENSE +21 -0
- data/README.md +28 -0
- data/bin/diligent +5 -0
- data/diligent.gemspec +32 -0
- data/lib/diligent/cli.rb +29 -0
- data/lib/diligent/list.rb +77 -0
- data/lib/diligent/version.rb +3 -0
- data/lib/diligent.rb +15 -0
- data/spec/diligent/info_spec.rb +9 -0
- data/spec/diligent/list_spec.rb +54 -0
- data/spec/diligent_spec.rb +9 -0
- data/spec/spec_helper.rb +9 -0
- data/templates/list.html.erb +107 -0
- metadata +178 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ab67b44dc93fb3550fbf7bbca30e77a013edff40
|
4
|
+
data.tar.gz: 91cbda452d99bd6c69a6bc4a52fbd6e472c8a997
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 568856534c5083a20163b2862c68c682e125a7f2fbd8d75cf7ad89851cd40bf0420e2e5e2dcfef111b67c3a65ff19fb3f92a639fc27bb543b9186aee25c4afe8
|
7
|
+
data.tar.gz: 3bc64833405d83002153a876f1a4f95a6cd583b289f5979c04d8caef7e42959dddffbbca52696a69dda823178de6ef04f58be34ff07c77f3813bc6c8aecdc6ee
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Guardfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2014 Jonathan Vaught
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
diligent
|
2
|
+
========
|
3
|
+
|
4
|
+
[![Build Status](https://secure.travis-ci.org/copyhacker/diligent.png?branch=master)](https://travis-ci.org/copyhacker/diligent)
|
5
|
+
|
6
|
+
Comb your gems for licensing info and collate it nicely for the lawyers.
|
7
|
+
|
8
|
+
|
9
|
+
# TODO
|
10
|
+
|
11
|
+
- [x] Command line or rake task
|
12
|
+
- [x] Run and parse `bundle list`
|
13
|
+
- [x] Hit rubygems and/or GitHub for info on each gem
|
14
|
+
- [x] Pull all that into a hash: name, version, owner, license type
|
15
|
+
- [x] Link to license text
|
16
|
+
- [X] Output options
|
17
|
+
- [x] JSON
|
18
|
+
- [X] HTML
|
19
|
+
- [x] CSV
|
20
|
+
- Documentation
|
21
|
+
|
22
|
+
# Author
|
23
|
+
|
24
|
+
- [Jonathan Vaught](http://github.com/copyhacker)
|
25
|
+
|
26
|
+
# Contributors
|
27
|
+
|
28
|
+
- [Brian Nelson](http://github.com/briannelsondesign)
|
data/bin/diligent
ADDED
data/diligent.gemspec
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
|
4
|
+
require 'diligent/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = 'diligent'
|
8
|
+
s.version = Diligent::VERSION.dup
|
9
|
+
s.platform = Gem::Platform::RUBY
|
10
|
+
s.date = '2014-03-24'
|
11
|
+
s.summary = "Comb your gems for licensing info and collate it nicely for the lawyers."
|
12
|
+
s.description = "Comb your gems for licensing info and collate it nicely for the lawyers."
|
13
|
+
s.authors = [ "Jonathan Vaught" ]
|
14
|
+
s.email = 'jonathan.vaught@gmail.com'
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.executables = [ "diligent" ]
|
17
|
+
s.test_files = `git ls-files -- spec/*`.split("\n")
|
18
|
+
s.require_paths = [ "lib" ]
|
19
|
+
s.homepage =
|
20
|
+
'https://github.com/copyhacker/diligent'
|
21
|
+
s.license = 'MIT'
|
22
|
+
|
23
|
+
s.add_runtime_dependency 'thor', '~> 0.19'
|
24
|
+
s.add_runtime_dependency 'bundler', '~> 1.0'
|
25
|
+
|
26
|
+
s.add_development_dependency 'awesome_print', '~> 1.2'
|
27
|
+
s.add_development_dependency 'guard', '~> 2.6'
|
28
|
+
s.add_development_dependency 'guard-rspec', '~> 4.2'
|
29
|
+
s.add_development_dependency 'nokogiri', '~> 1.6'
|
30
|
+
s.add_development_dependency 'pry', '~> 0.9'
|
31
|
+
s.add_development_dependency 'rspec', '~> 3.0.beta'
|
32
|
+
end
|
data/lib/diligent/cli.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'diligent'
|
3
|
+
|
4
|
+
module Diligent
|
5
|
+
class CLI < Thor
|
6
|
+
desc 'legalese', 'If you can read this, thank a lawyer.'
|
7
|
+
def legalese
|
8
|
+
puts Diligent::Info.legalese
|
9
|
+
end
|
10
|
+
|
11
|
+
desc 'list', 'List of gem information. JSON by default, or pass format option.'
|
12
|
+
option :format
|
13
|
+
option :outfile
|
14
|
+
def list
|
15
|
+
list = Diligent::List.new
|
16
|
+
|
17
|
+
case (options[:format] || 'json')
|
18
|
+
when 'csv'
|
19
|
+
list.as_csv(options[:outfile] || './diligent.csv')
|
20
|
+
when 'json'
|
21
|
+
puts list.as_json(options[:outfile] || nil)
|
22
|
+
when 'html'
|
23
|
+
list.as_html(options[:outfile] || './diligent.html')
|
24
|
+
else
|
25
|
+
raise 'Only CSV, HTML and JSON are currently supported.'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'csv'
|
2
|
+
require 'erb'
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module Diligent
|
6
|
+
class List
|
7
|
+
include ERB::Util # for html escaping
|
8
|
+
|
9
|
+
attr_accessor :project_name, :specs
|
10
|
+
|
11
|
+
class << self
|
12
|
+
def load
|
13
|
+
self.new.as_hash
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize
|
18
|
+
# TODO Optionally point at a different path?
|
19
|
+
|
20
|
+
@project_name = File.split(FileUtils.getwd).last
|
21
|
+
@specs = Bundler.load.specs
|
22
|
+
end
|
23
|
+
|
24
|
+
def as_hash
|
25
|
+
@specs.inject({}) do |hash, spec|
|
26
|
+
hash[spec.name] = {
|
27
|
+
'version' => spec.version.to_s,
|
28
|
+
'author' => spec.author,
|
29
|
+
'summary' => spec.summary,
|
30
|
+
'description' => spec.description,
|
31
|
+
'license' => spec.license,
|
32
|
+
'homepage' => spec.homepage
|
33
|
+
}
|
34
|
+
|
35
|
+
hash
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def as_json(filename = nil)
|
40
|
+
json = as_hash.to_json
|
41
|
+
write_to_file filename, json
|
42
|
+
end
|
43
|
+
|
44
|
+
def as_csv(filename = nil)
|
45
|
+
as_array = as_hash.inject([]) do |arr, gem_info|
|
46
|
+
row = []
|
47
|
+
row << gem_info.first
|
48
|
+
gem_info.last.inject(row) do |r, i|
|
49
|
+
r << i.last
|
50
|
+
end
|
51
|
+
arr << row
|
52
|
+
end
|
53
|
+
|
54
|
+
csv = CSV.generate do |csv|
|
55
|
+
csv << %w{ Gem Version Author Summary Description License Homepage }
|
56
|
+
as_array.each { |row| csv << row }
|
57
|
+
end
|
58
|
+
|
59
|
+
write_to_file filename, csv
|
60
|
+
end
|
61
|
+
|
62
|
+
def as_html(filename = nil)
|
63
|
+
list = as_hash
|
64
|
+
template_path = File.join(File.dirname(__FILE__), '../../templates/list.html.erb')
|
65
|
+
html = ERB.new(File.read(template_path)).result(binding)
|
66
|
+
|
67
|
+
write_to_file filename, html
|
68
|
+
end
|
69
|
+
|
70
|
+
protected
|
71
|
+
|
72
|
+
def write_to_file(filename, content)
|
73
|
+
File.open(filename, 'w') { |f| f.write(content) } if filename
|
74
|
+
content
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
data/lib/diligent.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
require 'diligent/version'
|
3
|
+
require 'diligent/list'
|
4
|
+
|
5
|
+
module Diligent
|
6
|
+
class Info
|
7
|
+
def self.legalese
|
8
|
+
"New versions of the executable. If distribution of the alternative licenses, if any, in source and free culture, all users contributing to Wikimedia projects To grow the commons of free software, and (2) offer you this license is required to exercise the rights granted hereunder will terminate: (a) automatically without notice from Apple which Apple may grant in its Contribution, if any, must include the Program or Derived Programs thereof. Article 4 (Termination of Agreement) 1. The Recipient may not occur to you when allowing others to access the modified work as a relevant directory file) where a user would be entitled to make sure that they, too, receive or can get it if you want it to your programs, too."
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.license_text(license_name)
|
12
|
+
"http://opensource.org/licenses/#{license_name}"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'csv'
|
3
|
+
require 'nokogiri'
|
4
|
+
|
5
|
+
describe Diligent::List do
|
6
|
+
before { @list = Diligent::List.load }
|
7
|
+
|
8
|
+
context '.load' do
|
9
|
+
it 'should be a list of gems used' do
|
10
|
+
expect(@list['awesome_print']['author']).to eq('Michael Dvorkin')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context '#as_csv' do
|
15
|
+
after { FileUtils.rm('/tmp/diligent.csv') if File.exists?('/tmp/diligent.csv') }
|
16
|
+
|
17
|
+
it 'should put the list in CSV format' do
|
18
|
+
@csv = Diligent::List.new.as_csv
|
19
|
+
check_csv_content CSV.parse(@csv)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should output to a file' do
|
23
|
+
@csv = Diligent::List.new.as_csv('/tmp/diligent.csv')
|
24
|
+
check_csv_content CSV.read('/tmp/diligent.csv')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context '#as_html' do
|
29
|
+
after { FileUtils.rm('/tmp/diligent.html') if File.exists?('/tmp/diligent.html') }
|
30
|
+
|
31
|
+
it 'should put the list in HTML format' do
|
32
|
+
@html = Diligent::List.new.as_html
|
33
|
+
check_html_content @html
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# FIXME: Brittle
|
39
|
+
def check_csv_content(csv_rows)
|
40
|
+
expect(csv_rows.first).to eq(%w{ Gem Version Author Summary Description License Homepage })
|
41
|
+
expect(csv_rows[1].first).to eq ('awesome_print')
|
42
|
+
end
|
43
|
+
|
44
|
+
def check_html_content(html)
|
45
|
+
Nokogiri::HTML(html).tap do |doc|
|
46
|
+
# Nokogiri is too picky for this to work
|
47
|
+
# expect(doc.errors).to be_empty
|
48
|
+
|
49
|
+
expect(doc.children.first.name).to eq('html')
|
50
|
+
|
51
|
+
# Too brittle, again
|
52
|
+
# expect(doc.at('table').children[1].children.first.text).to eq('awesome_print')
|
53
|
+
end
|
54
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>Project '<%= project_name %>'</title>
|
4
|
+
<style>
|
5
|
+
* {
|
6
|
+
box-sizing: border-box;
|
7
|
+
}
|
8
|
+
body {
|
9
|
+
box-sizing: border-box;
|
10
|
+
color: #444;
|
11
|
+
font: 14px/20px normal "Helvetica Neue", Arial, Helvetica, sans-serif;
|
12
|
+
margin: 25px;
|
13
|
+
}
|
14
|
+
h1 {
|
15
|
+
font-weight: 300;
|
16
|
+
font-size: 36px;
|
17
|
+
line-height: 46px;
|
18
|
+
margin: 0;
|
19
|
+
}
|
20
|
+
h2 {
|
21
|
+
color: #999;
|
22
|
+
font-size: 20px;
|
23
|
+
font-weight: normal;
|
24
|
+
line-height: 30px;
|
25
|
+
margin: 0 0 30px;
|
26
|
+
}
|
27
|
+
table {
|
28
|
+
border-collapse: collapse;
|
29
|
+
font-size: 14px;
|
30
|
+
text-align: left;
|
31
|
+
width: 100%;
|
32
|
+
}
|
33
|
+
table tr th {
|
34
|
+
border-bottom: 2px solid #bbb;
|
35
|
+
padding: 6px;
|
36
|
+
}
|
37
|
+
table tr td {
|
38
|
+
border-top: 1px solid #ddd;
|
39
|
+
padding: 6px;
|
40
|
+
}
|
41
|
+
table tr:hover td {
|
42
|
+
background: #f5f5f5;
|
43
|
+
}
|
44
|
+
p {
|
45
|
+
margin: 0;
|
46
|
+
}
|
47
|
+
a.truncate-link {
|
48
|
+
font-size: 11px;
|
49
|
+
}
|
50
|
+
.gem {}
|
51
|
+
.version {}
|
52
|
+
.author { font-size: 12px; }
|
53
|
+
.summary { font-size: 12px; }
|
54
|
+
.description { font-size: 12px; }
|
55
|
+
.license { font-size: 12px; }
|
56
|
+
.url {}
|
57
|
+
</style>
|
58
|
+
</head>
|
59
|
+
|
60
|
+
<body>
|
61
|
+
<h1><%= project_name %></h1>
|
62
|
+
<h2>Dependencies and licensing compiled by <a href="https://github.com/copyhacker/diligent">Diligent</a></h2>
|
63
|
+
<table>
|
64
|
+
<tr>
|
65
|
+
<th>Gem</th>
|
66
|
+
<th>Version</th>
|
67
|
+
<th>Author</th>
|
68
|
+
<th>Summary</th>
|
69
|
+
<th>Description</th>
|
70
|
+
<th>License</th>
|
71
|
+
</tr>
|
72
|
+
|
73
|
+
<% list.each do |gem_name, values| %>
|
74
|
+
<tr id="<%= h gem_name %>">
|
75
|
+
<td class="gem"><a href="<%= values['homepage'] %>"><%= h gem_name %></a></td>
|
76
|
+
<% values.each do |key, val| %>
|
77
|
+
<td class="<%= key %>">
|
78
|
+
<% case key
|
79
|
+
when 'license' %>
|
80
|
+
<a href="<%= Diligent::Info.license_text(val) %>"><%= val %></a>
|
81
|
+
<% when 'summary', 'description' %>
|
82
|
+
<p><%= h val %></p>
|
83
|
+
<% when 'homepage' #NOP %>
|
84
|
+
<% else %>
|
85
|
+
<%= h val %>
|
86
|
+
<% end %>
|
87
|
+
</td>
|
88
|
+
<% end %>
|
89
|
+
</tr>
|
90
|
+
<% end %>
|
91
|
+
</table>
|
92
|
+
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
|
93
|
+
<script>
|
94
|
+
(function(c){function g(b,a){this.element=b;this.options=c.extend({},h,a);c(this.element).data("max-height",this.options.maxHeight);c(this.element).data("height-margin",this.options.heightMargin);delete this.options.maxHeight;if(this.options.embedCSS&&!k){var d=".readmore-js-toggle, .readmore-js-section { "+this.options.sectionCSS+" } .readmore-js-section { overflow: hidden; }",e=document.createElement("style");e.type="text/css";e.styleSheet?e.styleSheet.cssText=d:e.appendChild(document.createTextNode(d));document.getElementsByTagName("head")[0].appendChild(e);k=!0}this._defaults=h;this._name=f;this.init()}var f="readmore",h={speed:100,maxHeight:200,heightMargin:16,moreLink:'<a href="#">Read More</a>',lessLink:'<a href="#">Close</a>',embedCSS:!0,sectionCSS:"display: block; width: 100%;",startOpen:!1,expandedClass:"readmore-js-expanded",collapsedClass:"readmore-js-collapsed",beforeToggle:function(){},afterToggle:function(){}},k=!1;g.prototype={init:function(){var b=this;c(this.element).each(function(){var a=c(this),d=a.css("max-height").replace(/[^-\d\.]/g,"")>a.data("max-height")?a.css("max-height").replace(/[^-\d\.]/g,""):a.data("max-height"),e=a.data("height-margin");"none"!=a.css("max-height")&&a.css("max-height","none");b.setBoxHeight(a);if(a.outerHeight(!0)<=d+e)return!0;a.addClass("readmore-js-section "+b.options.collapsedClass).data("collapsedHeight",d);a.after(c(b.options.startOpen?b.options.lessLink:b.options.moreLink).on("click",function(c){b.toggleSlider(this,a,c)}).addClass("readmore-js-toggle"));b.options.startOpen||a.css({height:d})});c(window).on("resize",function(a){b.resizeBoxes()})},toggleSlider:function(b,a,d){d.preventDefault();var e=this;d=newLink=sectionClass="";var f=!1;d=c(a).data("collapsedHeight");c(a).height()<=d?(d=c(a).data("expandedHeight")+"px",newLink="lessLink",f=!0,sectionClass=e.options.expandedClass):(newLink="moreLink",sectionClass=e.options.collapsedClass);e.options.beforeToggle(b,a,f);c(a).animate({height:d},{duration:e.options.speed,complete:function(){e.options.afterToggle(b,a,f);c(b).replaceWith(c(e.options[newLink]).on("click",function(b){e.toggleSlider(this,a,b)}).addClass("readmore-js-toggle"));c(this).removeClass(e.options.collapsedClass+" "+e.options.expandedClass).addClass(sectionClass)}})},setBoxHeight:function(b){var a=b.clone().css({height:"auto",width:b.width(),overflow:"hidden"}).insertAfter(b),c=a.outerHeight(!0);a.remove();b.data("expandedHeight",c)},resizeBoxes:function(){var b=this;c(".readmore-js-section").each(function(){var a=c(this);b.setBoxHeight(a);(a.height()>a.data("expandedHeight")||a.hasClass(b.options.expandedClass)&&a.height()<a.data("expandedHeight"))&&a.css("height",a.data("expandedHeight"))})},destroy:function(){var b=this;c(this.element).each(function(){var a=c(this);a.removeClass("readmore-js-section "+b.options.collapsedClass+" "+b.options.expandedClass).css({"max-height":"",height:"auto"}).next(".readmore-js-toggle").remove();a.removeData()})}};c.fn[f]=function(b){var a=arguments;if(void 0===b||"object"===typeof b)return this.each(function(){if(c.data(this,"plugin_"+f)){var a=c.data(this,"plugin_"+f);a.destroy.apply(a)}c.data(this,"plugin_"+f,new g(this,b))});if("string"===typeof b&&"_"!==b[0]&&"init"!==b)return this.each(function(){var d=c.data(this,"plugin_"+f);d instanceof g&&"function"===typeof d[b]&&d[b].apply(d,Array.prototype.slice.call(a,1))})}})(jQuery);
|
95
|
+
</script>
|
96
|
+
<script>
|
97
|
+
$(document).ready(function(){
|
98
|
+
$('p').readmore({
|
99
|
+
maxHeight: 15,
|
100
|
+
moreLink: '<a class="truncate-link" href="#">More</a>',
|
101
|
+
lessLink: '<a class="truncate-link" href="#">Less</a>'
|
102
|
+
});
|
103
|
+
});
|
104
|
+
</script>
|
105
|
+
|
106
|
+
</body>
|
107
|
+
</html>
|
metadata
ADDED
@@ -0,0 +1,178 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: diligent
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jonathan Vaught
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-24 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.19'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.19'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: awesome_print
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.2'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.2'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: guard
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.6'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.6'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: guard-rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '4.2'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '4.2'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: nokogiri
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ~>
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.6'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ~>
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.6'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: pry
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ~>
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.9'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.9'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rspec
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ~>
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 3.0.beta
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ~>
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 3.0.beta
|
125
|
+
description: Comb your gems for licensing info and collate it nicely for the lawyers.
|
126
|
+
email: jonathan.vaught@gmail.com
|
127
|
+
executables:
|
128
|
+
- diligent
|
129
|
+
extensions: []
|
130
|
+
extra_rdoc_files: []
|
131
|
+
files:
|
132
|
+
- .gitignore
|
133
|
+
- .travis.yml
|
134
|
+
- Gemfile
|
135
|
+
- Guardfile
|
136
|
+
- LICENSE
|
137
|
+
- README.md
|
138
|
+
- bin/diligent
|
139
|
+
- diligent.gemspec
|
140
|
+
- lib/diligent.rb
|
141
|
+
- lib/diligent/cli.rb
|
142
|
+
- lib/diligent/list.rb
|
143
|
+
- lib/diligent/version.rb
|
144
|
+
- spec/diligent/info_spec.rb
|
145
|
+
- spec/diligent/list_spec.rb
|
146
|
+
- spec/diligent_spec.rb
|
147
|
+
- spec/spec_helper.rb
|
148
|
+
- templates/list.html.erb
|
149
|
+
homepage: https://github.com/copyhacker/diligent
|
150
|
+
licenses:
|
151
|
+
- MIT
|
152
|
+
metadata: {}
|
153
|
+
post_install_message:
|
154
|
+
rdoc_options: []
|
155
|
+
require_paths:
|
156
|
+
- lib
|
157
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - '>='
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '0'
|
162
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
requirements: []
|
168
|
+
rubyforge_project:
|
169
|
+
rubygems_version: 2.2.2
|
170
|
+
signing_key:
|
171
|
+
specification_version: 4
|
172
|
+
summary: Comb your gems for licensing info and collate it nicely for the lawyers.
|
173
|
+
test_files:
|
174
|
+
- spec/diligent/info_spec.rb
|
175
|
+
- spec/diligent/list_spec.rb
|
176
|
+
- spec/diligent_spec.rb
|
177
|
+
- spec/spec_helper.rb
|
178
|
+
has_rdoc:
|