license_auto 0.1.1.1 → 0.1.1.2

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.
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