gitlab-license 0.0.4 → 1.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 458edee6f3e0f3ef81ae4734cc63af70a667f383
4
- data.tar.gz: 4adc60bab3dac96bee869135a3896731bf71a5d0
2
+ SHA256:
3
+ metadata.gz: dc45d84ba41ec6f999cd4569cdf27b7acaf2476cf87c35e4121369633e1d3251
4
+ data.tar.gz: 5076ad7c092c002fbf727b8c16fefc41aeb836e1a150f82d311dd3e5b43cac25
5
5
  SHA512:
6
- metadata.gz: 369ed3f123ac2cc4ea140234597f89d05c65f178f7c8e3312a2de17e3554c8838e473b1e6e76af54ee56963465283451a732c8bec4d44b04138ecad1ed72d86f
7
- data.tar.gz: aec729297882d8ca53352a78fefec5748e83a18b40aea8734ac83a492d70fd6e0cccb2f841206505b4d38eb234500dd577ed116b8ff19794df3fd0f54f439a62
6
+ metadata.gz: ab4289143609c6f7d9a225d626b8a8c939e734b8eb39105a1994898b63854416ce2ab5b74ee1cc0dcbaee75c6eec28d5fe2a09a3f638ce08fa4b45b29b9af642
7
+ data.tar.gz: 9b1e46528d6d2309d40dfba3408fbff1e1edc93b5437ea7b354b08573eb0331a3dcb039b0bf996103a713e3e1470abfadf265c0435b2d33e567af07aa52fc71d
data/.rubocop.yml ADDED
@@ -0,0 +1,22 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ require: rubocop-rspec
4
+
5
+ Metrics/BlockLength:
6
+ ExcludedMethods: ['describe', 'context']
7
+
8
+ Style/Alias:
9
+ EnforcedStyle: prefer_alias_method
10
+ Enabled: true
11
+
12
+ Style/HashEachMethods:
13
+ Enabled: true
14
+
15
+ Style/HashTransformKeys:
16
+ Enabled: true
17
+
18
+ Style/HashTransformValues:
19
+ Enabled: true
20
+
21
+ RSpec/MultipleExpectations:
22
+ Enabled: false
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,84 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2020-03-02 14:37:54 -0500 using RuboCop version 0.80.1.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 6
10
+ Metrics/AbcSize:
11
+ Max: 36
12
+
13
+ # Offense count: 1
14
+ # Configuration parameters: CountComments.
15
+ Metrics/ClassLength:
16
+ Max: 129
17
+
18
+ # Offense count: 3
19
+ Metrics/CyclomaticComplexity:
20
+ Max: 16
21
+
22
+ # Offense count: 5
23
+ # Configuration parameters: CountComments, ExcludedMethods.
24
+ Metrics/MethodLength:
25
+ Max: 38
26
+
27
+ # Offense count: 3
28
+ Metrics/PerceivedComplexity:
29
+ Max: 16
30
+
31
+ # Offense count: 3
32
+ Style/Documentation:
33
+ Exclude:
34
+ - 'spec/**/*'
35
+ - 'test/**/*'
36
+ - 'lib/gitlab/license.rb'
37
+ - 'lib/gitlab/license/boundary.rb'
38
+ - 'lib/gitlab/license/encryptor.rb'
39
+
40
+ # Offense count: 12
41
+ # Cop supports --auto-correct.
42
+ # Configuration parameters: EnforcedStyle.
43
+ # SupportedStyles: always, always_true, never
44
+ Style/FrozenStringLiteralComment:
45
+ Exclude:
46
+ - 'Gemfile'
47
+ - 'Rakefile'
48
+ - 'bin/console'
49
+ - 'gitlab-license.gemspec'
50
+ - 'lib/gitlab/license.rb'
51
+ - 'lib/gitlab/license/boundary.rb'
52
+ - 'lib/gitlab/license/encryptor.rb'
53
+ - 'lib/gitlab/license/version.rb'
54
+ - 'spec/gitlab/license/boundary_spec.rb'
55
+ - 'spec/gitlab/license/encryptor_spec.rb'
56
+ - 'spec/gitlab/license_spec.rb'
57
+ - 'spec/spec_helper.rb'
58
+
59
+ # Offense count: 1
60
+ # Configuration parameters: MinBodyLength.
61
+ Style/GuardClause:
62
+ Exclude:
63
+ - 'lib/gitlab/license.rb'
64
+
65
+ # Offense count: 1
66
+ # Cop supports --auto-correct.
67
+ # Configuration parameters: EnforcedStyle.
68
+ # SupportedStyles: short, verbose
69
+ Style/PreferredHashMethods:
70
+ Exclude:
71
+ - 'lib/gitlab/license.rb'
72
+
73
+ # Offense count: 1
74
+ # Cop supports --auto-correct.
75
+ Style/RescueModifier:
76
+ Exclude:
77
+ - 'lib/gitlab/license.rb'
78
+
79
+ # Offense count: 14
80
+ # Cop supports --auto-correct.
81
+ # Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
82
+ # URISchemes: http, https
83
+ Layout/LineLength:
84
+ Max: 104
data/Rakefile CHANGED
@@ -1 +1 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "gitlab/license"
3
+ require 'bundler/setup'
4
+ require 'gitlab/license'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "gitlab/license"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start
@@ -1,24 +1,28 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'gitlab/license/version'
5
4
 
6
5
  Gem::Specification.new do |spec|
7
- spec.name = "gitlab-license"
6
+ spec.name = 'gitlab-license'
8
7
  spec.version = Gitlab::License::VERSION
9
- spec.authors = ["Douwe Maan"]
10
- spec.email = ["douwe@gitlab.com"]
8
+ spec.authors = ['Douwe Maan', 'Stan Hu', 'Tyler Amos']
9
+ spec.email = ['douwe@gitlab.com', 'stanhu@gitlab.com', 'tamos@gitlab.com']
11
10
 
12
- spec.summary = %q{gitlab-license helps you generate, verify and enforce software licenses.}
13
- spec.homepage = "https://gitlab.com/gitlab-org/gitlab-license"
14
- spec.license = "MIT"
11
+ spec.summary = 'gitlab-license helps you generate, verify and enforce software licenses.'
12
+ spec.homepage = 'https://dev.gitlab.org/gitlab/gitlab-license'
13
+ spec.license = 'MIT'
15
14
 
16
15
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
- spec.bindir = "exe"
16
+ spec.bindir = 'exe'
18
17
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
- spec.require_paths = ["lib"]
18
+ spec.require_paths = ['lib']
20
19
 
21
- spec.add_development_dependency "bundler", "~> 1.9"
22
- spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_development_dependency "byebug"
20
+ spec.required_ruby_version = '>= 2.3.0'
21
+
22
+ spec.add_development_dependency 'bundler', '~> 1.9'
23
+ spec.add_development_dependency 'byebug'
24
+ spec.add_development_dependency 'rake', '~> 10.0'
25
+ spec.add_development_dependency 'rspec', '~> 3.9'
26
+ spec.add_development_dependency 'rubocop', '~> 0.80.1'
27
+ spec.add_development_dependency 'rubocop-rspec', '~> 1.38.1'
24
28
  end
@@ -1,11 +1,11 @@
1
- require "openssl"
2
- require "date"
3
- require "json"
4
- require "base64"
1
+ require 'openssl'
2
+ require 'date'
3
+ require 'json'
4
+ require 'base64'
5
5
 
6
- require "gitlab/license/version"
7
- require "gitlab/license/encryptor"
8
- require "gitlab/license/boundary"
6
+ require 'gitlab/license/version'
7
+ require 'gitlab/license/encryptor'
8
+ require 'gitlab/license/boundary'
9
9
 
10
10
  module Gitlab
11
11
  class License
@@ -18,34 +18,31 @@ module Gitlab
18
18
  @encryption_key = nil
19
19
 
20
20
  def encryption_key=(key)
21
- if key && !key.is_a?(OpenSSL::PKey::RSA)
22
- raise ArgumentError, "No RSA encryption key provided."
23
- end
21
+ raise ArgumentError, 'No RSA encryption key provided.' if key && !key.is_a?(OpenSSL::PKey::RSA)
24
22
 
25
23
  @encryption_key = key
24
+ @encryptor = nil
26
25
  end
27
26
 
28
27
  def encryptor
29
- @encryptor ||= Encryptor.new(self.encryption_key)
28
+ @encryptor ||= Encryptor.new(encryption_key)
30
29
  end
31
30
 
32
31
  def import(data)
33
- if data.nil?
34
- raise ImportError, "No license data."
35
- end
32
+ raise ImportError, 'No license data.' if data.nil?
36
33
 
37
34
  data = Boundary.remove_boundary(data)
38
35
 
39
36
  begin
40
37
  license_json = encryptor.decrypt(data)
41
38
  rescue Encryptor::Error
42
- raise ImportError, "License data could not be decrypted."
39
+ raise ImportError, 'License data could not be decrypted.'
43
40
  end
44
41
 
45
42
  begin
46
43
  attributes = JSON.parse(license_json)
47
44
  rescue JSON::ParseError
48
- raise ImportError, "License data is invalid JSON."
45
+ raise ImportError, 'License data is invalid JSON.'
49
46
  end
50
47
 
51
48
  new(attributes)
@@ -53,9 +50,9 @@ module Gitlab
53
50
  end
54
51
 
55
52
  attr_reader :version
56
- attr_accessor :licensee, :starts_at, :expires_at
57
- attr_accessor :notify_admins_at, :notify_users_at, :block_changes_at
58
- attr_accessor :restrictions
53
+ attr_accessor :licensee, :starts_at, :expires_at, :notify_admins_at,
54
+ :notify_users_at, :block_changes_at, :type, :last_synced_at,
55
+ :next_sync_at, :restrictions
59
56
 
60
57
  alias_method :issued_at, :starts_at
61
58
  alias_method :issued_at=, :starts_at=
@@ -65,51 +62,69 @@ module Gitlab
65
62
  end
66
63
 
67
64
  def valid?
68
- return false if !licensee || !licensee.is_a?(Hash) || licensee.length == 0
69
- return false if !starts_at || !starts_at.is_a?(Date)
70
- return false if expires_at && !expires_at.is_a?(Date)
71
- return false if notify_admins_at && !notify_admins_at.is_a?(Date)
72
- return false if notify_users_at && !notify_users_at.is_a?(Date)
73
- return false if block_changes_at && !block_changes_at.is_a?(Date)
74
- return false if restrictions && !restrictions.is_a?(Hash)
75
-
76
- true
65
+ if !licensee || !licensee.is_a?(Hash) || licensee.empty?
66
+ false
67
+ elsif !starts_at || !starts_at.is_a?(Date)
68
+ false
69
+ elsif expires_at && !expires_at.is_a?(Date)
70
+ false
71
+ elsif notify_admins_at && !notify_admins_at.is_a?(Date)
72
+ false
73
+ elsif notify_users_at && !notify_users_at.is_a?(Date)
74
+ false
75
+ elsif block_changes_at && !block_changes_at.is_a?(Date)
76
+ false
77
+ elsif last_synced_at && !last_synced_at.is_a?(DateTime)
78
+ false
79
+ elsif next_sync_at && !next_sync_at.is_a?(DateTime)
80
+ false
81
+ elsif type && type != 'cloud'
82
+ false
83
+ elsif restrictions && !restrictions.is_a?(Hash)
84
+ false
85
+ else
86
+ true
87
+ end
77
88
  end
78
89
 
79
90
  def validate!
80
- raise ValidationError, "License is invalid" unless valid?
91
+ raise ValidationError, 'License is invalid' unless valid?
81
92
  end
82
93
 
83
94
  def will_expire?
84
- self.expires_at
95
+ expires_at
85
96
  end
86
97
 
87
98
  def will_notify_admins?
88
- self.notify_admins_at
99
+ notify_admins_at
89
100
  end
90
101
 
91
102
  def will_notify_users?
92
- self.notify_users_at
103
+ notify_users_at
93
104
  end
94
105
 
95
106
  def will_block_changes?
96
- self.block_changes_at
107
+ block_changes_at
108
+ end
109
+
110
+ def will_sync?
111
+ next_sync_at
97
112
  end
98
113
 
99
114
  def expired?
100
- will_expire? && Date.today >= self.expires_at
115
+ will_expire? && Date.today >= expires_at
101
116
  end
102
117
 
103
118
  def notify_admins?
104
- will_notify_admins? && Date.today >= self.notify_admins_at
119
+ will_notify_admins? && Date.today >= notify_admins_at
105
120
  end
106
121
 
107
122
  def notify_users?
108
- will_notify_users? && Date.today >= self.notify_users_at
123
+ will_notify_users? && Date.today >= notify_users_at
109
124
  end
110
125
 
111
126
  def block_changes?
112
- will_block_changes? && Date.today >= self.block_changes_at
127
+ will_block_changes? && Date.today >= block_changes_at
113
128
  end
114
129
 
115
130
  def restricted?(key = nil)
@@ -123,35 +138,37 @@ module Gitlab
123
138
  def attributes
124
139
  hash = {}
125
140
 
126
- hash["version"] = self.version
127
- hash["licensee"] = self.licensee
141
+ hash['version'] = version
142
+ hash['licensee'] = licensee
128
143
 
129
144
  # `issued_at` is the legacy name for starts_at.
130
145
  # TODO: Move to starts_at in a next version.
131
- hash["issued_at"] = self.starts_at
132
- hash["expires_at"] = self.expires_at if self.will_expire?
146
+ hash['issued_at'] = starts_at
147
+ hash['expires_at'] = expires_at if will_expire?
133
148
 
134
- hash["notify_admins_at"] = self.notify_admins_at if self.will_notify_admins?
135
- hash["notify_users_at"] = self.notify_users_at if self.will_notify_users?
136
- hash["block_changes_at"] = self.block_changes_at if self.will_block_changes?
149
+ hash['notify_admins_at'] = notify_admins_at if will_notify_admins?
150
+ hash['notify_users_at'] = notify_users_at if will_notify_users?
151
+ hash['block_changes_at'] = block_changes_at if will_block_changes?
137
152
 
138
- hash["restrictions"] = self.restrictions if self.restricted?
153
+ hash['next_sync_at'] = next_sync_at if will_sync?
154
+ hash['last_synced_at'] = last_synced_at if will_sync?
155
+ hash['type'] = type
156
+
157
+ hash['restrictions'] = restrictions if restricted?
139
158
 
140
159
  hash
141
160
  end
142
161
 
143
- def to_json
144
- JSON.dump(self.attributes)
162
+ def to_json(*_args)
163
+ JSON.dump(attributes)
145
164
  end
146
165
 
147
166
  def export(boundary: nil)
148
167
  validate!
149
168
 
150
- data = self.class.encryptor.encrypt(self.to_json)
169
+ data = self.class.encryptor.encrypt(to_json)
151
170
 
152
- if boundary
153
- data = Boundary.add_boundary(data, boundary)
154
- end
171
+ data = Boundary.add_boundary(data, boundary) if boundary
155
172
 
156
173
  data
157
174
  end
@@ -161,31 +178,41 @@ module Gitlab
161
178
  def load_attributes(attributes)
162
179
  attributes = Hash[attributes.map { |k, v| [k.to_s, v] }]
163
180
 
164
- version = attributes["version"] || 1
165
- unless version && version == 1
166
- raise ArgumentError, "Version is too new"
167
- end
181
+ version = attributes['version'] || 1
182
+ raise ArgumentError, 'Version is too new' unless version && version == 1
168
183
 
169
184
  @version = version
170
185
 
171
- @licensee = attributes["licensee"]
186
+ @licensee = attributes['licensee']
187
+ @type = attributes['type']
172
188
 
173
189
  # `issued_at` is the legacy name for starts_at.
174
190
  # TODO: Move to starts_at in a next version.
175
- %w(issued_at expires_at notify_admins_at notify_users_at block_changes_at).each do |attr|
176
- value = attributes[attr]
177
- value = Date.parse(value) rescue nil if value.is_a?(String)
178
-
179
- next unless value
191
+ %w[issued_at expires_at notify_admins_at notify_users_at block_changes_at].each do |attr_name|
192
+ set_date_attribute(attr_name, attributes[attr_name])
193
+ end
180
194
 
181
- send("#{attr}=", value)
195
+ %w[last_synced_at next_sync_at].each do |attr_name|
196
+ set_datetime_attribute(attr_name, attributes[attr_name])
182
197
  end
183
198
 
184
- restrictions = attributes["restrictions"]
185
- if restrictions && restrictions.is_a?(Hash)
199
+ restrictions = attributes['restrictions']
200
+ if restrictions&.is_a?(Hash)
186
201
  restrictions = Hash[restrictions.map { |k, v| [k.to_sym, v] }]
187
202
  @restrictions = restrictions
188
203
  end
189
204
  end
205
+
206
+ def set_date_attribute(attr_name, value, date_class = Date)
207
+ value = date_class.parse(value) rescue nil if value.is_a?(String)
208
+
209
+ return unless value
210
+
211
+ send("#{attr_name}=", value)
212
+ end
213
+
214
+ def set_datetime_attribute(attr_name, value)
215
+ set_date_attribute(attr_name, value, DateTime)
216
+ end
190
217
  end
191
218
  end
@@ -15,9 +15,9 @@ module Gitlab
15
15
 
16
16
  padding = total_padding / 2.0
17
17
  [
18
- "-" * padding.ceil,
18
+ '-' * padding.ceil,
19
19
  message,
20
- "-" * padding.floor
20
+ '-' * padding.floor
21
21
  ].join
22
22
  end
23
23
 
@@ -8,17 +8,13 @@ module Gitlab
8
8
  attr_accessor :key
9
9
 
10
10
  def initialize(key)
11
- if key && !key.is_a?(OpenSSL::PKey::RSA)
12
- raise KeyError, "No RSA encryption key provided."
13
- end
11
+ raise KeyError, 'No RSA encryption key provided.' if key && !key.is_a?(OpenSSL::PKey::RSA)
14
12
 
15
13
  @key = key
16
14
  end
17
15
 
18
16
  def encrypt(data)
19
- unless key.private?
20
- raise KeyError, "Provided key is not a private key."
21
- end
17
+ raise KeyError, 'Provided key is not a private key.' unless key.private?
22
18
 
23
19
  # Encrypt the data using symmetric AES encryption.
24
20
  cipher = OpenSSL::Cipher::AES128.new(:CBC)
@@ -29,12 +25,12 @@ module Gitlab
29
25
  encrypted_data = cipher.update(data) + cipher.final
30
26
 
31
27
  # Encrypt the AES key using asymmetric RSA encryption.
32
- encrypted_key = self.key.private_encrypt(aes_key)
28
+ encrypted_key = key.private_encrypt(aes_key)
33
29
 
34
30
  encryption_data = {
35
- "data" => Base64.encode64(encrypted_data),
36
- "key" => Base64.encode64(encrypted_key),
37
- "iv" => Base64.encode64(aes_iv)
31
+ 'data' => Base64.encode64(encrypted_data),
32
+ 'key' => Base64.encode64(encrypted_key),
33
+ 'iv' => Base64.encode64(aes_iv)
38
34
  }
39
35
 
40
36
  json_data = JSON.dump(encryption_data)
@@ -42,31 +38,29 @@ module Gitlab
42
38
  end
43
39
 
44
40
  def decrypt(data)
45
- unless key.public?
46
- raise KeyError, "Provided key is not a public key."
47
- end
41
+ raise KeyError, 'Provided key is not a public key.' unless key.public?
48
42
 
49
43
  json_data = Base64.decode64(data.chomp)
50
44
 
51
45
  begin
52
46
  encryption_data = JSON.parse(json_data)
53
47
  rescue JSON::ParserError
54
- raise DecryptionError, "Encryption data is invalid JSON."
48
+ raise DecryptionError, 'Encryption data is invalid JSON.'
55
49
  end
56
50
 
57
- unless %w(data key iv).all? { |key| encryption_data[key] }
58
- raise DecryptionError, "Required field missing from encryption data."
51
+ unless %w[data key iv].all? { |key| encryption_data[key] }
52
+ raise DecryptionError, 'Required field missing from encryption data.'
59
53
  end
60
54
 
61
- encrypted_data = Base64.decode64(encryption_data["data"])
62
- encrypted_key = Base64.decode64(encryption_data["key"])
63
- aes_iv = Base64.decode64(encryption_data["iv"])
55
+ encrypted_data = Base64.decode64(encryption_data['data'])
56
+ encrypted_key = Base64.decode64(encryption_data['key'])
57
+ aes_iv = Base64.decode64(encryption_data['iv'])
64
58
 
65
59
  begin
66
60
  # Decrypt the AES key using asymmetric RSA encryption.
67
61
  aes_key = self.key.public_decrypt(encrypted_key)
68
62
  rescue OpenSSL::PKey::RSAError
69
- raise DecryptionError, "AES encryption key could not be decrypted."
63
+ raise DecryptionError, 'AES encryption key could not be decrypted.'
70
64
  end
71
65
 
72
66
  # Decrypt the data using symmetric AES encryption.
@@ -74,21 +68,21 @@ module Gitlab
74
68
  cipher.decrypt
75
69
 
76
70
  begin
77
- cipher.key = aes_key
71
+ cipher.key = aes_key
78
72
  rescue OpenSSL::Cipher::CipherError
79
- raise DecryptionError, "AES encryption key is invalid."
73
+ raise DecryptionError, 'AES encryption key is invalid.'
80
74
  end
81
75
 
82
76
  begin
83
- cipher.iv = aes_iv
77
+ cipher.iv = aes_iv
84
78
  rescue OpenSSL::Cipher::CipherError
85
- raise DecryptionError, "AES IV is invalid."
79
+ raise DecryptionError, 'AES IV is invalid.'
86
80
  end
87
81
 
88
82
  begin
89
83
  data = cipher.update(encrypted_data) + cipher.final
90
84
  rescue OpenSSL::Cipher::CipherError
91
- raise DecryptionError, "Data could not be decrypted."
85
+ raise DecryptionError, 'Data could not be decrypted.'
92
86
  end
93
87
 
94
88
  data
@@ -1,5 +1,5 @@
1
1
  module Gitlab
2
2
  class License
3
- VERSION = "0.0.4"
3
+ VERSION = '1.3.1'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitlab-license
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Douwe Maan
8
+ - Stan Hu
9
+ - Tyler Amos
8
10
  autorequire:
9
11
  bindir: exe
10
12
  cert_chain: []
11
- date: 2015-11-24 00:00:00.000000000 Z
13
+ date: 2021-02-23 00:00:00.000000000 Z
12
14
  dependencies:
13
15
  - !ruby/object:Gem::Dependency
14
16
  name: bundler
@@ -24,6 +26,20 @@ dependencies:
24
26
  - - "~>"
25
27
  - !ruby/object:Gem::Version
26
28
  version: '1.9'
29
+ - !ruby/object:Gem::Dependency
30
+ name: byebug
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
27
43
  - !ruby/object:Gem::Dependency
28
44
  name: rake
29
45
  requirement: !ruby/object:Gem::Requirement
@@ -39,28 +55,60 @@ dependencies:
39
55
  - !ruby/object:Gem::Version
40
56
  version: '10.0'
41
57
  - !ruby/object:Gem::Dependency
42
- name: byebug
58
+ name: rspec
43
59
  requirement: !ruby/object:Gem::Requirement
44
60
  requirements:
45
- - - ">="
61
+ - - "~>"
46
62
  - !ruby/object:Gem::Version
47
- version: '0'
63
+ version: '3.9'
48
64
  type: :development
49
65
  prerelease: false
50
66
  version_requirements: !ruby/object:Gem::Requirement
51
67
  requirements:
52
- - - ">="
68
+ - - "~>"
53
69
  - !ruby/object:Gem::Version
54
- version: '0'
70
+ version: '3.9'
71
+ - !ruby/object:Gem::Dependency
72
+ name: rubocop
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: 0.80.1
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: 0.80.1
85
+ - !ruby/object:Gem::Dependency
86
+ name: rubocop-rspec
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: 1.38.1
92
+ type: :development
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: 1.38.1
55
99
  description:
56
100
  email:
57
101
  - douwe@gitlab.com
102
+ - stanhu@gitlab.com
103
+ - tamos@gitlab.com
58
104
  executables: []
59
105
  extensions: []
60
106
  extra_rdoc_files: []
61
107
  files:
62
108
  - ".gitignore"
63
109
  - ".rspec"
110
+ - ".rubocop.yml"
111
+ - ".rubocop_todo.yml"
64
112
  - ".travis.yml"
65
113
  - Gemfile
66
114
  - LICENSE.txt
@@ -73,7 +121,7 @@ files:
73
121
  - lib/gitlab/license/boundary.rb
74
122
  - lib/gitlab/license/encryptor.rb
75
123
  - lib/gitlab/license/version.rb
76
- homepage: https://gitlab.com/gitlab-org/gitlab-license
124
+ homepage: https://dev.gitlab.org/gitlab/gitlab-license
77
125
  licenses:
78
126
  - MIT
79
127
  metadata: {}
@@ -85,15 +133,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
85
133
  requirements:
86
134
  - - ">="
87
135
  - !ruby/object:Gem::Version
88
- version: '0'
136
+ version: 2.3.0
89
137
  required_rubygems_version: !ruby/object:Gem::Requirement
90
138
  requirements:
91
139
  - - ">="
92
140
  - !ruby/object:Gem::Version
93
141
  version: '0'
94
142
  requirements: []
95
- rubyforge_project:
96
- rubygems_version: 2.4.8
143
+ rubygems_version: 3.0.3
97
144
  signing_key:
98
145
  specification_version: 4
99
146
  summary: gitlab-license helps you generate, verify and enforce software licenses.