gems-validator 0.4.0 → 0.4.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: fd766d16712cec21ba9dbf14c12ca843d91f214b386e5708fec6d82c188d217f
4
- data.tar.gz: 288989358252c40880b504fb9acb869e90e66ea8ee03f30b3674951dca90f718
3
+ metadata.gz: bfd35451ef8cb25ffdb401f920012fdc857b5c378c38d96a0272a3817cd10c45
4
+ data.tar.gz: cee5beec7c38bef5a379955591e33e209768302c3c096994f9c7288f2e463e7c
5
5
  SHA512:
6
- metadata.gz: 12a59226c122804fc1d95d15d56463ffff1d1dc64356cc1956fbf80da89d15732644743f023f5b789cb48958761dd0f6c28293de187ef4eb1241fa0b44339f86
7
- data.tar.gz: b2d33a09a58ea98a258964aab01dbab3db7b3b83d7d8cf18bbc6ac1390727f06b3f3d552914e757a79d1b6dbdc3424d8297f66cb76e06b69529de62d9990e361
6
+ metadata.gz: 2c7595d8c25136edb0d1f20228144283be27417c5b432ea65cc10d17a2a845f73944b2ce10d51b960479e3dad481f1cd00a06a07f730c5a0cbeaad3890a9783d
7
+ data.tar.gz: 7293be71c2c38410fcfb59e94b037f67210db6424286b83d106ef24833b4dd35e01aa1ecb97692af4ee1eb082dc0a1152350fa245f139b8a5e69fb95b96bbdaa
data/Gemfile CHANGED
@@ -6,3 +6,4 @@ source "https://rubygems.org"
6
6
  gemspec
7
7
 
8
8
  gem "rake", "~> 13.0"
9
+ gem "bundler-audit"
data/Gemfile.lock ADDED
@@ -0,0 +1,24 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ gems-validator (0.4.3)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ bundler-audit (0.9.1)
10
+ bundler (>= 1.2.0, < 3)
11
+ thor (~> 1.0)
12
+ rake (13.0.6)
13
+ thor (1.2.1)
14
+
15
+ PLATFORMS
16
+ ruby
17
+
18
+ DEPENDENCIES
19
+ bundler-audit
20
+ gems-validator!
21
+ rake (~> 13.0)
22
+
23
+ BUNDLED WITH
24
+ 1.17.3
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GemsValidator
4
+ class AuditService
5
+ def initialize()
6
+ @pwd = Dir.pwd
7
+ system "bundler-audit check --format json --output #{@pwd}/bundler-audit.json"
8
+ @read_file = read_parsed_file
9
+ end
10
+
11
+ def is_a_vulnerable_gem?(gem_name)
12
+ gem_vulnerabilities = @read_file["results"].select { |item| item["gem"]["name"] == gem_name }
13
+ generate_messages(gem_vulnerabilities)
14
+ end
15
+
16
+ private
17
+ def generate_messages(gem_vulnerabilities)
18
+ if (gem_vulnerabilities.empty?)
19
+ return Bundler.ui.confirm "[GemsValidator::Success] - A gem não apresenta nenhum vulnerabilidade!"
20
+ end
21
+
22
+ Bundler.ui.warn "[GemsValidator::Warning] - A gem #{gem_vulnerabilities[0]["gem"]["name"]} na versao #{gem_vulnerabilities[0]["gem"]["version"]} apresenta #{gem_vulnerabilities.size} vulnerabilidade#{gem_vulnerabilities.size ? "s" : ""}"
23
+
24
+ gem_vulnerabilities.map.with_index do |vulnerability, number|
25
+ Bundler.ui.warn "#{number+1} -> #{vulnerability["advisory"]["title"]} \n Nivel: #{vulnerability["advisory"]["criticality"]} \n URL da issue: #{vulnerability["advisory"]["url"]}"
26
+ end
27
+ end
28
+
29
+ def read_parsed_file
30
+ file = File.read("#{@pwd}/bundler-audit.json")
31
+ parsed_file = JSON.parse(file)
32
+ end
33
+ end
34
+ end
@@ -8,7 +8,7 @@ module GemsValidator
8
8
 
9
9
  # Response:
10
10
  # {
11
- # available_gems: {
11
+ # allowed_gems: {
12
12
  # [name]: {
13
13
  # approved_at: Date,
14
14
  # version?: String
@@ -8,7 +8,7 @@ module GemsValidator
8
8
  begin
9
9
  is_blocked?
10
10
  is_pending?
11
- is_available?
11
+ is_allowed?
12
12
  Bundler.ui.confirm "[GemsValidator::Success] - A gem #{@gem.name} está homologada e pode ser instalada!"
13
13
  rescue => error
14
14
  raise GemsValidator::FormatError.new(gem: @gem.name, message: error.to_s)
@@ -38,23 +38,31 @@ module GemsValidator
38
38
  end
39
39
  end
40
40
 
41
- def is_available?
42
- if gems_from_service["available_gems"].keys.include?(@gem.name)
43
- is_version_available?
41
+ def is_allowed?
42
+ if gems_from_service["allowed_gems"].keys.include?(@gem.name)
43
+ is_version_allowed?
44
+ is_deprecated?
44
45
  else
45
46
  raise "Essa gem não foi homologada."
46
47
  end
47
48
  end
48
49
 
49
- def is_version_available?
50
- if gems_from_service["available_gems"][@gem.name]["version"]
51
- required_version = gems_from_service["available_gems"][@gem.name]["version"]
50
+ def is_version_allowed?
51
+ if gems_from_service["allowed_gems"][@gem.name]["version"]
52
+ required_version = gems_from_service["allowed_gems"][@gem.name]["version"]
52
53
  if @gem.version.to_s != required_version
53
54
  raise "Essa gem só pode ser instalada na versão #{@gem.version.to_s}."
54
55
  end
55
56
  end
56
57
  end
57
58
 
59
+ def is_deprecated?
60
+ if gems_from_service["allowed_gems"][@gem.name]["deprecated"]
61
+ message = gems_from_service["allowed_gems"][@gem.name]["deprecated_message"]
62
+ Bundler.ui.warn "[GemsValidator::Warn] - A gem #{@gem.name} está depreciada. Motivo: #{message}"
63
+ end
64
+ end
65
+
58
66
  def gems_service
59
67
  @gems_service ||= GemsValidator::GemsService.new()
60
68
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GemsValidator
4
- VERSION = "0.4.0"
4
+ VERSION = "0.4.4"
5
5
  end
@@ -4,10 +4,11 @@ require 'net/http'
4
4
  require 'uri'
5
5
  require 'json'
6
6
 
7
- require_relative "gems-validator/version"
8
- require_relative "gems-validator/validate"
7
+ require_relative "gems-validator/audit-service"
9
8
  require_relative "gems-validator/format-error"
10
9
  require_relative "gems-validator/gems-service"
10
+ require_relative "gems-validator/validate"
11
+ require_relative "gems-validator/version"
11
12
 
12
13
  module GemsValidator
13
14
  class << self
@@ -15,8 +16,11 @@ module GemsValidator
15
16
  return if defined?(@registered) && @registered
16
17
  @registered = true
17
18
 
18
- Bundler::Plugin.add_hook('before-install') do |dependencie|
19
- GemsValidator::Validate.exec(dependencie)
19
+ GemsValidator::AuditService.new
20
+
21
+ Bundler::Plugin.add_hook('before-install') do |gem|
22
+ GemsValidator::Validate.exec(gem)
23
+ GemsValidator::AuditService.is_a_vulnerable_gem(gem.name)
20
24
  end
21
25
  end
22
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gems-validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - henriquesml
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-21 00:00:00.000000000 Z
11
+ date: 2022-06-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: gems-validator
14
14
  email:
@@ -20,11 +20,13 @@ files:
20
20
  - ".rspec"
21
21
  - Dockerfile
22
22
  - Gemfile
23
+ - Gemfile.lock
23
24
  - Makefile
24
25
  - README.md
25
26
  - Rakefile
26
27
  - docker-compose.yml
27
28
  - lib/gems-validator.rb
29
+ - lib/gems-validator/audit-service.rb
28
30
  - lib/gems-validator/format-error.rb
29
31
  - lib/gems-validator/gems-service.rb
30
32
  - lib/gems-validator/validate.rb
@@ -48,7 +50,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
48
50
  - !ruby/object:Gem::Version
49
51
  version: '0'
50
52
  requirements: []
51
- rubygems_version: 3.3.7
53
+ rubygems_version: 3.0.3
52
54
  signing_key:
53
55
  specification_version: 4
54
56
  summary: gems-validator