gems-validator 0.1.2 → 0.2.1
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.lock +1 -1
- data/lib/gems-validator/format-error.rb +7 -0
- data/lib/gems-validator/gems-service.rb +38 -0
- data/lib/gems-validator/validate.rb +57 -2
- data/lib/gems-validator/version.rb +1 -1
- data/lib/gems-validator.rb +6 -3
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37df10e4443084cbe40e5c844889a26ea5f5a63aae78c825039584dcb28c3998
|
4
|
+
data.tar.gz: 2cf0f4cbe1853a2311a05aa7ac1640f54dd42d16179f2cd5fb32e0a9691f9279
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40d24ca735aac51e8bf62df70b3cc9b58976453f1d32869f8bc149c428723214e3caba1ce4739e0fbf61fc895a6c8e850cf4acb921ca560ebb0bba11f0723468
|
7
|
+
data.tar.gz: 3c567cd0304b7853594eed687dd867ed00a1f441d13062ca3ea9f361f55a01bb4be6fb99b48e2ce5ccdf426c4c81e2dd7b4b6a93452bef21b16c25d56f91a001
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,38 @@
|
|
1
|
+
module GemsValidator
|
2
|
+
class GemsService
|
3
|
+
def initialize()
|
4
|
+
@access_token = 'eG5hJT9SZUQyYXpyLUBUX2pqJVU0eiRmVjl5RisjdUV0WmY4LTRWanZ2Rz1VVyo3VHlYXndCbms4V3dkLU1MWA=='
|
5
|
+
end
|
6
|
+
|
7
|
+
# Response:
|
8
|
+
# {
|
9
|
+
# available_gems: {
|
10
|
+
# [name]: {
|
11
|
+
# approved_at: Date,
|
12
|
+
# version?: String
|
13
|
+
# }
|
14
|
+
# },
|
15
|
+
# blocked_gems: {
|
16
|
+
# [name]: {
|
17
|
+
# blocked_at: Date,
|
18
|
+
# version?: String
|
19
|
+
# }
|
20
|
+
# },
|
21
|
+
# gems_pending_approval: {
|
22
|
+
# [name]: {
|
23
|
+
# requested_at: Date
|
24
|
+
# }
|
25
|
+
# }
|
26
|
+
# }
|
27
|
+
def get_gems()
|
28
|
+
response = request
|
29
|
+
JSON.parse(response.body)["data"]
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
def request
|
34
|
+
uri = URI('http://localhost:3030/gems/formatted')
|
35
|
+
Net::HTTP.get_response(uri, { "Authorization" => "Bearer #{@access_token}" })
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -4,8 +4,63 @@ module GemsValidator
|
|
4
4
|
module Validate
|
5
5
|
class << self
|
6
6
|
def exec(gem)
|
7
|
-
|
8
|
-
|
7
|
+
@gem = gem
|
8
|
+
begin
|
9
|
+
is_blocked?
|
10
|
+
is_pending?
|
11
|
+
is_available?
|
12
|
+
p "[Gems Validator] - A gem #{gem} foi instalada com sucesso!"
|
13
|
+
rescue => error
|
14
|
+
raise GemsValidator::FormatError.new(gem: @gem.name, message: error.to_s)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
def is_blocked?
|
20
|
+
if gems_from_service["blocked_gems"].keys.include?(@gem.name)
|
21
|
+
is_version_blocked?
|
22
|
+
raise "Essa gem foi bloqueada."
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def is_version_blocked?
|
27
|
+
if gems_from_service["blocked_gems"][@gem.name]["version"]
|
28
|
+
blocked_version = gems_from_service["blocked_gems"][@gem.name]["version"]
|
29
|
+
if @gem.version.to_s == blocked_version
|
30
|
+
raise "A versão #{@gem.version.to_s} foi bloqueada."
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def is_pending?
|
36
|
+
if gems_from_service["pending_gems"].keys.include?(@gem.name)
|
37
|
+
raise "Essa gem está aguardando aprovação."
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def is_available?
|
42
|
+
if gems_from_service["available_gems"].keys.include?(@gem.name)
|
43
|
+
is_version_available?
|
44
|
+
else
|
45
|
+
raise "Essa gem não pode ser instalada."
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
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"]
|
52
|
+
if @gem.version.to_s != required_version
|
53
|
+
raise "Essa gem só pode ser instalada na versão #{@gem.version.to_s}."
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def gems_service
|
59
|
+
@gems_service ||= GemsValidator::GemsService.new()
|
60
|
+
end
|
61
|
+
|
62
|
+
def gems_from_service
|
63
|
+
@gems_from_service ||= gems_service.get_gems()
|
9
64
|
end
|
10
65
|
end
|
11
66
|
end
|
data/lib/gems-validator.rb
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'net/http'
|
4
|
+
require 'uri'
|
5
|
+
require 'json'
|
6
|
+
|
3
7
|
require_relative "gems-validator/version"
|
4
8
|
require_relative "gems-validator/validate"
|
9
|
+
require_relative "gems-validator/format-error"
|
10
|
+
require_relative "gems-validator/gems-service"
|
5
11
|
|
6
12
|
module GemsValidator
|
7
13
|
class << self
|
@@ -11,9 +17,6 @@ module GemsValidator
|
|
11
17
|
|
12
18
|
Bundler::Plugin.add_hook('before-install') do |dependencie|
|
13
19
|
GemsValidator::Validate.exec(dependencie)
|
14
|
-
if dependencie.name == "rake"
|
15
|
-
raise "NÃO PODE INSTALAR"
|
16
|
-
end
|
17
20
|
end
|
18
21
|
end
|
19
22
|
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.1
|
4
|
+
version: 0.2.1
|
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-15 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: gems-validator
|
14
14
|
email:
|
@@ -22,6 +22,8 @@ files:
|
|
22
22
|
- Gemfile.lock
|
23
23
|
- Rakefile
|
24
24
|
- lib/gems-validator.rb
|
25
|
+
- lib/gems-validator/format-error.rb
|
26
|
+
- lib/gems-validator/gems-service.rb
|
25
27
|
- lib/gems-validator/validate.rb
|
26
28
|
- lib/gems-validator/version.rb
|
27
29
|
- plugins.rb
|