dapp 0.14.2 → 0.14.3

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
  SHA1:
3
- metadata.gz: 603b492e55fefd66b058c89a437dbb5c893580b1
4
- data.tar.gz: 7f749d8657cd2a57eb11c34c8bd9269ea920d6a8
3
+ metadata.gz: d181fb38e748b19b264a4915a3a6fb3e6667d2c1
4
+ data.tar.gz: 38223cc898561220d439c6aadc61e41eebd3cf7e
5
5
  SHA512:
6
- metadata.gz: 2f60e6e78c30217324faf06da93f57a0d3be2ee2f9d3b8280235a28102723b24db5a6dd6cb6a101001881d5978a74c92b276379f92ac7fbbd182a6f81fbc2ff1
7
- data.tar.gz: 7d24c671310b496855f9855c8986330cd8e374ab7d619d4957249a0372166190e1052eec6f4235661efef4176f458860f16189261dd99d2b01482eaa457db052
6
+ metadata.gz: 266c75c205201e46cfdf8a0c3056b22cf883cceb1afcf5eddd68eb3139545249f561984afd6bbf933e9f79f5734fd04a4a9a0fb0c4ca6d31f94a10babdce0b63
7
+ data.tar.gz: 0ce677db9c3c6a93558f67853174bd2f54a919f794eb3da8cee28f1a4542cb0a20f8df9b7400d237996cd2f4b34a493b268a6f02d12590d76cea4a67327165df
@@ -19,17 +19,39 @@ module Dapp
19
19
 
20
20
  tmp_file_path = kube_tmp_chart_path(file_path)
21
21
  tmp_file_path.binwrite(decoded_data)
22
- system(kube_secret_editor, tmp_file_path.to_s)
23
22
 
24
- encoded_data = begin
25
- if options[:values]
26
- kube_secret_values(tmp_file_path)
27
- else
28
- kube_secret_file(tmp_file_path)
23
+ loop do
24
+ begin
25
+ system(kube_secret_editor, tmp_file_path.to_s)
26
+
27
+ encoded_data = begin
28
+ if options[:values]
29
+ encoded_values = yaml_load_file(file_path)
30
+
31
+ decoded_values = kube_helm_decode_json(secret, yaml_load_file(file_path))
32
+ updated_decoded_values = yaml_load_file(tmp_file_path)
33
+
34
+ deep_delete_if_key_not_exist(encoded_values, updated_decoded_values)
35
+
36
+ modified_decoded_values = deep_select_modified_keys(updated_decoded_values, decoded_values)
37
+ encoded_values.in_depth_merge(kube_helm_encode_json(secret, modified_decoded_values))
38
+ .sort
39
+ .to_h
40
+ .to_yaml
41
+ else
42
+ kube_secret_file(tmp_file_path)
43
+ end
44
+ end
45
+
46
+ IO.binwrite(file_path, "#{encoded_data}\n")
47
+ break
48
+ rescue ::Dapp::Error::Base => e
49
+ log_warning(e.net_status[:data][:message])
50
+ print 'Do you want to change file (Y/n)?'
51
+ response = $stdin.noecho(&:gets).tap { print "\n" }
52
+ return if response.strip == 'n'
29
53
  end
30
54
  end
31
-
32
- IO.binwrite(file_path, "#{encoded_data}\n")
33
55
  end
34
56
  end
35
57
 
@@ -38,6 +60,36 @@ module Dapp
38
60
  %w(vim vi nano).each { |editor| return editor unless shellout("which #{editor}").exitstatus.nonzero? }
39
61
  raise Error::Command, code: :editor_not_found
40
62
  end
63
+
64
+ private
65
+
66
+ def deep_select_modified_keys(hash1, hash2)
67
+ {}.tap do |hash|
68
+ hash1.each do |k, v|
69
+ next if hash2[k] == v
70
+ hash[k] = begin
71
+ if hash2[k].is_a?(Hash) && v.is_a?(Hash)
72
+ deep_select_modified_keys(v, hash2[k])
73
+ else
74
+ v
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
80
+
81
+ def deep_delete_if_key_not_exist(hash1, hash2)
82
+ hash1.delete_if do |k, v|
83
+ if hash2.key?(k)
84
+ if hash2[k].is_a?(Hash) && v.is_a?(Hash)
85
+ deep_delete_if_key_not_exist(v, hash2[k])
86
+ end
87
+ false
88
+ else
89
+ true
90
+ end
91
+ end
92
+ end
41
93
  end
42
94
  end
43
95
  end
@@ -1,11 +1,7 @@
1
1
  module Dapp
2
2
  module Kube
3
3
  module Error
4
- class Base < ::Dapp::Error::Base
5
- def initialize(net_status = {})
6
- super({context: 'kube'}.merge(net_status))
7
- end
8
- end
4
+ class Base < ::Dapp::Error::Base; end
9
5
  end
10
6
  end
11
7
  end
@@ -1,4 +1,4 @@
1
1
  module Dapp
2
- VERSION = '0.14.2'.freeze
2
+ VERSION = '0.14.3'.freeze
3
3
  BUILD_CACHE_VERSION = 16
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dapp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.2
4
+ version: 0.14.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Stolyarov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-17 00:00:00.000000000 Z
11
+ date: 2017-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mixlib-shellout