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.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -2
  3. data/Gemfile +9 -1
  4. data/Gemfile.lock +27 -0
  5. data/README.md +14 -18
  6. data/Rakefile +5 -5
  7. data/examples/get_license_files_of_bundler.rb +1 -1
  8. data/lib/license_auto/config/config.rb +37 -51
  9. data/lib/license_auto/config/sample.config.yml +20 -0
  10. data/lib/license_auto/exceptions.rb +32 -0
  11. data/lib/license_auto/license/frequency.rb +1 -1
  12. data/lib/license_auto/license/readme.rb +43 -0
  13. data/lib/license_auto/license/similarity.rb +43 -231
  14. data/lib/license_auto/license/templates/PerlArtistic.txt +1 -0
  15. data/lib/license_auto/license_info_wrapper.rb +28 -0
  16. data/lib/license_auto/logger.rb +27 -0
  17. data/lib/license_auto/{errors.rb → misc.rb} +0 -0
  18. data/lib/license_auto/module.rb +17 -0
  19. data/lib/license_auto/package.rb +65 -10
  20. data/lib/license_auto/package_manager/apt.rb +2 -0
  21. data/lib/license_auto/package_manager/bower.rb +2 -0
  22. data/lib/license_auto/package_manager/bundler.rb +87 -0
  23. data/lib/license_auto/package_manager/gemfury.rb +39 -0
  24. data/lib/license_auto/{parser → package_manager}/golang.rb +0 -0
  25. data/lib/{parser/enums.rb → license_auto/package_manager/golang_stdlibs.rb} +1 -1
  26. data/lib/license_auto/{parser → package_manager}/gradle.rb +0 -0
  27. data/lib/license_auto/package_manager/ivy.rb +1 -0
  28. data/lib/license_auto/{parser/gemfile.rb → package_manager/license_header.rb} +0 -0
  29. data/lib/license_auto/package_manager/maven.rb +0 -0
  30. data/lib/license_auto/package_manager/npm.rb +2 -0
  31. data/lib/license_auto/package_manager/phar.rb +3 -0
  32. data/lib/license_auto/package_manager/pip.rb +2 -0
  33. data/lib/license_auto/package_manager/yum.rb +2 -0
  34. data/lib/license_auto/package_manager.rb +41 -0
  35. data/lib/license_auto/repo.rb +79 -0
  36. data/lib/license_auto/version.rb +1 -1
  37. data/lib/license_auto/website/gemfury_com.rb +10 -0
  38. data/lib/license_auto/website/github_com.rb +179 -0
  39. data/lib/license_auto/website/ruby_gems_org.rb +17 -4
  40. data/lib/license_auto.rb +6 -11
  41. data/license_auto.gemspec +7 -2
  42. data/{lib → remove}/api/bitbucket.rb +0 -0
  43. data/{lib → remove}/api/code_google_com.rb +0 -0
  44. data/{lib → remove}/api/excel_export.rb +0 -0
  45. data/{lib → remove}/api/gem_data.rb +0 -0
  46. data/{lib → remove}/api/git_kernel_org.rb +0 -0
  47. data/{lib → remove}/api/github.rb +0 -0
  48. data/{lib → remove}/api/go_pkg_in.rb +0 -0
  49. data/{lib → remove}/api/golang_org.rb +0 -0
  50. data/{lib → remove}/api/google_source_com.rb +0 -0
  51. data/{lib → remove}/api/gradle2.rb +0 -0
  52. data/{lib → remove}/api/helper.rb +0 -0
  53. data/{lib → remove}/api/j_center.rb +0 -0
  54. data/{lib → remove}/api/maven_central_repository.rb +0 -0
  55. data/{lib → remove}/api/mq.rb +0 -0
  56. data/{lib → remove}/api/npm_registry.rb +0 -0
  57. data/{lib → remove}/api/pattern.rb +0 -0
  58. data/{lib → remove}/api/remote_source_package.rb +0 -0
  59. data/{lib → remove}/api/spider.rb +0 -0
  60. data/{lib → remove}/api.rb +0 -0
  61. data/{lib → remove}/cloner.rb +1 -1
  62. data/{lib → remove}/db.rb +0 -0
  63. data/{lib → remove}/misc.rb +0 -0
  64. data/{lib → remove}/parser/gemfile_parser.rb +0 -0
  65. data/{lib → remove}/parser/golang_parser.rb +1 -1
  66. data/{lib → remove}/parser/gradle_parser.rb +0 -0
  67. data/{lib → remove}/parser/manifest_parser.rb +0 -0
  68. data/{lib → remove}/parser/maven_parser.rb +0 -0
  69. data/{lib → remove}/parser/npm_parser.rb +0 -0
  70. data/{lib → remove}/parser/pip_parser.rb +0 -0
  71. data/{lib → remove}/parser/rebar_parser.rb +0 -0
  72. data/{lib → remove}/recorder.rb +0 -0
  73. data/{lib → remove}/script/apt-get.deps.sh +0 -0
  74. data/{lib → remove}/script/debian_dpkg_list.sh +0 -0
  75. data/{lib → remove}/script/rubygems.org.importdb.sh +0 -0
  76. metadata +103 -52
  77. data/lib/license_auto/license_info.rb +0 -12
  78. data/lib/license_auto/website/github.rb +0 -49
  79. data/lib/message.rb +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 747f9a52d3563de65831f07b6c660faa9ca8e8d0
4
- data.tar.gz: 4ec2029e39d2e9d3feb61b75cc2c4c600f6c9370
3
+ metadata.gz: 28221a5f886be66f2e736ea91fb80c9ea928463b
4
+ data.tar.gz: 3ad528e4241d9e8fc365784d40977308a8b92bfe
5
5
  SHA512:
6
- metadata.gz: 613dabbee06bf1dea2b4e0a6112dfc7be60ae95a457331a133f1c1cb46b9d5f28d300a99532a1c3e48d57dece5af3bcff272960bc00be10069e0131b3efa5577
7
- data.tar.gz: 1821e4f525816a51713b6986a814df7e892d2b78f51bb0ecf44bea848a02b3b65310f2758a6862c3f136a11937dbcbb4b483c6f800df2603555c2b382e6df541
6
+ metadata.gz: 730d2a75e553e42632645a2165773a71bcd6f2b868c2149a2a2d2ad8f541a1e626062d0a21be80334fd66303d8b85112ecfa3778ab720ccf6ed45317797ceff2
7
+ data.tar.gz: 69a29cfa34ba61d4667fd369925e4b020737f6c8827fd09845bc03a407cb354d7913fc5ac862f2d1c689d7969cd7243ffeecff22a5e449aa7c6f1a41c61e53f8
data/.travis.yml CHANGED
@@ -1,9 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - "2.0"
4
- - "2.1"
5
4
  - "2.2"
6
5
 
7
6
  script:
8
- - rake install
7
+ - bundle exec rake build
9
8
  - bundle exec rspec spec
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.0.beta)
1
+ # license_auto(v0.1.1.2)
2
2
 
3
- ![Progress](http://progressed.io/bar/5?title=progress)
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>1</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
- ## Examples
88
-
89
- * Optional: Config Github Auth
90
- ``` ruby
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
- repo_url: 'https://github.com/mineworks/license_auto.git'
99
+ "clone_url": "https://github.com/mineworks/license_auto.git",
100
+ "ref": "test-branch"
105
101
  }
106
- repo = LicenseAuto::Package.new(my_repo)
107
- dependencies = repo.get_dependencies()
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
- project_server: 'rubygems.org' # Optional: github.com|rubygems.org|pypi.python.org/pypi|registry.npmjs.org
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['spec/license_auto/*_spec.rb']
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
- project_server: 'rubygems.org' # Optional: github.com|rubygems.org|pypi.python.org/pypi|registry.npmjs.org
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
- $debug = true
4
-
5
- AUTO_ROOT = '/tmp/license_auto_cache'
6
- LAUNCHPAD_SOURCE_DIR = "#{AUTO_ROOT}/lp"
7
- MANIFEST_SOURCE_DIR = "#{AUTO_ROOT}/manifest"
8
- if !File.exist?(AUTO_ROOT)
9
- Dir.mkdir(AUTO_ROOT)
10
- end
11
- if !File.exist?(LAUNCHPAD_SOURCE_DIR)
12
- Dir.mkdir(LAUNCHPAD_SOURCE_DIR)
13
- end
14
- if !File.exists?(MANIFEST_SOURCE_DIR)
15
- Dir.mkdir(MANIFEST_SOURCE_DIR)
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
@@ -1,5 +1,5 @@
1
1
  ##
2
- # Statistic
2
+ # Statistic order: High to Low
3
3
 
4
4
  LICENSE_SORTED_FREQUENCY = [
5
5
  'MIT',
@@ -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