ledger_sync 1.5.2 → 1.6.0
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/.gitignore +1 -0
- data/.travis.yml +0 -1
- data/Gemfile.lock +19 -17
- data/ledger_sync.gemspec +3 -2
- data/lib/ledger_sync.rb +1 -4
- data/lib/ledger_sync/ledgers/client.rb +10 -4
- data/lib/ledger_sync/ledgers/mixins/infer_config_mixin.rb +3 -3
- data/lib/ledger_sync/ledgers/mixins/infer_resource_class_mixin.rb +5 -2
- data/lib/ledger_sync/ledgers/mixins/infer_serializer_mixin.rb +17 -9
- data/lib/ledger_sync/ledgers/mixins/serialization_mixin.rb +1 -1
- data/lib/ledger_sync/ledgers/netsuite/record/metadata.rb +4 -0
- data/lib/ledger_sync/ledgers/quickbooks_online/client.rb +0 -33
- data/lib/ledger_sync/ledgers/quickbooks_online/operation.rb +2 -0
- data/lib/ledger_sync/test/support.rb +9 -0
- data/lib/ledger_sync/test/support/qa/ledger_support_setup.rb +32 -11
- data/lib/ledger_sync/util/dotenv_updator.rb +46 -0
- data/lib/ledger_sync/version.rb +1 -1
- metadata +34 -19
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a222c327386f4dc5ec093f20d1396a77f4cb65e62bd46e13896f5f9a160c3cc3
|
|
4
|
+
data.tar.gz: 4545a5d71b699d92afc1d7a5f226a646965011e97cfe85b142f742920d28abf5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6fa511fac28518775882d9b4644a3f5becea15a8529f4c44a59a7e758908a020d10741a1377afb0dfac6ff6d10ee0ca678bd8aef928b547b7d805145203cda2f
|
|
7
|
+
data.tar.gz: 6a38f96c0bbb00606c5d4521f48103e29dcb60fea339e1a6c6133e45d9293760c39e16b80ac143e28686a05431ccc998b00dc348929276d5d78f2915bcc91035
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
ledger_sync (1.
|
|
4
|
+
ledger_sync (1.6.0)
|
|
5
5
|
activemodel
|
|
6
6
|
colorize
|
|
7
|
-
dotenv (~> 2.7.6)
|
|
8
7
|
dry-schema (~> 1.5.4)
|
|
9
8
|
dry-validation (~> 1.5.6)
|
|
10
9
|
faraday
|
|
@@ -41,6 +40,7 @@ GEM
|
|
|
41
40
|
bump (0.9.0)
|
|
42
41
|
byebug (11.1.3)
|
|
43
42
|
childprocess (4.0.0)
|
|
43
|
+
climate_control (0.2.0)
|
|
44
44
|
colorator (1.1.0)
|
|
45
45
|
colorize (0.8.1)
|
|
46
46
|
concurrent-ruby (1.1.7)
|
|
@@ -186,19 +186,19 @@ GEM
|
|
|
186
186
|
resonad (1.3.0)
|
|
187
187
|
rexml (3.2.4)
|
|
188
188
|
rouge (3.24.0)
|
|
189
|
-
rspec (3.
|
|
190
|
-
rspec-core (~> 3.
|
|
191
|
-
rspec-expectations (~> 3.
|
|
192
|
-
rspec-mocks (~> 3.
|
|
193
|
-
rspec-core (3.
|
|
194
|
-
rspec-support (~> 3.
|
|
195
|
-
rspec-expectations (3.
|
|
189
|
+
rspec (3.10.0)
|
|
190
|
+
rspec-core (~> 3.10.0)
|
|
191
|
+
rspec-expectations (~> 3.10.0)
|
|
192
|
+
rspec-mocks (~> 3.10.0)
|
|
193
|
+
rspec-core (3.10.0)
|
|
194
|
+
rspec-support (~> 3.10.0)
|
|
195
|
+
rspec-expectations (3.10.0)
|
|
196
196
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
197
|
-
rspec-support (~> 3.
|
|
198
|
-
rspec-mocks (3.
|
|
197
|
+
rspec-support (~> 3.10.0)
|
|
198
|
+
rspec-mocks (3.10.0)
|
|
199
199
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
200
|
-
rspec-support (~> 3.
|
|
201
|
-
rspec-support (3.
|
|
200
|
+
rspec-support (~> 3.10.0)
|
|
201
|
+
rspec-support (3.10.0)
|
|
202
202
|
rubocop (1.0.0)
|
|
203
203
|
parallel (~> 1.10)
|
|
204
204
|
parser (>= 2.7.1.5)
|
|
@@ -208,7 +208,7 @@ GEM
|
|
|
208
208
|
rubocop-ast (>= 0.6.0)
|
|
209
209
|
ruby-progressbar (~> 1.7)
|
|
210
210
|
unicode-display_width (>= 1.4.0, < 2.0)
|
|
211
|
-
rubocop-ast (1.1.
|
|
211
|
+
rubocop-ast (1.1.1)
|
|
212
212
|
parser (>= 2.7.1.5)
|
|
213
213
|
ruby-progressbar (1.10.1)
|
|
214
214
|
ruby2_keywords (0.0.2)
|
|
@@ -250,11 +250,11 @@ GEM
|
|
|
250
250
|
addressable
|
|
251
251
|
httpi (~> 2.0)
|
|
252
252
|
nokogiri (>= 1.4.2)
|
|
253
|
-
webmock (3.9.
|
|
253
|
+
webmock (3.9.4)
|
|
254
254
|
addressable (>= 2.3.6)
|
|
255
255
|
crack (>= 0.3.2)
|
|
256
256
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
257
|
-
zeitwerk (2.4.
|
|
257
|
+
zeitwerk (2.4.1)
|
|
258
258
|
|
|
259
259
|
PLATFORMS
|
|
260
260
|
ruby
|
|
@@ -264,7 +264,9 @@ DEPENDENCIES
|
|
|
264
264
|
bump (~> 0.9.0)
|
|
265
265
|
bundler (~> 2.1)
|
|
266
266
|
byebug
|
|
267
|
+
climate_control
|
|
267
268
|
coveralls (~> 0.8.23)
|
|
269
|
+
dotenv
|
|
268
270
|
factory_bot (~> 6.1.0)
|
|
269
271
|
jekyll (~> 3.8.4)
|
|
270
272
|
jekyll-menus (~> 0.6.0)
|
|
@@ -274,7 +276,7 @@ DEPENDENCIES
|
|
|
274
276
|
overcommit (~> 0.57.0)
|
|
275
277
|
rake (~> 13.0)
|
|
276
278
|
rspec (~> 3.2)
|
|
277
|
-
rubocop
|
|
279
|
+
rubocop (= 1.0.0)
|
|
278
280
|
vcr
|
|
279
281
|
webmock
|
|
280
282
|
|
data/ledger_sync.gemspec
CHANGED
|
@@ -34,7 +34,9 @@ Gem::Specification.new do |spec|
|
|
|
34
34
|
spec.add_development_dependency('bump', '~> 0.9.0')
|
|
35
35
|
spec.add_development_dependency('bundler', '~> 2.1')
|
|
36
36
|
spec.add_development_dependency('byebug', '>= 0')
|
|
37
|
+
spec.add_development_dependency('climate_control')
|
|
37
38
|
spec.add_development_dependency('coveralls', '~> 0.8.23')
|
|
39
|
+
spec.add_development_dependency('dotenv')
|
|
38
40
|
spec.add_development_dependency('factory_bot', '~> 6.1.0')
|
|
39
41
|
spec.add_development_dependency('jekyll', '~> 3.8.4')
|
|
40
42
|
spec.add_development_dependency('jekyll-menus', '~> 0.6.0')
|
|
@@ -43,12 +45,11 @@ Gem::Specification.new do |spec|
|
|
|
43
45
|
spec.add_development_dependency('overcommit', '~> 0.57.0')
|
|
44
46
|
spec.add_development_dependency('rake', '~> 13.0')
|
|
45
47
|
spec.add_development_dependency('rspec', '~> 3.2')
|
|
46
|
-
spec.add_development_dependency('rubocop', '
|
|
48
|
+
spec.add_development_dependency('rubocop', '1.0.0')
|
|
47
49
|
spec.add_development_dependency('vcr', '>= 0')
|
|
48
50
|
spec.add_development_dependency('webmock', '>= 0')
|
|
49
51
|
spec.add_runtime_dependency('activemodel', '>= 0')
|
|
50
52
|
spec.add_runtime_dependency('colorize', '>= 0')
|
|
51
|
-
spec.add_runtime_dependency('dotenv', '~> 2.7.6')
|
|
52
53
|
spec.add_runtime_dependency('dry-schema', '~> 1.5.4')
|
|
53
54
|
spec.add_runtime_dependency('dry-validation', '~> 1.5.6')
|
|
54
55
|
spec.add_runtime_dependency('faraday', '>= 0')
|
data/lib/ledger_sync.rb
CHANGED
|
@@ -16,10 +16,6 @@ require 'oauth2'
|
|
|
16
16
|
require 'tempfile'
|
|
17
17
|
require 'pd_ruby'
|
|
18
18
|
|
|
19
|
-
# Dotenv
|
|
20
|
-
require 'dotenv'
|
|
21
|
-
Dotenv.load
|
|
22
|
-
|
|
23
19
|
# Version
|
|
24
20
|
require 'ledger_sync/version'
|
|
25
21
|
|
|
@@ -40,6 +36,7 @@ require 'ledger_sync/util/signer'
|
|
|
40
36
|
require 'ledger_sync/util/hash_helpers'
|
|
41
37
|
require 'ledger_sync/util/read_only_object'
|
|
42
38
|
require 'ledger_sync/util/resources_builder'
|
|
39
|
+
require 'ledger_sync/util/dotenv_updator'
|
|
43
40
|
require 'ledger_sync/ledger_configuration'
|
|
44
41
|
require 'ledger_sync/ledger_configuration_store'
|
|
45
42
|
require 'ledger_sync/util/performer'
|
|
@@ -13,14 +13,20 @@ module LedgerSync
|
|
|
13
13
|
|
|
14
14
|
module Mixin
|
|
15
15
|
module InstanceMethods
|
|
16
|
-
def ledger_configuration
|
|
17
|
-
self.class.config
|
|
18
|
-
end
|
|
19
|
-
|
|
20
16
|
def base_module
|
|
21
17
|
self.class.base_module
|
|
22
18
|
end
|
|
23
19
|
|
|
20
|
+
def update_secrets_in_dotenv
|
|
21
|
+
return if ENV['TEST_ENV'] && !ENV['USE_DOTENV_ADAPTOR_SECRETS']
|
|
22
|
+
|
|
23
|
+
Util::DotenvUpdator.new.update(client: self)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def ledger_configuration
|
|
27
|
+
self.class.config
|
|
28
|
+
end
|
|
29
|
+
|
|
24
30
|
def ledger_attributes_to_save
|
|
25
31
|
return {} if self.class.ledger_attributes_to_save.nil?
|
|
26
32
|
|
|
@@ -6,9 +6,9 @@ module LedgerSync
|
|
|
6
6
|
module InferConfigMixin
|
|
7
7
|
module ClassMethods
|
|
8
8
|
def inferred_config
|
|
9
|
-
|
|
10
|
-
return if name.nil?
|
|
9
|
+
return if name.nil?
|
|
11
10
|
|
|
11
|
+
@inferred_config ||= begin
|
|
12
12
|
name_parts = name.split('::')
|
|
13
13
|
name_parts_length = name_parts.count
|
|
14
14
|
|
|
@@ -17,7 +17,7 @@ module LedgerSync
|
|
|
17
17
|
name_parts_length.times do |i|
|
|
18
18
|
config = LedgerSync.ledgers.config_from_base_module(
|
|
19
19
|
base_module: Object.const_get(
|
|
20
|
-
name_parts[0..(name_parts_length - i)].join('::')
|
|
20
|
+
name_parts[0..(name_parts_length - 1 - i)].join('::')
|
|
21
21
|
)
|
|
22
22
|
)
|
|
23
23
|
break if config.present?
|
|
@@ -10,8 +10,11 @@ module LedgerSync
|
|
|
10
10
|
def inferred_resource_class
|
|
11
11
|
@inferred_resource_class ||= begin
|
|
12
12
|
base_module = inferred_config.base_module
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
if name.include?('::Operations::')
|
|
14
|
+
base_module.const_get(name.split('::Operations::').first)
|
|
15
|
+
else
|
|
16
|
+
base_module.const_get(name.split(base_module.name).last.split('::')[1])
|
|
17
|
+
end
|
|
15
18
|
end
|
|
16
19
|
end
|
|
17
20
|
end
|
|
@@ -9,24 +9,30 @@ module LedgerSync
|
|
|
9
9
|
module InferSerializerMixin
|
|
10
10
|
module ClassMethods
|
|
11
11
|
def inferred_deserializer_class
|
|
12
|
-
@inferred_deserializer_class ||=
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
@inferred_deserializer_class ||= begin
|
|
13
|
+
inferred_config.base_module.const_get(
|
|
14
|
+
inferred_deserializer_class_name
|
|
15
|
+
)
|
|
16
|
+
end
|
|
15
17
|
end
|
|
16
18
|
|
|
17
19
|
def inferred_deserializer_class_name
|
|
18
|
-
@inferred_deserializer_class_name ||=
|
|
20
|
+
@inferred_deserializer_class_name ||= begin
|
|
21
|
+
"#{inferred_resource_class}::Deserializer"
|
|
22
|
+
end
|
|
19
23
|
end
|
|
20
24
|
|
|
21
25
|
def inferred_searcher_deserializer_class
|
|
22
|
-
@inferred_searcher_deserializer_class ||=
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
@inferred_searcher_deserializer_class ||= begin
|
|
27
|
+
inferred_config.base_module.const_get(
|
|
28
|
+
inferred_searcher_deserializer_class_name
|
|
29
|
+
)
|
|
30
|
+
end
|
|
25
31
|
end
|
|
26
32
|
|
|
27
33
|
def inferred_searcher_deserializer_class_name
|
|
28
34
|
@inferred_searcher_deserializer_class_name ||= begin
|
|
29
|
-
"#{inferred_resource_class
|
|
35
|
+
"#{inferred_resource_class}::SearcherDeserializer"
|
|
30
36
|
end
|
|
31
37
|
end
|
|
32
38
|
|
|
@@ -39,7 +45,9 @@ module LedgerSync
|
|
|
39
45
|
end
|
|
40
46
|
|
|
41
47
|
def inferred_serializer_class_name
|
|
42
|
-
@inferred_serializer_class_name ||=
|
|
48
|
+
@inferred_serializer_class_name ||= begin
|
|
49
|
+
"#{inferred_resource_class}::Serializer"
|
|
50
|
+
end
|
|
43
51
|
end
|
|
44
52
|
end
|
|
45
53
|
|
|
@@ -148,39 +148,6 @@ module LedgerSync
|
|
|
148
148
|
oauth_token
|
|
149
149
|
end
|
|
150
150
|
|
|
151
|
-
def update_secrets_in_dotenv # rubocop:disable Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
|
152
|
-
return if ENV['TEST_ENV'] && !ENV['USE_DOTENV_ADAPTOR_SECRETS']
|
|
153
|
-
|
|
154
|
-
filename = File.join(Dir.pwd, '.env')
|
|
155
|
-
return unless File.exist?(filename)
|
|
156
|
-
|
|
157
|
-
prefix = 'QUICKBOOKS_ONLINE_'
|
|
158
|
-
|
|
159
|
-
Tempfile.open(".#{File.basename(filename)}", File.dirname(filename)) do |tempfile|
|
|
160
|
-
File.open(filename).each do |line|
|
|
161
|
-
env_key = line.split('=').first
|
|
162
|
-
client_method = env_key.split(prefix).last.downcase
|
|
163
|
-
|
|
164
|
-
if line =~ /\A#{prefix}/ && respond_to?(client_method)
|
|
165
|
-
env_value = ENV[env_key]
|
|
166
|
-
new_value = send(client_method)
|
|
167
|
-
tempfile.puts "#{env_key}=#{new_value}"
|
|
168
|
-
next if env_value == new_value
|
|
169
|
-
|
|
170
|
-
ENV[env_key] = new_value
|
|
171
|
-
tempfile.puts "# #{env_key}=#{env_value} # Updated on #{Time.now}"
|
|
172
|
-
else
|
|
173
|
-
tempfile.puts line
|
|
174
|
-
end
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
tempfile.close
|
|
178
|
-
FileUtils.mv tempfile.path, filename
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
Dotenv.load
|
|
182
|
-
end
|
|
183
|
-
|
|
184
151
|
def url_for(resource:)
|
|
185
152
|
DashboardURLHelper.new(
|
|
186
153
|
resource: resource,
|
|
@@ -28,6 +28,15 @@ module LedgerSync
|
|
|
28
28
|
module Test
|
|
29
29
|
module Support
|
|
30
30
|
def self.setup(*paths_to_require)
|
|
31
|
+
# Dotenv
|
|
32
|
+
require 'dotenv'
|
|
33
|
+
Dotenv.load(
|
|
34
|
+
'.env.test.local',
|
|
35
|
+
'.env.test',
|
|
36
|
+
'.env'
|
|
37
|
+
)
|
|
38
|
+
require 'climate_control'
|
|
39
|
+
|
|
31
40
|
require 'webmock/rspec'
|
|
32
41
|
require 'simplecov'
|
|
33
42
|
require 'coveralls'
|
|
@@ -1,26 +1,47 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
def setup_client_qa_support(*clients, keyed: false)
|
|
4
|
-
clients.
|
|
3
|
+
def setup_client_qa_support(*clients, keyed: false) # rubocop:disable Metrics/PerceivedComplexity
|
|
4
|
+
qa_clients = Hash[clients.uniq.map do |client|
|
|
5
5
|
key = client.config.root_key
|
|
6
6
|
|
|
7
7
|
qa_support "#{key}_helpers"
|
|
8
|
-
helpers_module = Object.const_get("QA::#{client.base_module.name.split('::').last}Helpers")
|
|
9
|
-
env_key = "#{key}_qa".upcase
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
[
|
|
10
|
+
client,
|
|
11
|
+
{
|
|
12
|
+
env_key: "#{key}_qa".upcase,
|
|
13
|
+
helpers_module: Object.const_get("QA::#{client.base_module.name.split('::').last}Helpers"),
|
|
14
|
+
key: key
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
end]
|
|
18
|
+
|
|
19
|
+
RSpec.configure do |config|
|
|
20
|
+
qa_clients.each_value do |data|
|
|
12
21
|
if keyed
|
|
13
|
-
config.include helpers_module, qa: true, client: key
|
|
22
|
+
config.include data[:helpers_module], qa: true, client: data[:key]
|
|
14
23
|
else
|
|
15
|
-
config.include helpers_module, qa: true
|
|
24
|
+
config.include data[:helpers_module], qa: true
|
|
16
25
|
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
config.around(:each, qa: true) do |example|
|
|
29
|
+
described_class = example.metadata[:described_class]
|
|
30
|
+
config = if described_class.respond_to?(:config)
|
|
31
|
+
described_class.config
|
|
32
|
+
else
|
|
33
|
+
described_class.inferred_config
|
|
34
|
+
end
|
|
35
|
+
client_key = example.metadata.fetch(:client, config.root_key)
|
|
17
36
|
|
|
18
|
-
|
|
19
|
-
|
|
37
|
+
env_key = "#{client_key}_QA".upcase
|
|
38
|
+
|
|
39
|
+
if ENV.fetch(env_key, nil) == '1'
|
|
40
|
+
ClimateControl.modify(Dotenv.parse(ENV.fetch('LOCAL_DOTENV_PATH', '.env.local'))) do
|
|
20
41
|
example.run
|
|
21
|
-
else
|
|
22
|
-
skip "Set #{env_key}=1 to run #{key} QA tests"
|
|
23
42
|
end
|
|
43
|
+
else
|
|
44
|
+
skip "Set #{env_key}=1 to run #{client_key} QA tests"
|
|
24
45
|
end
|
|
25
46
|
end
|
|
26
47
|
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module LedgerSync
|
|
4
|
+
module Util
|
|
5
|
+
class DotenvUpdator
|
|
6
|
+
attr_reader :file_path
|
|
7
|
+
|
|
8
|
+
def initialize(args = {})
|
|
9
|
+
@file_path = args.fetch(:file_path, File.join(Dir.pwd, '.env.local'))
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def update(args = {})
|
|
13
|
+
client = args.fetch(:client)
|
|
14
|
+
prefix = args.fetch(:prefix, "#{client.class.config.root_key.upcase}_")
|
|
15
|
+
|
|
16
|
+
to_save = client.ledger_attributes_to_save.dup.stringify_keys
|
|
17
|
+
|
|
18
|
+
Tempfile.open(".#{File.basename(file_path)}", File.dirname(file_path)) do |tempfile|
|
|
19
|
+
File.open(file_path).each do |line|
|
|
20
|
+
env_key = line.split('=').first
|
|
21
|
+
client_method = env_key.split(prefix).last.downcase
|
|
22
|
+
|
|
23
|
+
if line =~ /\A#{prefix}/ && to_save.key?(client_method)
|
|
24
|
+
env_value = ENV[env_key]
|
|
25
|
+
new_value = to_save.delete(client_method)
|
|
26
|
+
tempfile.puts "#{env_key}=#{new_value}"
|
|
27
|
+
next if env_value == new_value.to_s
|
|
28
|
+
|
|
29
|
+
ENV[env_key] = new_value.to_s
|
|
30
|
+
tempfile.puts "# #{env_key}=#{env_value} # Updated on #{Time.now}"
|
|
31
|
+
else
|
|
32
|
+
tempfile.puts line
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
to_save.each { |k, v| tempfile.puts(["#{prefix}#{k}".upcase, v].map(&:to_s).join('=')) }
|
|
37
|
+
|
|
38
|
+
tempfile.close
|
|
39
|
+
FileUtils.mv tempfile.path, file_path
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
Dotenv.load
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
data/lib/ledger_sync/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ledger_sync
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ryan Jackson
|
|
@@ -66,6 +66,20 @@ dependencies:
|
|
|
66
66
|
- - ">="
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: climate_control
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
69
83
|
- !ruby/object:Gem::Dependency
|
|
70
84
|
name: coveralls
|
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -80,6 +94,20 @@ dependencies:
|
|
|
80
94
|
- - "~>"
|
|
81
95
|
- !ruby/object:Gem::Version
|
|
82
96
|
version: 0.8.23
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: dotenv
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - ">="
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0'
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - ">="
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0'
|
|
83
111
|
- !ruby/object:Gem::Dependency
|
|
84
112
|
name: factory_bot
|
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -196,16 +224,16 @@ dependencies:
|
|
|
196
224
|
name: rubocop
|
|
197
225
|
requirement: !ruby/object:Gem::Requirement
|
|
198
226
|
requirements:
|
|
199
|
-
- -
|
|
227
|
+
- - '='
|
|
200
228
|
- !ruby/object:Gem::Version
|
|
201
|
-
version:
|
|
229
|
+
version: 1.0.0
|
|
202
230
|
type: :development
|
|
203
231
|
prerelease: false
|
|
204
232
|
version_requirements: !ruby/object:Gem::Requirement
|
|
205
233
|
requirements:
|
|
206
|
-
- -
|
|
234
|
+
- - '='
|
|
207
235
|
- !ruby/object:Gem::Version
|
|
208
|
-
version:
|
|
236
|
+
version: 1.0.0
|
|
209
237
|
- !ruby/object:Gem::Dependency
|
|
210
238
|
name: vcr
|
|
211
239
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -262,20 +290,6 @@ dependencies:
|
|
|
262
290
|
- - ">="
|
|
263
291
|
- !ruby/object:Gem::Version
|
|
264
292
|
version: '0'
|
|
265
|
-
- !ruby/object:Gem::Dependency
|
|
266
|
-
name: dotenv
|
|
267
|
-
requirement: !ruby/object:Gem::Requirement
|
|
268
|
-
requirements:
|
|
269
|
-
- - "~>"
|
|
270
|
-
- !ruby/object:Gem::Version
|
|
271
|
-
version: 2.7.6
|
|
272
|
-
type: :runtime
|
|
273
|
-
prerelease: false
|
|
274
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
275
|
-
requirements:
|
|
276
|
-
- - "~>"
|
|
277
|
-
- !ruby/object:Gem::Version
|
|
278
|
-
version: 2.7.6
|
|
279
293
|
- !ruby/object:Gem::Dependency
|
|
280
294
|
name: dry-schema
|
|
281
295
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -1113,6 +1127,7 @@ files:
|
|
|
1113
1127
|
- lib/ledger_sync/type/string_from_set.rb
|
|
1114
1128
|
- lib/ledger_sync/type/value.rb
|
|
1115
1129
|
- lib/ledger_sync/type/value_mixin.rb
|
|
1130
|
+
- lib/ledger_sync/util/dotenv_updator.rb
|
|
1116
1131
|
- lib/ledger_sync/util/hash_helpers.rb
|
|
1117
1132
|
- lib/ledger_sync/util/mixins/delegate_iterable_methods_mixin.rb
|
|
1118
1133
|
- lib/ledger_sync/util/mixins/dupable_mixin.rb
|