nod 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/nod.rb +42 -18
- data/lib/nod/license_hunch.rb +4 -2
- metadata +1 -1
data/lib/nod.rb
CHANGED
@@ -4,6 +4,7 @@ require 'nod/git_cloner'
|
|
4
4
|
require 'nod/license_hunch'
|
5
5
|
require 'nod/bundle_parser'
|
6
6
|
require 'fileutils'
|
7
|
+
require 'open-uri'
|
7
8
|
|
8
9
|
class Nod
|
9
10
|
|
@@ -18,39 +19,62 @@ class Nod
|
|
18
19
|
url = @gem_savvy.git_clone_url name
|
19
20
|
report = {}
|
20
21
|
|
22
|
+
tmp_dir = "#{@basedir}/#{name}"
|
21
23
|
if !url.nil?
|
22
|
-
tmp_dir = "#{@basedir}/#{name}"
|
23
24
|
successful_clone = @git_cloner.clone_url url, tmp_dir
|
24
25
|
if successful_clone && File.exists?(tmp_dir)
|
25
26
|
files_in_repo = Dir.entries(tmp_dir)
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
readme = files_in_repo.select { |file_name| file_name if file_name =~ /readme/i }
|
34
|
-
if !readme.nil? && readme.size > 0
|
35
|
-
# puts "\n\ngoing readme route with #{readme}"
|
36
|
-
license_type = LicenseHunch.determine_license_from_file readme[0], tmp_dir #File.expand_path(File.dirname(__FILE__) + "/../#{tmp_dir}")
|
37
|
-
# puts "got? #{license_type}"
|
38
|
-
report = {:gem_name => name, :gem_home_page => @gem_savvy.gem_home(name), :gem_source_url => url, :gem_license => license_type}
|
27
|
+
licenses_files = files_in_repo.select { |file_name| file_name if (file_name =~ /license/i || file_name =~ /readme/i || file_name =~ /copying/i)}
|
28
|
+
if !licenses_files.nil? && licenses_files.size > 0
|
29
|
+
licenses_files.each do | file |
|
30
|
+
license_type = LicenseHunch.determine_license_from_file file, tmp_dir
|
31
|
+
unless license_type.nil?
|
32
|
+
return get_report name, url, license_type
|
33
|
+
end
|
39
34
|
end
|
35
|
+
report = get_report name, url, 'Unknown'
|
36
|
+
else
|
37
|
+
report = get_report name, url, 'Unknown'
|
40
38
|
end
|
41
|
-
|
39
|
+
else
|
42
40
|
# TODO handle this
|
43
41
|
puts "in else? file didn't exist? gem is #{name}"
|
44
42
|
end #file exists
|
45
43
|
else
|
46
44
|
info = @gem_savvy.info_for(name)
|
47
|
-
|
48
|
-
report = {:gem_name => name, :gem_home_page => info['homepage_uri'], :gem_source_url => info['source_code_uri'], :gem_license =>
|
45
|
+
license_type = get_license_from_home_page info['homepage_uri'], tmp_dir
|
46
|
+
report = {:gem_name => name, :gem_home_page => info['homepage_uri'], :gem_source_url => info['source_code_uri'], :gem_license => license_type }
|
49
47
|
end
|
50
|
-
# puts "returning report for gem #{name} -> #{report}"
|
51
48
|
return report
|
52
49
|
end
|
53
50
|
|
51
|
+
def get_license_from_home_page(web_page, tmp_dir)
|
52
|
+
|
53
|
+
if web_page.nil?
|
54
|
+
return nil
|
55
|
+
end
|
56
|
+
|
57
|
+
unless web_page.start_with?('http://')
|
58
|
+
web_page = "http://#{web_page}"
|
59
|
+
end
|
60
|
+
|
61
|
+
license_type = 'Cannot determine'
|
62
|
+
unless web_page.nil?
|
63
|
+
unless Dir.exists?(tmp_dir)
|
64
|
+
Dir.mkdir tmp_dir
|
65
|
+
end
|
66
|
+
File.open("#{tmp_dir}/webpage_source", 'w') do |file|
|
67
|
+
file << open(web_page).read
|
68
|
+
end
|
69
|
+
license_type = LicenseHunch.determine_license_from_file 'webpage_source', tmp_dir
|
70
|
+
end
|
71
|
+
license_type
|
72
|
+
end
|
73
|
+
|
74
|
+
def get_report(gem_name, url, license_type)
|
75
|
+
{:gem_name => gem_name, :gem_home_page => @gem_savvy.gem_home(gem_name), :gem_source_url => url, :gem_license => license_type}
|
76
|
+
end
|
77
|
+
|
54
78
|
def get_licenses_for(gemfile_path)
|
55
79
|
parser = BundleParser.new(gemfile_path)
|
56
80
|
all_names = parser.gem_names
|
data/lib/nod/license_hunch.rb
CHANGED
@@ -11,7 +11,9 @@ class LicenseHunch
|
|
11
11
|
file_path = "#{base_path}/#{license_name}"
|
12
12
|
is_mit_lic = false
|
13
13
|
File.open(file_path, 'r').each_line do | line |
|
14
|
-
|
14
|
+
# puts "line is #{line}"
|
15
|
+
return 'MIT' if (line =~ /MIT License/i || line =~ /MIT/i || line =~ /mit-license/i)
|
16
|
+
return 'Ruby License' if (line =~ /Ruby license/i)
|
15
17
|
end
|
16
18
|
|
17
19
|
all_text = File.open(file_path).read.gsub(/\n/,' ')
|
@@ -23,7 +25,7 @@ class LicenseHunch
|
|
23
25
|
phrase_5 = "distribute, sublicense"
|
24
26
|
return 'MIT' if (all_text =~ /#{phrase_1}/i && all_text =~ /#{phrase_2}/i && all_text =~ /#{phrase_3}/i && all_text =~ /#{phrase_4}/ && all_text =~ /#{phrase_5}/ )
|
25
27
|
|
26
|
-
return
|
28
|
+
return nil
|
27
29
|
|
28
30
|
end
|
29
31
|
|