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 +4 -4
- data/Gemfile +1 -0
- data/Gemfile.lock +24 -0
- data/lib/gems-validator/audit-service.rb +34 -0
- data/lib/gems-validator/gems-service.rb +1 -1
- data/lib/gems-validator/validate.rb +15 -7
- data/lib/gems-validator/version.rb +1 -1
- data/lib/gems-validator.rb +8 -4
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bfd35451ef8cb25ffdb401f920012fdc857b5c378c38d96a0272a3817cd10c45
|
4
|
+
data.tar.gz: cee5beec7c38bef5a379955591e33e209768302c3c096994f9c7288f2e463e7c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c7595d8c25136edb0d1f20228144283be27417c5b432ea65cc10d17a2a845f73944b2ce10d51b960479e3dad481f1cd00a06a07f730c5a0cbeaad3890a9783d
|
7
|
+
data.tar.gz: 7293be71c2c38410fcfb59e94b037f67210db6424286b83d106ef24833b4dd35e01aa1ecb97692af4ee1eb082dc0a1152350fa245f139b8a5e69fb95b96bbdaa
|
data/Gemfile
CHANGED
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
|
begin
|
9
9
|
is_blocked?
|
10
10
|
is_pending?
|
11
|
-
|
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
|
42
|
-
if gems_from_service["
|
43
|
-
|
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
|
50
|
-
if gems_from_service["
|
51
|
-
required_version = gems_from_service["
|
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
|
data/lib/gems-validator.rb
CHANGED
@@ -4,10 +4,11 @@ require 'net/http'
|
|
4
4
|
require 'uri'
|
5
5
|
require 'json'
|
6
6
|
|
7
|
-
require_relative "gems-validator/
|
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
|
-
|
19
|
-
|
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.
|
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-
|
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
|
53
|
+
rubygems_version: 3.0.3
|
52
54
|
signing_key:
|
53
55
|
specification_version: 4
|
54
56
|
summary: gems-validator
|