spandx 0.1.3 → 0.1.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 68bd7e9482a8b509227140a30cbe6de687251055de0e5a044dac742facc416f8
4
- data.tar.gz: aeaf6153a9e3032a2d8040a9c6f3f06031c55ab5c9d1931b55cf297eab1f8292
3
+ metadata.gz: d69d6fb64c5305d1fa1131f35369cfb1d30003ec838da0098dd345fbad434024
4
+ data.tar.gz: a97bc7e6243841a4fe0bddfd5c9141c533474840c91cf4b84961d5a9f327ad90
5
5
  SHA512:
6
- metadata.gz: 52fc3d7dd8a2c8fb1a24b189d5bdd736f997dbf062d82e96cf4df10b6a125effb9dd6084264fff4f7d037bd33c63d4f876ba907c440377fceee4d2de56455a4e
7
- data.tar.gz: 7815f0b62b4e2ada1b4b6798754af29f1313a96755642c9405de5feeb8aae7677a63d55ff555c67db415105d96332aacfc1abd9cdfdd2fc556b70f75abca98b8
6
+ metadata.gz: 06ce13d505da615593595b72ed44d0c0d409315eefdbbb69af9ea092a1d7230659c9a34d5492430bd748b4dfc0555a0b1ae28d7b2395172e202591efac2259c2
7
+ data.tar.gz: cc6e3ab63d93668286ff133fc46c3c7fcaa41498c0d44ae1d92b362839d4faaa010d25d4f4b7d5d566f164b295db2f776e98a23c0a3b6cbc476f1033bd92e8eb
data/CHANGELOG.md CHANGED
@@ -1,4 +1,4 @@
1
- Version 0.1.3
1
+ Version 0.1.4
2
2
 
3
3
  # Changelog
4
4
  All notable changes to this project will be documented in this file.
@@ -7,7 +7,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
7
7
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
8
8
 
9
9
  ## [Unreleased]
10
- - nil
10
+ ### Added
11
+
12
+ ## [0.1.4] - 2020-01-22
13
+ ### Added
14
+ - Add dependency on bundler
15
+ - Scan nuget `packages.config` files
16
+ - Scan dotnet `*.csproj` files
17
+ - Pull ruby gem license info from rubygems.org API V2.
11
18
 
12
19
  ## [0.1.3] - 2020-01-16
13
20
  ### Added
@@ -24,7 +31,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
24
31
  ### Added
25
32
  - Provide ruby API to the latest SPDX catalogue.
26
33
 
27
- [Unreleased]: https://github.com/mokhan/spandx/compare/v0.1.3...HEAD
34
+ [Unreleased]: https://github.com/mokhan/spandx/compare/v0.1.4...HEAD
35
+ [0.1.3]: https://github.com/mokhan/spandx/compare/v0.1.3...v0.1.4
28
36
  [0.1.3]: https://github.com/mokhan/spandx/compare/v0.1.2...v0.1.3
29
37
  [0.1.2]: https://github.com/mokhan/spandx/compare/v0.1.1...v0.1.2
30
38
  [0.1.1]: https://github.com/mokhan/spandx/compare/v0.1.0...v0.1.1
@@ -14,7 +14,10 @@ module Spandx
14
14
  if lockfile.nil?
15
15
  output.puts 'OK'
16
16
  else
17
- report = Parsers.for(lockfile).parse(lockfile)
17
+ report = Report.new
18
+ Parsers.for(lockfile).parse(lockfile).each do |dependency|
19
+ report.add(dependency)
20
+ end
18
21
  output.puts report.to_json
19
22
  end
20
23
  end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spandx
4
+ class Dependency
5
+ attr_reader :name, :version, :licenses
6
+
7
+ def initialize(name:, version:, licenses: [])
8
+ @name = name
9
+ @version = version
10
+ @licenses = licenses
11
+ end
12
+
13
+ def to_h
14
+ {
15
+ name: name,
16
+ version: version,
17
+ licenses: licenses.map(&:id)
18
+ }
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spandx
4
+ module Gateways
5
+ # https://api.nuget.org/v3-flatcontainer/#{name}/#{version}/#{name}.nuspec
6
+ # https://api.nuget.org/v3-flatcontainer/#{package.name}/index.json
7
+ # https://docs.microsoft.com/en-us/nuget/api/package-base-address-resource
8
+ class Nuget
9
+ def initialize(http: Spandx.http)
10
+ @http = http
11
+ end
12
+
13
+ def licenses_for(name, version)
14
+ document = nuspec_for(name, version)
15
+
16
+ exact_licenses_from(document) ||
17
+ guess_licenses_from(document)
18
+ end
19
+
20
+ private
21
+
22
+ attr_reader :http
23
+
24
+ def nuspec_url_for(name, version)
25
+ "https://api.nuget.org/v3-flatcontainer/#{name}/#{version}/#{name}.nuspec"
26
+ end
27
+
28
+ def nuspec_for(name, version)
29
+ from_xml(http.get(nuspec_url_for(name, version)).body)
30
+ end
31
+
32
+ def guess_license_in(content)
33
+ Licensee::ProjectFiles::LicenseFile.new(content).license.key.upcase
34
+ end
35
+
36
+ def from_xml(xml)
37
+ Nokogiri::XML(xml).tap(&:remove_namespaces!)
38
+ end
39
+
40
+ def exact_licenses_from(document)
41
+ if (licenses = document.search('//package/metadata/license')).any?
42
+ return licenses.map(&:text)
43
+ end
44
+
45
+ nil
46
+ end
47
+
48
+ def guess_licenses_from(document)
49
+ document
50
+ .search('//package/metadata/licenseUrl')
51
+ .map { |node| guess_license_in(Spandx.http.get(node.text).body) }
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spandx
4
+ module Gateways
5
+ # https://guides.rubygems.org/rubygems-org-api-v2/
6
+ class Rubygems
7
+ def initialize(http: Spandx.http)
8
+ @http = http
9
+ end
10
+
11
+ def licenses_for(name, version)
12
+ details_on(name, version).fetch('licenses', [])
13
+ end
14
+
15
+ private
16
+
17
+ attr_reader :http
18
+
19
+ def details_on(name, version)
20
+ url = "https://rubygems.org/api/v2/rubygems/#{name}/versions/#{version}.json"
21
+ response = http.get(url, default: {})
22
+ http.ok?(response) ? parse(response.body) : {}
23
+ end
24
+
25
+ def parse(json)
26
+ JSON.parse(json)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spandx
4
+ module Parsers
5
+ class Csproj < Base
6
+ def self.matches?(filename)
7
+ filename.match?(/.*\.csproj/)
8
+ end
9
+
10
+ def parse(lockfile)
11
+ document = from_xml(IO.read(lockfile))
12
+ document.search('//PackageReference').map do |node|
13
+ name = attribute_for('Include', node)
14
+ version = attribute_for('Version', node)
15
+ Dependency.new(
16
+ name: name,
17
+ version: version,
18
+ licenses: nuget.licenses_for(name, version).map { |x| catalogue[x] }
19
+ )
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def from_xml(xml)
26
+ Nokogiri::XML(xml)
27
+ end
28
+
29
+ def attribute_for(key, node)
30
+ node.attribute(key)&.value&.strip ||
31
+ node.at_xpath("./#{key}")&.content&.strip
32
+ end
33
+
34
+ def nuget
35
+ @nuget ||= Gateways::Nuget.new
36
+ end
37
+ end
38
+ end
39
+ end
@@ -3,31 +3,40 @@
3
3
  module Spandx
4
4
  module Parsers
5
5
  class GemfileLock < Base
6
+ STRIP_BUNDLED_WITH = /^BUNDLED WITH$(\r?\n) (?<major>\d+)\.\d+\.\d+/m.freeze
7
+
6
8
  def self.matches?(filename)
7
- filename.match?(/Gemfile.*\.lock/)
9
+ filename.match?(/Gemfile.*\.lock/) ||
10
+ filename.match?(/gems.*\.lock/)
8
11
  end
9
12
 
10
13
  def parse(lockfile)
11
- report = Report.new
12
- dependencies_from(lockfile) do |dependency|
13
- spec = dependency.to_spec
14
- report.add(
15
- name: dependency.name,
16
- version: spec.version.to_s,
17
- licenses: [catalogue[spec.license]]
14
+ content = IO.read(lockfile)
15
+ dependencies_from(content).map do |specification|
16
+ Dependency.new(
17
+ name: specification.name,
18
+ version: specification.version.to_s,
19
+ licenses: licenses_for(specification)
18
20
  )
19
21
  end
20
- report
21
22
  end
22
23
 
23
24
  private
24
25
 
25
- def dependencies_from(lockfile)
26
+ def dependencies_from(content)
26
27
  ::Bundler::LockfileParser
27
- .new(IO.read(lockfile))
28
- .dependencies.each do |_key, dependency|
29
- yield dependency
30
- end
28
+ .new(content.sub(STRIP_BUNDLED_WITH, ''))
29
+ .specs
30
+ end
31
+
32
+ def licenses_for(specification)
33
+ rubygems
34
+ .licenses_for(specification.name, specification.version.to_s)
35
+ .map { |x| catalogue[x] }
36
+ end
37
+
38
+ def rubygems
39
+ @rubygems ||= Gateways::Rubygems.new
31
40
  end
32
41
  end
33
42
  end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spandx
4
+ module Parsers
5
+ class PackagesConfig < Base
6
+ def self.matches?(filename)
7
+ filename.match?(/packages\.config/)
8
+ end
9
+
10
+ def parse(lockfile)
11
+ Nokogiri::XML(IO.read(lockfile))
12
+ .search('//package')
13
+ .map { |node| map_from(node) }
14
+ end
15
+
16
+ private
17
+
18
+ def map_from(node)
19
+ name = attribute_for('id', node)
20
+ version = attribute_for('version', node)
21
+ Dependency.new(
22
+ name: name,
23
+ version: version,
24
+ licenses: nuget.licenses_for(name, version).map { |x| catalogue[x] }
25
+ )
26
+ end
27
+
28
+ def attribute_for(key, node)
29
+ node.attribute(key)&.value&.strip || node.at_xpath("./#{key}")&.content&.strip
30
+ end
31
+
32
+ def nuget
33
+ @nuget ||= Gateways::Nuget.new
34
+ end
35
+ end
36
+ end
37
+ end
@@ -8,15 +8,15 @@ module Spandx
8
8
  end
9
9
 
10
10
  def parse(lockfile)
11
- report = Report.new
11
+ results = []
12
12
  dependencies_from(lockfile) do |x|
13
- report.add(
13
+ results << Dependency.new(
14
14
  name: x[:name],
15
15
  version: x[:version],
16
16
  licenses: x[:licenses]
17
17
  )
18
18
  end
19
- report
19
+ results
20
20
  end
21
21
 
22
22
  private
@@ -1,18 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'spandx/parsers/base'
4
+ require 'spandx/parsers/csproj'
4
5
  require 'spandx/parsers/gemfile_lock'
6
+ require 'spandx/parsers/packages_config'
5
7
  require 'spandx/parsers/pipfile_lock'
6
8
 
7
9
  module Spandx
8
10
  module Parsers
11
+ UNKNOWN = Class.new do
12
+ def self.parse(*_args)
13
+ []
14
+ end
15
+ end
16
+
9
17
  class << self
10
18
  def for(path, catalogue: Spandx::Catalogue.latest)
11
19
  result = ::Spandx::Parsers::Base.find do |x|
12
20
  x.matches?(File.basename(path))
13
21
  end
14
22
 
15
- result&.new(catalogue: catalogue)
23
+ result&.new(catalogue: catalogue) || UNKNOWN
16
24
  end
17
25
  end
18
26
  end
data/lib/spandx/report.rb CHANGED
@@ -6,12 +6,8 @@ module Spandx
6
6
  @report = report
7
7
  end
8
8
 
9
- def add(name:, version:, licenses: [])
10
- @report[:packages].push(
11
- name: name,
12
- version: version,
13
- licenses: licenses.map(&:id)
14
- )
9
+ def add(dependency)
10
+ @report[:packages].push(dependency.to_h)
15
11
  end
16
12
 
17
13
  def to_h
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Spandx
4
- VERSION = '0.1.3'
4
+ VERSION = '0.1.4'
5
5
  end
data/lib/spandx.rb CHANGED
@@ -1,13 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'bundler'
3
4
  require 'forwardable'
4
5
  require 'json'
6
+ require 'licensee'
5
7
  require 'net/hippie'
8
+ require 'nokogiri'
6
9
  require 'pathname'
7
10
 
8
11
  require 'spandx/catalogue'
12
+ require 'spandx/dependency'
9
13
  require 'spandx/gateways/http'
14
+ require 'spandx/gateways/nuget'
10
15
  require 'spandx/gateways/pypi'
16
+ require 'spandx/gateways/rubygems'
11
17
  require 'spandx/gateways/spdx'
12
18
  require 'spandx/license'
13
19
  require 'spandx/parsers'
data/spandx.gemspec CHANGED
@@ -19,22 +19,26 @@ Gem::Specification.new do |spec|
19
19
  spec.metadata['source_code_uri'] = 'https://github.com/mokhan/spandx'
20
20
  spec.metadata['changelog_uri'] = 'https://github.com/mokhan/spandx/blob/master/CHANGELOG.md'
21
21
 
22
- # Specify which files should be added to the gem when it is released.
23
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
24
22
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
25
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
23
+ Dir.glob('exe/*') +
24
+ Dir.glob('lib/**/**/*.{rb}') +
25
+ Dir.glob('*.{md,gemspec,txt}')
26
26
  end
27
+
27
28
  spec.bindir = 'exe'
28
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
30
  spec.require_paths = ['lib']
30
31
 
32
+ spec.add_dependency 'bundler', '>= 1.16', '< 3.0.0'
33
+ spec.add_dependency 'licensee', '~> 9.13'
31
34
  spec.add_dependency 'net-hippie', '~> 0.3'
35
+ spec.add_dependency 'nokogiri', '~> 1.10'
32
36
  spec.add_dependency 'thor', '~> 0.1'
33
- spec.add_development_dependency 'bundler', '~> 2.0'
34
37
  spec.add_development_dependency 'bundler-audit', '~> 0.6'
35
38
  spec.add_development_dependency 'rake', '~> 13.0'
36
39
  spec.add_development_dependency 'rspec', '~> 3.0'
37
40
  spec.add_development_dependency 'rubocop', '~> 0.52'
38
41
  spec.add_development_dependency 'rubocop-rspec', '~> 1.22'
42
+ spec.add_development_dependency 'vcr', '~> 5.0'
39
43
  spec.add_development_dependency 'webmock', '~> 3.7'
40
44
  end
metadata CHANGED
@@ -1,15 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spandx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - mo khan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-17 00:00:00.000000000 Z
11
+ date: 2020-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: 3.0.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '1.16'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: 3.0.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: licensee
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '9.13'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '9.13'
13
47
  - !ruby/object:Gem::Dependency
14
48
  name: net-hippie
15
49
  requirement: !ruby/object:Gem::Requirement
@@ -25,33 +59,33 @@ dependencies:
25
59
  - !ruby/object:Gem::Version
26
60
  version: '0.3'
27
61
  - !ruby/object:Gem::Dependency
28
- name: thor
62
+ name: nokogiri
29
63
  requirement: !ruby/object:Gem::Requirement
30
64
  requirements:
31
65
  - - "~>"
32
66
  - !ruby/object:Gem::Version
33
- version: '0.1'
67
+ version: '1.10'
34
68
  type: :runtime
35
69
  prerelease: false
36
70
  version_requirements: !ruby/object:Gem::Requirement
37
71
  requirements:
38
72
  - - "~>"
39
73
  - !ruby/object:Gem::Version
40
- version: '0.1'
74
+ version: '1.10'
41
75
  - !ruby/object:Gem::Dependency
42
- name: bundler
76
+ name: thor
43
77
  requirement: !ruby/object:Gem::Requirement
44
78
  requirements:
45
79
  - - "~>"
46
80
  - !ruby/object:Gem::Version
47
- version: '2.0'
48
- type: :development
81
+ version: '0.1'
82
+ type: :runtime
49
83
  prerelease: false
50
84
  version_requirements: !ruby/object:Gem::Requirement
51
85
  requirements:
52
86
  - - "~>"
53
87
  - !ruby/object:Gem::Version
54
- version: '2.0'
88
+ version: '0.1'
55
89
  - !ruby/object:Gem::Dependency
56
90
  name: bundler-audit
57
91
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +156,20 @@ dependencies:
122
156
  - - "~>"
123
157
  - !ruby/object:Gem::Version
124
158
  version: '1.22'
159
+ - !ruby/object:Gem::Dependency
160
+ name: vcr
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '5.0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - "~>"
171
+ - !ruby/object:Gem::Version
172
+ version: '5.0'
125
173
  - !ruby/object:Gem::Dependency
126
174
  name: webmock
127
175
  requirement: !ruby/object:Gem::Requirement
@@ -144,41 +192,29 @@ executables:
144
192
  extensions: []
145
193
  extra_rdoc_files: []
146
194
  files:
147
- - ".github/workflows/ci.yml"
148
- - ".gitignore"
149
- - ".gitlab-ci.yml"
150
- - ".rspec"
151
- - ".rubocop.yml"
152
195
  - CHANGELOG.md
153
- - Gemfile
154
- - Gemfile.lock
155
196
  - LICENSE.txt
156
197
  - README.md
157
- - Rakefile
158
- - bin/cibuild
159
- - bin/console
160
- - bin/lint
161
- - bin/setup
162
- - bin/shipit
163
- - bin/test
164
198
  - exe/spandx
165
199
  - lib/spandx.rb
166
200
  - lib/spandx/catalogue.rb
167
201
  - lib/spandx/cli.rb
168
202
  - lib/spandx/command.rb
169
- - lib/spandx/commands/.gitkeep
170
203
  - lib/spandx/commands/scan.rb
204
+ - lib/spandx/dependency.rb
171
205
  - lib/spandx/gateways/http.rb
206
+ - lib/spandx/gateways/nuget.rb
172
207
  - lib/spandx/gateways/pypi.rb
208
+ - lib/spandx/gateways/rubygems.rb
173
209
  - lib/spandx/gateways/spdx.rb
174
210
  - lib/spandx/license.rb
175
211
  - lib/spandx/parsers.rb
176
212
  - lib/spandx/parsers/base.rb
213
+ - lib/spandx/parsers/csproj.rb
177
214
  - lib/spandx/parsers/gemfile_lock.rb
215
+ - lib/spandx/parsers/packages_config.rb
178
216
  - lib/spandx/parsers/pipfile_lock.rb
179
217
  - lib/spandx/report.rb
180
- - lib/spandx/templates/.gitkeep
181
- - lib/spandx/templates/scan/.gitkeep
182
218
  - lib/spandx/version.rb
183
219
  - spandx.gemspec
184
220
  homepage: https://github.com/mokhan/spandx
@@ -1,13 +0,0 @@
1
- name: ci
2
- on: [push]
3
- jobs:
4
- build:
5
- runs-on: ubuntu-latest
6
- steps:
7
- - uses: actions/checkout@v1
8
- - name: Set up Ruby 2.6
9
- uses: actions/setup-ruby@v1
10
- with:
11
- ruby-version: 2.6.x
12
- - name: Run cibuild
13
- run: bin/cibuild
data/.gitignore DELETED
@@ -1,12 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
9
-
10
- # rspec failure tracking
11
- .rspec_status
12
- *.log
data/.gitlab-ci.yml DELETED
@@ -1,8 +0,0 @@
1
- stages:
2
- - test
3
-
4
- test:
5
- stage: test
6
- image: ruby:2.6
7
- script:
8
- - ./bin/cibuild
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper
data/.rubocop.yml DELETED
@@ -1,74 +0,0 @@
1
- require:
2
- - rubocop-rspec
3
-
4
- AllCops:
5
- Exclude:
6
- - 'pkg/**/*'
7
- - 'spec/fixtures/**/*'
8
- TargetRubyVersion: 2.6
9
-
10
- Layout/ArgumentAlignment:
11
- EnforcedStyle: with_fixed_indentation
12
-
13
- Layout/ParameterAlignment:
14
- Enabled: true
15
- EnforcedStyle: with_fixed_indentation
16
- IndentationWidth: 2
17
-
18
- Layout/EndOfLine:
19
- EnforcedStyle: lf
20
-
21
- Layout/FirstArrayElementIndentation:
22
- EnforcedStyle: consistent
23
-
24
- Layout/MultilineMethodCallIndentation:
25
- Enabled: true
26
- EnforcedStyle: indented
27
-
28
- Lint/AmbiguousBlockAssociation:
29
- Exclude:
30
- - 'spec/**/*.rb'
31
-
32
- Metrics/BlockLength:
33
- Exclude:
34
- - '*.gemspec'
35
- - 'Rakefile'
36
- - 'spec/**/*.rb'
37
-
38
- Metrics/ModuleLength:
39
- Exclude:
40
- - 'spec/**/*.rb'
41
-
42
- Metrics/LineLength:
43
- Exclude:
44
- - 'spec/**/*.rb'
45
- IgnoredPatterns:
46
- - '^#*'
47
-
48
- Naming/RescuedExceptionsVariableName:
49
- PreferredName: error
50
-
51
- Style/Documentation:
52
- Enabled: false
53
-
54
- Style/StringLiterals:
55
- EnforcedStyle: 'single_quotes'
56
-
57
- Style/TrailingCommaInArrayLiteral:
58
- Enabled: false
59
-
60
- Style/TrailingCommaInHashLiteral:
61
- Enabled: false
62
-
63
- RSpec/ExampleLength:
64
- Max: 80
65
-
66
- RSpec/NamedSubject:
67
- Enabled: false
68
-
69
- RSpec/FilePath:
70
- Enabled: false
71
-
72
- RSpec/DescribeClass:
73
- Exclude:
74
- - 'spec/integration/**/*'
data/Gemfile DELETED
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- # Specify your gem's dependencies in spandx.gemspec
6
- gemspec
data/Gemfile.lock DELETED
@@ -1,74 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- spandx (0.1.3)
5
- net-hippie (~> 0.3)
6
- thor (~> 0.1)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- addressable (2.7.0)
12
- public_suffix (>= 2.0.2, < 5.0)
13
- ast (2.4.0)
14
- bundler-audit (0.6.1)
15
- bundler (>= 1.2.0, < 3)
16
- thor (~> 0.18)
17
- crack (0.4.3)
18
- safe_yaml (~> 1.0.0)
19
- diff-lcs (1.3)
20
- hashdiff (1.0.0)
21
- jaro_winkler (1.5.4)
22
- net-hippie (0.3.1)
23
- parallel (1.19.1)
24
- parser (2.7.0.0)
25
- ast (~> 2.4.0)
26
- public_suffix (4.0.2)
27
- rainbow (3.0.0)
28
- rake (13.0.1)
29
- rspec (3.9.0)
30
- rspec-core (~> 3.9.0)
31
- rspec-expectations (~> 3.9.0)
32
- rspec-mocks (~> 3.9.0)
33
- rspec-core (3.9.0)
34
- rspec-support (~> 3.9.0)
35
- rspec-expectations (3.9.0)
36
- diff-lcs (>= 1.2.0, < 2.0)
37
- rspec-support (~> 3.9.0)
38
- rspec-mocks (3.9.0)
39
- diff-lcs (>= 1.2.0, < 2.0)
40
- rspec-support (~> 3.9.0)
41
- rspec-support (3.9.0)
42
- rubocop (0.78.0)
43
- jaro_winkler (~> 1.5.1)
44
- parallel (~> 1.10)
45
- parser (>= 2.6)
46
- rainbow (>= 2.2.2, < 4.0)
47
- ruby-progressbar (~> 1.7)
48
- unicode-display_width (>= 1.4.0, < 1.7)
49
- rubocop-rspec (1.37.1)
50
- rubocop (>= 0.68.1)
51
- ruby-progressbar (1.10.1)
52
- safe_yaml (1.0.5)
53
- thor (0.20.3)
54
- unicode-display_width (1.6.0)
55
- webmock (3.7.6)
56
- addressable (>= 2.3.6)
57
- crack (>= 0.3.2)
58
- hashdiff (>= 0.4.0, < 2.0.0)
59
-
60
- PLATFORMS
61
- ruby
62
-
63
- DEPENDENCIES
64
- bundler (~> 2.0)
65
- bundler-audit (~> 0.6)
66
- rake (~> 13.0)
67
- rspec (~> 3.0)
68
- rubocop (~> 0.52)
69
- rubocop-rspec (~> 1.22)
70
- spandx!
71
- webmock (~> 3.7)
72
-
73
- BUNDLED WITH
74
- 2.1.2
data/Rakefile DELETED
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bundler/audit/task'
4
- require 'bundler/gem_tasks'
5
- require 'rspec/core/rake_task'
6
- require 'rubocop/rake_task'
7
-
8
- RSpec::Core::RakeTask.new(:spec)
9
- RuboCop::RakeTask.new(:rubocop)
10
- Bundler::Audit::Task.new
11
-
12
- task lint: [:rubocop, 'bundle:audit']
13
- task default: :spec
data/bin/cibuild DELETED
@@ -1,19 +0,0 @@
1
- #!/bin/sh
2
-
3
- set -e
4
-
5
- cd "$(dirname "$0")/.."
6
-
7
- echo [$(date "+%H:%M:%S")] "==> Started at…"
8
-
9
- # GC customizations
10
- export RUBY_GC_MALLOC_LIMIT=79000000
11
- export RUBY_GC_HEAP_INIT_SLOTS=800000
12
- export RUBY_HEAP_FREE_MIN=100000
13
- export RUBY_HEAP_SLOTS_INCREMENT=400000
14
- export RUBY_HEAP_SLOTS_GROWTH_FACTOR=1
15
-
16
- ruby -v
17
- gem install bundler --conservative -v '~> 2.0'
18
- bin/test
19
- bin/lint
data/bin/console DELETED
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require 'bundler/setup'
5
- require 'spandx'
6
-
7
- # You can add fixtures and/or initialization code here to make experimenting
8
- # with your gem easier. You can also use a different console, if you like.
9
-
10
- # (If you use this, don't forget to add pry to your Gemfile!)
11
- # require "pry"
12
- # Pry.start
13
-
14
- require 'irb'
15
- IRB.start(__FILE__)
data/bin/lint DELETED
@@ -1,11 +0,0 @@
1
- #!/bin/sh
2
-
3
- set -e
4
-
5
- [ -z "$DEBUG" ] || set -x
6
-
7
- echo [$(date "+%H:%M:%S")] "==> Running setup…"
8
- bin/setup
9
-
10
- echo [$(date "+%H:%M:%S")] "==> Running linters…"
11
- bundle exec rake lint
data/bin/setup DELETED
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle check || bundle install --jobs "$(sysctl -n hw.ncpu || nproc)"
data/bin/shipit DELETED
@@ -1,10 +0,0 @@
1
- #!/bin/sh
2
-
3
- set -e
4
-
5
- cd "$(dirname "$0")/.."
6
-
7
- [ -z "$DEBUG" ] || set -x
8
-
9
- bin/cibuild
10
- bundle exec rake release
data/bin/test DELETED
@@ -1,13 +0,0 @@
1
- #!/bin/sh
2
-
3
- set -e
4
-
5
- cd "$(dirname "$0")/.."
6
-
7
- [ -z "$DEBUG" ] || set -x
8
-
9
- echo [$(date "+%H:%M:%S")] "==> Running setup…"
10
- bin/setup
11
-
12
- echo [$(date "+%H:%M:%S")] "==> Running tests…"
13
- bundle exec rake spec
File without changes
File without changes
@@ -1 +0,0 @@
1
- #