license_auto 0.1.1.2 → 0.1.1.3
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.gitmodules +3 -0
- data/.travis.yml +9 -2
- data/README.md +10 -8
- data/lib/license_auto/exceptions.rb +10 -0
- data/lib/license_auto/license/frequency.rb +1 -1
- data/lib/license_auto/license/readme.rb +21 -2
- data/lib/license_auto/license/similarity.rb +4 -3
- data/lib/license_auto/license_info_wrapper.rb +16 -0
- data/lib/license_auto/matcher.rb +14 -4
- data/lib/license_auto/package.rb +29 -15
- data/lib/license_auto/package_manager.rb +6 -2
- data/lib/license_auto/package_manager/bundler.rb +10 -6
- data/lib/license_auto/package_manager/gemfury.rb +2 -0
- data/lib/license_auto/package_manager/git_module.rb +73 -0
- data/lib/license_auto/package_manager/golang.rb +155 -0
- data/lib/license_auto/package_manager/gradle.rb +145 -0
- data/lib/license_auto/package_manager/maven.rb +133 -0
- data/lib/license_auto/package_manager/npm.rb +117 -1
- data/lib/license_auto/package_manager/pip.rb +8 -2
- data/lib/license_auto/repo.rb +51 -3
- data/lib/license_auto/source_code_server.rb +13 -0
- data/lib/license_auto/var/golang_std_libs.rb +160 -0
- data/lib/license_auto/version.rb +1 -1
- data/lib/license_auto/website.rb +1 -0
- data/lib/license_auto/website/cocoapods_org.rb +10 -0
- data/lib/license_auto/website/github_com.rb +43 -18
- data/lib/license_auto/website/homepage_spider.rb +56 -0
- data/lib/license_auto/website/maven_central_repository.rb +258 -0
- data/lib/license_auto/website/npm_registry.rb +178 -0
- data/lib/license_auto/website/ruby_gems_org.rb +119 -8
- data/license_auto.gemspec +1 -0
- data/package.json +30 -0
- metadata +25 -40
- data/lib/license_auto/package_manager/golang_stdlibs.rb +0 -161
- data/remove/api.rb +0 -60
- data/remove/api/bitbucket.rb +0 -142
- data/remove/api/code_google_com.rb +0 -66
- data/remove/api/excel_export.rb +0 -189
- data/remove/api/gem_data.rb +0 -30
- data/remove/api/git_kernel_org.rb +0 -59
- data/remove/api/github.rb +0 -376
- data/remove/api/go_pkg_in.rb +0 -41
- data/remove/api/golang_org.rb +0 -63
- data/remove/api/google_source_com.rb +0 -68
- data/remove/api/gradle2.rb +0 -41
- data/remove/api/helper.rb +0 -26
- data/remove/api/j_center.rb +0 -23
- data/remove/api/maven_central_repository.rb +0 -192
- data/remove/api/mq.rb +0 -30
- data/remove/api/npm_registry.rb +0 -169
- data/remove/api/pattern.rb +0 -33
- data/remove/api/remote_source_package.rb +0 -319
- data/remove/api/spider.rb +0 -47
- data/remove/cloner.rb +0 -154
- data/remove/db.rb +0 -267
- data/remove/license_auto +0 -4
- data/remove/misc.rb +0 -131
- data/remove/mq_pack.rb +0 -219
- data/remove/mq_repo.rb +0 -106
- data/remove/parser/gemfile_parser.rb +0 -221
- data/remove/parser/golang_parser.rb +0 -104
- data/remove/parser/gradle_parser.rb +0 -141
- data/remove/parser/manifest_parser.rb +0 -66
- data/remove/parser/maven_parser.rb +0 -91
- data/remove/parser/npm_parser.rb +0 -82
- data/remove/parser/pip_parser.rb +0 -1
- data/remove/parser/rebar_parser.rb +0 -61
- data/remove/recorder.rb +0 -184
- data/remove/script/apt-get.deps.sh +0 -37
- data/remove/script/debian_dpkg_list.sh +0 -2
- data/remove/script/rubygems.org.importdb.sh +0 -22
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 25e8473c8a7057ec658e75dc3118b48f0927c6de
|
|
4
|
+
data.tar.gz: fb83bc24a7e8d4e38708f6a5b8d7bec826b3a599
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: eb3dafb0555ff74d75139208e68dd942e5d3fb1fc23661cc13bcdfc489cc479bff9dec9306c9827558fee739dd1a218f9b3528dced0a089ed732873216be355f
|
|
7
|
+
data.tar.gz: 7f171ed8fcf9d9313b56dddffc04e868445ae375b9b98c7d25b5d02f6b2da8bb595da5c94243382ffa606e5000738740cfd300f5a604d59ed11a26d874d9ffab
|
data/.gitignore
CHANGED
data/.gitmodules
ADDED
data/.travis.yml
CHANGED
data/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
# license_auto
|
|
1
|
+
# license_auto
|
|
2
2
|
|
|
3
|
-

|
|
4
|
+
[](https://badge.fury.io/rb/license_auto)
|
|
4
5
|
[](https://codeclimate.com/github/mineworks/license_auto)
|
|
5
6
|
[](https://travis-ci.org/mineworks/license_auto)
|
|
6
7
|
|
|
@@ -21,21 +22,21 @@
|
|
|
21
22
|
<td>Gemfile(.lock)</td>
|
|
22
23
|
<td>https://rubygems.org/</td>
|
|
23
24
|
<!-- <td> https://rubygems.org/pages/data</td> -->
|
|
24
|
-
<td>
|
|
25
|
+
<td>70</td>
|
|
25
26
|
</tr>
|
|
26
27
|
<tr>
|
|
27
28
|
<td>Java</td>
|
|
28
29
|
<td>Gradle, Maven</td>
|
|
29
30
|
<td>build.gradle, pom.xml</td>
|
|
30
31
|
<td>https://repo1.maven.org/maven2</td>
|
|
31
|
-
<td>
|
|
32
|
+
<td>100</td>
|
|
32
33
|
</tr>
|
|
33
34
|
<tr>
|
|
34
35
|
<td>NodeJS</td>
|
|
35
36
|
<td>npm</td>
|
|
36
37
|
<td>package.json</td>
|
|
37
38
|
<td>http://registry.npmjs.org</td>
|
|
38
|
-
<td>
|
|
39
|
+
<td>100</td>
|
|
39
40
|
</tr>
|
|
40
41
|
<tr>
|
|
41
42
|
<td>Debian</td>
|
|
@@ -49,7 +50,7 @@
|
|
|
49
50
|
<td>go list -json ./...</td>
|
|
50
51
|
<td></td>
|
|
51
52
|
<td></td>
|
|
52
|
-
<td>
|
|
53
|
+
<td>50</td>
|
|
53
54
|
</tr>
|
|
54
55
|
<tr>
|
|
55
56
|
<td>Python</td>
|
|
@@ -75,9 +76,10 @@
|
|
|
75
76
|
* Gradle v2.9
|
|
76
77
|
* Maven v3.x
|
|
77
78
|
* Rebar v2.6.1
|
|
78
|
-
*
|
|
79
|
+
* NodeJS v5.7.0+
|
|
80
|
+
* npm v3.6.0
|
|
79
81
|
* Python pip v1.5.6
|
|
80
|
-
*
|
|
82
|
+
* golang v1.6
|
|
81
83
|
|
|
82
84
|
## Install
|
|
83
85
|
``` bash
|
|
@@ -20,6 +20,16 @@ module LicenseAuto
|
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
+
class SourceURLNotFound < LicenseAutoError
|
|
24
|
+
def initialize(message=nil, server=nil)
|
|
25
|
+
@message = message
|
|
26
|
+
@server = server
|
|
27
|
+
end
|
|
28
|
+
def message
|
|
29
|
+
"Package #{@message} can not be found in server #{@server}"
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
23
33
|
class VirtualMethodError < RuntimeError
|
|
24
34
|
##
|
|
25
35
|
# Just call to super with some fancy message.
|
|
@@ -14,12 +14,19 @@ module LicenseAuto
|
|
|
14
14
|
attr_reader :license_content
|
|
15
15
|
|
|
16
16
|
def initialize(filename, content)
|
|
17
|
+
@content = content.encode('UTF-8', :invalid => :replace, :undef => :replace)
|
|
17
18
|
impl = formator(filename)
|
|
18
|
-
@license_content =
|
|
19
|
+
@license_content =
|
|
20
|
+
if impl.nil?
|
|
21
|
+
LicenseAuto.info("Unknown readme format: #{filename}, returned full-text instead")
|
|
22
|
+
@content
|
|
23
|
+
else
|
|
24
|
+
impl.cut_license(@content)
|
|
25
|
+
end
|
|
19
26
|
end
|
|
20
27
|
|
|
21
28
|
def extensions
|
|
22
|
-
[Markdown]
|
|
29
|
+
[Markdown, RDoc]
|
|
23
30
|
end
|
|
24
31
|
|
|
25
32
|
def formator(filename)
|
|
@@ -40,4 +47,16 @@ module LicenseAuto
|
|
|
40
47
|
end
|
|
41
48
|
end
|
|
42
49
|
end
|
|
50
|
+
|
|
51
|
+
class RDoc
|
|
52
|
+
FILE_EXTENSION = /\.rdoc$/i
|
|
53
|
+
PATTERN = /(?<text>^==\s*(license|copy|copying)(.*\n*)*)($|(?=\n^==))/i
|
|
54
|
+
|
|
55
|
+
def self.cut_license(content)
|
|
56
|
+
matched = PATTERN.match(content)
|
|
57
|
+
if matched
|
|
58
|
+
matched[:text]
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
43
62
|
end
|
|
@@ -10,7 +10,8 @@ module LicenseAuto
|
|
|
10
10
|
SIM_RATIO = 0.85
|
|
11
11
|
|
|
12
12
|
def initialize(license_content)
|
|
13
|
-
|
|
13
|
+
@license_content = license_content.encode('UTF-8', :invalid => :replace, :undef => :replace)
|
|
14
|
+
# LicenseAuto.logger.debug("\n#{@license_content}")
|
|
14
15
|
@license_template_documents =
|
|
15
16
|
LICENSE_SORTED_FREQUENCY.reject {|template_name|
|
|
16
17
|
abs_filename_path(template_name).nil?
|
|
@@ -19,7 +20,7 @@ module LicenseAuto
|
|
|
19
20
|
TfIdfSimilarity::Document.new(File.read(abs_file))
|
|
20
21
|
}.compact
|
|
21
22
|
@license_template_documents.push(
|
|
22
|
-
TfIdfSimilarity::Document.new(license_content)
|
|
23
|
+
TfIdfSimilarity::Document.new(@license_content)
|
|
23
24
|
)
|
|
24
25
|
model = TfIdfSimilarity::TfIdfModel.new(@license_template_documents)
|
|
25
26
|
@matrix = model.similarity_matrix
|
|
@@ -49,7 +50,7 @@ module LicenseAuto
|
|
|
49
50
|
|
|
50
51
|
license_name = LICENSE_SORTED_FREQUENCY[sim_license_index]
|
|
51
52
|
|
|
52
|
-
debug = "License: #{license_name}, Ratio: #{max_sim_ratio}"
|
|
53
|
+
debug = "License: #{license_name}, Ratio: #{max_sim_ratio}, license_content:\n #{@license_content[0..70]}..."
|
|
53
54
|
LicenseAuto.logger.debug(debug)
|
|
54
55
|
|
|
55
56
|
[license_name, max_sim_ratio]
|
|
@@ -3,12 +3,28 @@ require 'hashie/mash'
|
|
|
3
3
|
|
|
4
4
|
module LicenseAuto
|
|
5
5
|
|
|
6
|
+
|
|
7
|
+
class PackWrapper < Hashie::Dash
|
|
8
|
+
include Hashie::Extensions::Mash
|
|
9
|
+
|
|
10
|
+
property :pack_id
|
|
11
|
+
property :homepage, default: nil
|
|
12
|
+
property :project_url, default: nil
|
|
13
|
+
property :source_url, default: nil
|
|
14
|
+
property :cmt, default: nil
|
|
15
|
+
end
|
|
16
|
+
|
|
6
17
|
class LicenseInfoWrapper < Hashie::Dash
|
|
7
18
|
include Hashie::Extensions::Mash
|
|
19
|
+
include Hashie::Extensions::Coercion
|
|
8
20
|
|
|
9
21
|
property :licenses, default: []
|
|
10
22
|
property :readmes, default: []
|
|
11
23
|
property :notices, default: []
|
|
24
|
+
property :cmt, default: nil
|
|
25
|
+
property :pack
|
|
26
|
+
|
|
27
|
+
coerce_key :pack, PackWrapper
|
|
12
28
|
|
|
13
29
|
end
|
|
14
30
|
|
data/lib/license_auto/matcher.rb
CHANGED
|
@@ -25,11 +25,15 @@ module LicenseAuto
|
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def match_github_resource()
|
|
28
|
-
|
|
28
|
+
github_resource.match(@url)
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
def match_bitbucket_resource
|
|
32
|
-
|
|
32
|
+
github_resource.match(@url)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def match_maven_default_central
|
|
36
|
+
maven_default_central_resource.match(@url)
|
|
33
37
|
end
|
|
34
38
|
|
|
35
39
|
private
|
|
@@ -37,12 +41,16 @@ module LicenseAuto
|
|
|
37
41
|
##
|
|
38
42
|
# vcs: Version Control System
|
|
39
43
|
|
|
44
|
+
def maven_default_central_resource
|
|
45
|
+
/repo1\.maven\.org\/maven2/
|
|
46
|
+
end
|
|
47
|
+
|
|
40
48
|
# FIXME: @Cissy
|
|
41
49
|
def github_resource
|
|
42
50
|
# /(git\+)?(?<protocol>(http[s]?|git))(:\/\/|@)(?<host>(www\.)?github\.com)(\/|:)(?<owner>.+)\/(?<repo>[^\/.]+)(?<vcs>\.git)?/
|
|
43
51
|
/(git\+)?
|
|
44
|
-
(?<protocol>(http[s]?|git))
|
|
45
|
-
(:\/\/|@)
|
|
52
|
+
(?<protocol>(http[s]?|git))?
|
|
53
|
+
(:\/\/|@)?
|
|
46
54
|
(?<host>(www\.)?github\.com)
|
|
47
55
|
(\/|:)
|
|
48
56
|
(?<owner>.+)\/
|
|
@@ -90,7 +98,9 @@ module LicenseAuto
|
|
|
90
98
|
##
|
|
91
99
|
# git ref: commit hash/branch/tag
|
|
92
100
|
def match_the_ref(ref)
|
|
101
|
+
# LicenseAuto.logger.debug(ref)
|
|
93
102
|
version_pattern = /[vV]?#{@name.gsub(/\./, '\.').gsub(/\//, '\/')}$/i
|
|
103
|
+
# LicenseAuto.logger.debug(version_pattern)
|
|
94
104
|
version_pattern.match(ref)
|
|
95
105
|
end
|
|
96
106
|
|
data/lib/license_auto/package.rb
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
require 'hashie/mash'
|
|
2
2
|
|
|
3
|
+
require 'license_auto/matcher'
|
|
3
4
|
require 'license_auto/website/ruby_gems_org'
|
|
4
5
|
require 'license_auto/website/gemfury_com'
|
|
5
6
|
require 'license_auto/website/github_com'
|
|
7
|
+
require 'license_auto/website/npm_registry'
|
|
8
|
+
require 'license_auto/website/maven_central_repository'
|
|
6
9
|
|
|
7
10
|
|
|
8
11
|
module LicenseAuto
|
|
9
12
|
|
|
10
|
-
##
|
|
11
13
|
# Package: {
|
|
12
14
|
# language: 'Ruby', # Ruby|Golang|Java|NodeJS|Erlang|Python|
|
|
13
15
|
# name: 'bundler',
|
|
@@ -19,20 +21,21 @@ module LicenseAuto
|
|
|
19
21
|
class Package < Hashie::Mash
|
|
20
22
|
extend LicenseAuto
|
|
21
23
|
|
|
22
|
-
##
|
|
23
24
|
# Default project server of all kinds of languages.
|
|
24
25
|
#
|
|
25
26
|
# Key: language name
|
|
26
27
|
#
|
|
27
28
|
# Value: default project server
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
Ruby: RubyGemsOrg
|
|
30
|
+
PACKAGE_SERVERS = {
|
|
31
|
+
Ruby: RubyGemsOrg,
|
|
32
|
+
NodeJS: NpmRegistry,
|
|
33
|
+
GitModule: GithubCom
|
|
34
|
+
# TODO: add many server, eg. http://gopkg.in
|
|
31
35
|
}
|
|
32
36
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
GemfuryCom,
|
|
37
|
+
SOURCE_CODE_SERVERS = [
|
|
38
|
+
# GemfuryCom,
|
|
36
39
|
GithubCom,
|
|
37
40
|
]
|
|
38
41
|
|
|
@@ -85,18 +88,16 @@ module LicenseAuto
|
|
|
85
88
|
# ]
|
|
86
89
|
# }
|
|
87
90
|
def get_license_info()
|
|
91
|
+
@server.get_license_info if chose_package_server
|
|
88
92
|
|
|
89
93
|
# args = {
|
|
90
94
|
# fetch_license_text: true
|
|
91
95
|
# }.merge(args)
|
|
92
96
|
|
|
93
|
-
@server.get_license_info if chose_package_server
|
|
94
|
-
|
|
95
97
|
# TODO: uncomment these line, add Google or Yahoo!
|
|
96
98
|
# if @server.nil?
|
|
97
99
|
# @server.get_license_info if chose_search_engine
|
|
98
100
|
# end
|
|
99
|
-
|
|
100
101
|
end
|
|
101
102
|
|
|
102
103
|
private
|
|
@@ -104,11 +105,24 @@ module LicenseAuto
|
|
|
104
105
|
def chose_package_server()
|
|
105
106
|
begin
|
|
106
107
|
@server =
|
|
107
|
-
if self.server
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
108
|
+
if self.language == 'Golang' and self.server
|
|
109
|
+
matcher = Matcher::SourceURL.new(self.server)
|
|
110
|
+
github_matched = matcher.match_github_resource
|
|
111
|
+
if github_matched
|
|
112
|
+
GithubCom.new(self, github_matched[:owner], github_matched[:repo])
|
|
113
|
+
else
|
|
114
|
+
LicenseAuto.logger.fatal("Golang server: #{self.server} should be supported!")
|
|
115
|
+
end
|
|
116
|
+
elsif self.language == 'Java' # and self.server
|
|
117
|
+
matcher = Matcher::SourceURL.new(self.server)
|
|
118
|
+
maven_default_matched = matcher.match_maven_default_central
|
|
119
|
+
if maven_default_matched
|
|
120
|
+
LicenseAuto::MavenCentralRepository.new(self.group, self.name, self.version)
|
|
121
|
+
else
|
|
122
|
+
LicenseAuto.logger.fatal("Maven server: #{self.server} should be supported!")
|
|
123
|
+
end
|
|
124
|
+
elsif self.server
|
|
125
|
+
PACKAGE_SERVERS.fetch(self.language.to_sym).new(self)
|
|
112
126
|
end
|
|
113
127
|
rescue KeyError => e
|
|
114
128
|
LicenseAuto.logger.fatal("#{e}")
|
|
@@ -4,11 +4,12 @@ require 'license_auto/logger'
|
|
|
4
4
|
require 'license_auto/module'
|
|
5
5
|
|
|
6
6
|
module LicenseAuto
|
|
7
|
-
class
|
|
7
|
+
class PackageManager
|
|
8
8
|
|
|
9
9
|
virtual :initialize,
|
|
10
10
|
:parse_dependencies,
|
|
11
|
-
:dependency_file_pattern
|
|
11
|
+
:dependency_file_pattern,
|
|
12
|
+
:check_cli
|
|
12
13
|
|
|
13
14
|
# def self.package_managers
|
|
14
15
|
# [Bundler, NPM, Pip, Bower, Maven, Gradle, CocoaPods, Rebar, Nuget]
|
|
@@ -28,6 +29,9 @@ module LicenseAuto
|
|
|
28
29
|
# @return Array[Regexp]
|
|
29
30
|
def dependency_file_pattern; end
|
|
30
31
|
|
|
32
|
+
# return Boolean
|
|
33
|
+
def check_cli; end
|
|
34
|
+
|
|
31
35
|
def dependency_file_path_names(pattern=dependency_file_pattern)
|
|
32
36
|
if FileTest.directory?(@path)
|
|
33
37
|
Find.find(@path).select do |filename|
|
|
@@ -4,7 +4,7 @@ require 'license_auto/website/ruby_gems_org'
|
|
|
4
4
|
# require 'license_auto/package_manager/gemfury'
|
|
5
5
|
|
|
6
6
|
module LicenseAuto
|
|
7
|
-
class Bundler < LicenseAuto::
|
|
7
|
+
class Bundler < LicenseAuto::PackageManager
|
|
8
8
|
|
|
9
9
|
LANGUAGE = 'Ruby'
|
|
10
10
|
|
|
@@ -13,11 +13,11 @@ module LicenseAuto
|
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def dependency_file_pattern
|
|
16
|
-
/#{@path}\/gem.*\.lock$/i
|
|
16
|
+
/#{@path}\/[0-9a-zA-Z_.]*gem.*\.lock$/i
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def gemfile_pattern
|
|
20
|
-
|
|
20
|
+
/#{@path}\/[0-9a-zA-Z_.]*gemfile$/i
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def parse_dependencies
|
|
@@ -30,13 +30,12 @@ module LicenseAuto
|
|
|
30
30
|
|
|
31
31
|
lock_files = dependency_file_path_names
|
|
32
32
|
if lock_files.empty?
|
|
33
|
-
LicenseAuto.logger.info("
|
|
33
|
+
LicenseAuto.logger.info("#{LANGUAGE}: #{dependency_file_pattern} file not exist")
|
|
34
34
|
gem_files = dependency_file_path_names(pattern=gemfile_pattern)
|
|
35
35
|
# TODO: parse gem_files
|
|
36
36
|
unless gem_files.empty?
|
|
37
|
-
LicenseAuto.logger.
|
|
37
|
+
LicenseAuto.logger.warn("#{LANGUAGE}: Gemfile exisit: #{gem_files}")
|
|
38
38
|
end
|
|
39
|
-
|
|
40
39
|
return []
|
|
41
40
|
else
|
|
42
41
|
lock_files.map {|dep_file|
|
|
@@ -83,5 +82,10 @@ module LicenseAuto
|
|
|
83
82
|
end
|
|
84
83
|
# LicenseAuto.logger.debug(JSON.pretty_generate(dep_files))
|
|
85
84
|
end
|
|
85
|
+
|
|
86
|
+
def self.check_cli
|
|
87
|
+
# TODO check bundle
|
|
88
|
+
true
|
|
89
|
+
end
|
|
86
90
|
end
|
|
87
91
|
end
|