license_auto 0.1.1.1 → 0.1.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -2
- data/Gemfile +9 -1
- data/Gemfile.lock +27 -0
- data/README.md +14 -18
- data/Rakefile +5 -5
- data/examples/get_license_files_of_bundler.rb +1 -1
- data/lib/license_auto/config/config.rb +37 -51
- data/lib/license_auto/config/sample.config.yml +20 -0
- data/lib/license_auto/exceptions.rb +32 -0
- data/lib/license_auto/license/frequency.rb +1 -1
- data/lib/license_auto/license/readme.rb +43 -0
- data/lib/license_auto/license/similarity.rb +43 -231
- data/lib/license_auto/license/templates/PerlArtistic.txt +1 -0
- data/lib/license_auto/license_info_wrapper.rb +28 -0
- data/lib/license_auto/logger.rb +27 -0
- data/lib/license_auto/{errors.rb → misc.rb} +0 -0
- data/lib/license_auto/module.rb +17 -0
- data/lib/license_auto/package.rb +65 -10
- data/lib/license_auto/package_manager/apt.rb +2 -0
- data/lib/license_auto/package_manager/bower.rb +2 -0
- data/lib/license_auto/package_manager/bundler.rb +87 -0
- data/lib/license_auto/package_manager/gemfury.rb +39 -0
- data/lib/license_auto/{parser → package_manager}/golang.rb +0 -0
- data/lib/{parser/enums.rb → license_auto/package_manager/golang_stdlibs.rb} +1 -1
- data/lib/license_auto/{parser → package_manager}/gradle.rb +0 -0
- data/lib/license_auto/package_manager/ivy.rb +1 -0
- data/lib/license_auto/{parser/gemfile.rb → package_manager/license_header.rb} +0 -0
- data/lib/license_auto/package_manager/maven.rb +0 -0
- data/lib/license_auto/package_manager/npm.rb +2 -0
- data/lib/license_auto/package_manager/phar.rb +3 -0
- data/lib/license_auto/package_manager/pip.rb +2 -0
- data/lib/license_auto/package_manager/yum.rb +2 -0
- data/lib/license_auto/package_manager.rb +41 -0
- data/lib/license_auto/repo.rb +79 -0
- data/lib/license_auto/version.rb +1 -1
- data/lib/license_auto/website/gemfury_com.rb +10 -0
- data/lib/license_auto/website/github_com.rb +179 -0
- data/lib/license_auto/website/ruby_gems_org.rb +17 -4
- data/lib/license_auto.rb +6 -11
- data/license_auto.gemspec +7 -2
- data/{lib → remove}/api/bitbucket.rb +0 -0
- data/{lib → remove}/api/code_google_com.rb +0 -0
- data/{lib → remove}/api/excel_export.rb +0 -0
- data/{lib → remove}/api/gem_data.rb +0 -0
- data/{lib → remove}/api/git_kernel_org.rb +0 -0
- data/{lib → remove}/api/github.rb +0 -0
- data/{lib → remove}/api/go_pkg_in.rb +0 -0
- data/{lib → remove}/api/golang_org.rb +0 -0
- data/{lib → remove}/api/google_source_com.rb +0 -0
- data/{lib → remove}/api/gradle2.rb +0 -0
- data/{lib → remove}/api/helper.rb +0 -0
- data/{lib → remove}/api/j_center.rb +0 -0
- data/{lib → remove}/api/maven_central_repository.rb +0 -0
- data/{lib → remove}/api/mq.rb +0 -0
- data/{lib → remove}/api/npm_registry.rb +0 -0
- data/{lib → remove}/api/pattern.rb +0 -0
- data/{lib → remove}/api/remote_source_package.rb +0 -0
- data/{lib → remove}/api/spider.rb +0 -0
- data/{lib → remove}/api.rb +0 -0
- data/{lib → remove}/cloner.rb +1 -1
- data/{lib → remove}/db.rb +0 -0
- data/{lib → remove}/misc.rb +0 -0
- data/{lib → remove}/parser/gemfile_parser.rb +0 -0
- data/{lib → remove}/parser/golang_parser.rb +1 -1
- data/{lib → remove}/parser/gradle_parser.rb +0 -0
- data/{lib → remove}/parser/manifest_parser.rb +0 -0
- data/{lib → remove}/parser/maven_parser.rb +0 -0
- data/{lib → remove}/parser/npm_parser.rb +0 -0
- data/{lib → remove}/parser/pip_parser.rb +0 -0
- data/{lib → remove}/parser/rebar_parser.rb +0 -0
- data/{lib → remove}/recorder.rb +0 -0
- data/{lib → remove}/script/apt-get.deps.sh +0 -0
- data/{lib → remove}/script/debian_dpkg_list.sh +0 -0
- data/{lib → remove}/script/rubygems.org.importdb.sh +0 -0
- metadata +103 -52
- data/lib/license_auto/license_info.rb +0 -12
- data/lib/license_auto/website/github.rb +0 -49
- data/lib/message.rb +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 28221a5f886be66f2e736ea91fb80c9ea928463b
|
4
|
+
data.tar.gz: 3ad528e4241d9e8fc365784d40977308a8b92bfe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 730d2a75e553e42632645a2165773a71bcd6f2b868c2149a2a2d2ad8f541a1e626062d0a21be80334fd66303d8b85112ecfa3778ab720ccf6ed45317797ceff2
|
7
|
+
data.tar.gz: 69a29cfa34ba61d4667fd369925e4b020737f6c8827fd09845bc03a407cb354d7913fc5ac862f2d1c689d7969cd7243ffeecff22a5e449aa7c6f1a41c61e53f8
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -5,6 +5,8 @@ group :default do
|
|
5
5
|
gem "json"
|
6
6
|
gem "gems"
|
7
7
|
gem "github_api"
|
8
|
+
# gem "octokit", "~> 4.0"
|
9
|
+
gem 'tf-idf-similarity', '~> 0.1.5'
|
8
10
|
|
9
11
|
gem "git"
|
10
12
|
gem "log4r"
|
@@ -19,9 +21,15 @@ group :default do
|
|
19
21
|
end
|
20
22
|
|
21
23
|
group :test do
|
22
|
-
gem "json"
|
23
24
|
gem "rspec"
|
24
25
|
gem 'webmock'
|
26
|
+
gem "rubocop"
|
27
|
+
# TODO: simplecov, generate HTML
|
28
|
+
gem 'simplecov'
|
29
|
+
# gem 'mina-puma', :git => 'https://github.com/sandelius/mina-puma.git'
|
25
30
|
end
|
26
31
|
|
32
|
+
group :development do
|
33
|
+
gem "rake"
|
34
|
+
end
|
27
35
|
|
data/Gemfile.lock
CHANGED
@@ -5,11 +5,13 @@ GEM
|
|
5
5
|
anemone (0.7.2)
|
6
6
|
nokogiri (>= 1.3.0)
|
7
7
|
robotex (>= 1.0.0)
|
8
|
+
ast (2.2.0)
|
8
9
|
crack (0.4.3)
|
9
10
|
safe_yaml (~> 1.0.0)
|
10
11
|
descendants_tracker (0.0.4)
|
11
12
|
thread_safe (~> 0.3, >= 0.3.1)
|
12
13
|
diff-lcs (1.2.5)
|
14
|
+
docile (1.1.5)
|
13
15
|
domain_name (0.5.20160216)
|
14
16
|
unf (>= 0.0.5, < 1.0.0)
|
15
17
|
faraday (0.9.2)
|
@@ -49,7 +51,12 @@ GEM
|
|
49
51
|
multi_json (~> 1.3)
|
50
52
|
multi_xml (~> 0.5)
|
51
53
|
rack (>= 1.2, < 3)
|
54
|
+
parser (2.3.0.6)
|
55
|
+
ast (~> 2.2)
|
56
|
+
powerpack (0.1.1)
|
52
57
|
rack (1.6.4)
|
58
|
+
rainbow (2.1.0)
|
59
|
+
rake (10.5.0)
|
53
60
|
rest-client (1.8.0)
|
54
61
|
http-cookie (>= 1.0.2, < 2.0)
|
55
62
|
mime-types (>= 1.16, < 3.0)
|
@@ -68,14 +75,30 @@ GEM
|
|
68
75
|
diff-lcs (>= 1.2.0, < 2.0)
|
69
76
|
rspec-support (~> 3.4.0)
|
70
77
|
rspec-support (3.4.1)
|
78
|
+
rubocop (0.38.0)
|
79
|
+
parser (>= 2.3.0.6, < 3.0)
|
80
|
+
powerpack (~> 0.1)
|
81
|
+
rainbow (>= 1.99.1, < 3.0)
|
82
|
+
ruby-progressbar (~> 1.7)
|
83
|
+
unicode-display_width (~> 1.0, >= 1.0.1)
|
84
|
+
ruby-progressbar (1.7.5)
|
71
85
|
ruby-xz (0.2.3)
|
72
86
|
ffi (~> 1.9)
|
73
87
|
io-like (~> 0.3)
|
74
88
|
safe_yaml (1.0.4)
|
89
|
+
simplecov (0.11.2)
|
90
|
+
docile (~> 1.1.0)
|
91
|
+
json (~> 1.8)
|
92
|
+
simplecov-html (~> 0.10.0)
|
93
|
+
simplecov-html (0.10.0)
|
94
|
+
tf-idf-similarity (0.1.5)
|
95
|
+
unicode_utils (~> 1.4)
|
75
96
|
thread_safe (0.3.5)
|
76
97
|
unf (0.1.4)
|
77
98
|
unf_ext
|
78
99
|
unf_ext (0.0.7.2)
|
100
|
+
unicode-display_width (1.0.2)
|
101
|
+
unicode_utils (1.4.0)
|
79
102
|
webmock (1.24.2)
|
80
103
|
addressable (>= 2.3.6)
|
81
104
|
crack (>= 0.3.2)
|
@@ -94,9 +117,13 @@ DEPENDENCIES
|
|
94
117
|
json
|
95
118
|
log4r
|
96
119
|
nokogiri
|
120
|
+
rake
|
97
121
|
rest-client
|
98
122
|
rspec
|
123
|
+
rubocop
|
99
124
|
ruby-xz
|
125
|
+
simplecov
|
126
|
+
tf-idf-similarity (~> 0.1.5)
|
100
127
|
webmock
|
101
128
|
|
102
129
|
BUNDLED WITH
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
# license_auto(v0.1.
|
1
|
+
# license_auto(v0.1.1.2)
|
2
2
|
|
3
|
-
![Progress](http://progressed.io/bar/
|
3
|
+
![Progress](http://progressed.io/bar/10?title=progress)
|
4
4
|
[![Code Climate](https://codeclimate.com/github/mineworks/license_auto/badges/gpa.svg)](https://codeclimate.com/github/mineworks/license_auto)
|
5
5
|
[![Build Status](https://travis-ci.org/mineworks/license_auto.svg?branch=master)](https://travis-ci.org/mineworks/license_auto)
|
6
6
|
|
@@ -21,7 +21,7 @@
|
|
21
21
|
<td>Gemfile(.lock)</td>
|
22
22
|
<td>https://rubygems.org/</td>
|
23
23
|
<!-- <td> https://rubygems.org/pages/data</td> -->
|
24
|
-
<td>
|
24
|
+
<td>50</td>
|
25
25
|
</tr>
|
26
26
|
<tr>
|
27
27
|
<td>Java</td>
|
@@ -84,27 +84,23 @@
|
|
84
84
|
gem install license_auto
|
85
85
|
```
|
86
86
|
|
87
|
-
##
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
require 'license_auto'
|
92
|
-
params = {
|
93
|
-
github_username: 'Alice'
|
94
|
-
github_password: '123456',
|
95
|
-
http_proxy: 'http://proxyuser:proxypwd@proxy.server.com:8080'
|
96
|
-
}
|
97
|
-
LicenseAuto::Base.config(params)
|
87
|
+
## Configure
|
88
|
+
```
|
89
|
+
sudo cp license_auto/config/sample.config.yml etc/license_auto.conf.yml
|
90
|
+
cp license_auto/config/gitconfig ~/.gitconfig
|
98
91
|
```
|
99
92
|
|
93
|
+
## Examples
|
94
|
+
|
100
95
|
* Get dependencies of a repository
|
101
96
|
``` ruby
|
102
97
|
require 'license_auto'
|
103
98
|
my_repo = {
|
104
|
-
|
99
|
+
"clone_url": "https://github.com/mineworks/license_auto.git",
|
100
|
+
"ref": "test-branch"
|
105
101
|
}
|
106
|
-
repo = LicenseAuto::
|
107
|
-
dependencies = repo.
|
102
|
+
repo = LicenseAuto::Repo.new(my_repo)
|
103
|
+
dependencies = repo.find_dependencies
|
108
104
|
```
|
109
105
|
|
110
106
|
* Get License Info of a package
|
@@ -115,7 +111,7 @@ my_pack = {
|
|
115
111
|
name: 'bundler',
|
116
112
|
group: 'com.google.http-client', # Optional: Assign nil if your package is not a Java
|
117
113
|
version: '1.11.2', # Optional: Assign nil if check the latest
|
118
|
-
|
114
|
+
server: 'rubygems.org' # Optional: github.com|rubygems.org|pypi.python.org/pypi|registry.npmjs.org
|
119
115
|
}
|
120
116
|
package = LicenseAuto::Package.new(my_pack)
|
121
117
|
license_info = package.get_license_info()
|
data/Rakefile
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
# require 'rubygems'
|
2
2
|
require 'bundler'
|
3
|
+
Bundler::GemHelper.install_tasks
|
3
4
|
|
4
5
|
require 'rake'
|
5
|
-
|
6
6
|
require 'rspec/core'
|
7
7
|
require 'rspec/core/rake_task'
|
8
8
|
|
9
|
-
|
10
|
-
Bundler::GemHelper.install_tasks
|
11
|
-
|
12
9
|
RSpec::Core::RakeTask.new(:spec) do |spec|
|
13
10
|
# do not run integration tests, doesn't work on TravisCI
|
14
|
-
spec.pattern = FileList[
|
11
|
+
spec.pattern = FileList[
|
12
|
+
'spec/license_auto/*_spec.rb',
|
13
|
+
'spec/license_auto/*/*_spec.rb',
|
14
|
+
]
|
15
15
|
end
|
16
16
|
|
17
17
|
require 'rubocop/rake_task'
|
@@ -4,7 +4,7 @@ my_pack = {
|
|
4
4
|
name: 'bundler',
|
5
5
|
group: 'com.google.http-client', # Optional: Assign nil if your package is not a Java
|
6
6
|
version: '1.11.2', # Optional: Assign nil if check the latest
|
7
|
-
|
7
|
+
server: 'rubygems.org' # Optional: github.com|rubygems.org|pypi.python.org/pypi|registry.npmjs.org
|
8
8
|
}
|
9
9
|
package = LicenseAuto::Package.new(my_pack)
|
10
10
|
license_info = package.get_license_info()
|
@@ -1,52 +1,38 @@
|
|
1
|
-
require 'log4r'
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
|
1
|
+
require 'log4r'; Log4r::Logger.root
|
2
|
+
require 'yaml'
|
3
|
+
require 'hashie/mash'
|
4
|
+
|
5
|
+
# Aka LICENSE_AUTO_CONF
|
6
|
+
LUTO_CONF =
|
7
|
+
begin
|
8
|
+
Hashie::Mash.new(YAML.load_file('/etc/license_auto.conf.yml'))
|
9
|
+
rescue Errno::ENOENT
|
10
|
+
sample_filename_path = File.expand_path('../sample.config.yml', __FILE__)
|
11
|
+
puts "Using config: #{sample_filename_path}"
|
12
|
+
Hashie::Mash.new(YAML.load_file(sample_filename_path))
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
# LicenseAuto logger level
|
17
|
+
LUTO_LOG_LEVEL =
|
18
|
+
case LUTO_CONF.logger.level
|
19
|
+
when 'debug'
|
20
|
+
Log4r::DEBUG
|
21
|
+
when 'info'
|
22
|
+
Log4r::INFO
|
23
|
+
when 'warn'
|
24
|
+
Log4r::WARN
|
25
|
+
when 'error'
|
26
|
+
Log4r::ERROR
|
27
|
+
when 'fatal'
|
28
|
+
Log4r::FATAL
|
29
|
+
else
|
30
|
+
Log4r::DEBUG
|
31
|
+
end
|
32
|
+
|
33
|
+
LUTO_ROOT_DIR = LUTO_CONF.dirs.root
|
34
|
+
LUTO_CACHE_DIR = "#{LUTO_ROOT_DIR}/#{LUTO_CONF.dirs.cache}"
|
35
|
+
|
36
|
+
unless FileTest.directory?(LUTO_CACHE_DIR)
|
37
|
+
FileUtils.mkdir_p(LUTO_CACHE_DIR)
|
16
38
|
end
|
17
|
-
|
18
|
-
STD_LICENSE_DIR = "./extractor_ruby/Package_license"
|
19
|
-
|
20
|
-
pf = Log4r::PatternFormatter.new(
|
21
|
-
:pattern => "%d [%l]: %M",
|
22
|
-
:date_format => "%Y/%m/%d %H:%M:%S"
|
23
|
-
)
|
24
|
-
|
25
|
-
HTTPARTY_DOWNLOAD_TIMEOUT = 480
|
26
|
-
|
27
|
-
|
28
|
-
Log4r::StderrOutputter.new('console', :formatter => pf)
|
29
|
-
if $debug
|
30
|
-
filename = "auto.log"
|
31
|
-
else
|
32
|
-
filename = "#{AUTO_ROOT}/#{rand(1000).to_s}.log"
|
33
|
-
end
|
34
|
-
|
35
|
-
Log4r::FileOutputter.new('logfile',
|
36
|
-
:filename => filename,
|
37
|
-
:trunc => $debug,
|
38
|
-
:formatter => pf,
|
39
|
-
:level=>Log4r::DEBUG)
|
40
|
-
|
41
|
-
$plog = Log4r::Logger.new('auto.log')
|
42
|
-
$plog.add('console', 'logfile')
|
43
|
-
|
44
|
-
def log_usage_example()
|
45
|
-
$plog.debug "This is a message with level DEBUG"
|
46
|
-
$plog.info "This is a message with level INFO"
|
47
|
-
$plog.warn "This is a message with level WARN"
|
48
|
-
$plog.error "This is a message with level ERROR"
|
49
|
-
$plog.fatal "This is a message with level FATAL"
|
50
|
-
end
|
51
|
-
|
52
|
-
LICENSE_WEBSITE_URL = 'http://localhost:3000'
|
@@ -0,0 +1,20 @@
|
|
1
|
+
logger:
|
2
|
+
file: '/tmp/license_auto.log'
|
3
|
+
level: 'debug'
|
4
|
+
|
5
|
+
github:
|
6
|
+
username: 'micfan'
|
7
|
+
# https://github.com/octokit/octokit.rb#oauth-access-tokens
|
8
|
+
access_token: '<your 40 char token>'
|
9
|
+
|
10
|
+
http:
|
11
|
+
time_out: 480
|
12
|
+
proxy:
|
13
|
+
host: 'proxy.example.com'
|
14
|
+
port: 8080
|
15
|
+
username: ''
|
16
|
+
password: ''
|
17
|
+
|
18
|
+
dirs:
|
19
|
+
root: '/tmp/license_auto'
|
20
|
+
cache: 'cache'
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'license_auto/logger'
|
2
|
+
|
3
|
+
module LicenseAuto
|
4
|
+
class LicenseAutoError < StandardError
|
5
|
+
def initialize(message="LicenseAuto Error Occurred")
|
6
|
+
super
|
7
|
+
end
|
8
|
+
|
9
|
+
def message
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class PackageNotFound < LicenseAutoError
|
14
|
+
def initialize(message=nil, server=nil)
|
15
|
+
@message = message
|
16
|
+
@server = server
|
17
|
+
end
|
18
|
+
def message
|
19
|
+
"Package #{@message} can not be found in remote server #{@server}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class VirtualMethodError < RuntimeError
|
24
|
+
##
|
25
|
+
# Just call to super with some fancy message.
|
26
|
+
def initialize(name)
|
27
|
+
message = "Error: Pure virtual method '#{name}' called"
|
28
|
+
super(message)
|
29
|
+
logger.error(message)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
LICENSE_TITLE = 'copying|copy|license'
|
2
|
+
|
3
|
+
module LicenseAuto
|
4
|
+
|
5
|
+
|
6
|
+
class Readme
|
7
|
+
|
8
|
+
# RDOC_EXT = /\.rdoc$/
|
9
|
+
# RDOC_PATTERN = //
|
10
|
+
#
|
11
|
+
# RST_EXT = /\.rst/
|
12
|
+
# RST_PATTERN = //
|
13
|
+
|
14
|
+
attr_reader :license_content
|
15
|
+
|
16
|
+
def initialize(filename, content)
|
17
|
+
impl = formator(filename)
|
18
|
+
@license_content = impl.cut_license(content)
|
19
|
+
end
|
20
|
+
|
21
|
+
def extensions
|
22
|
+
[Markdown]
|
23
|
+
end
|
24
|
+
|
25
|
+
def formator(filename)
|
26
|
+
extensions.find { |format|
|
27
|
+
format::FILE_EXTENSION.match(filename)
|
28
|
+
}
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class Markdown
|
33
|
+
FILE_EXTENSION = /\.(md|markdown)$/i
|
34
|
+
PATTERN = /(?<text>^##\s*(license|copy|copying)(.*\n*)*)($|(?=\n^##))/i
|
35
|
+
|
36
|
+
def self.cut_license(content)
|
37
|
+
matched = PATTERN.match(content)
|
38
|
+
if matched
|
39
|
+
matched[:text]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|