pipe_fitter 0.1.3 → 0.1.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/lib/pipe_fitter/pipeline.rb +34 -22
- data/lib/pipe_fitter/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ca34c72ead67585ab3933c20339c6024dba555d
|
4
|
+
data.tar.gz: 434c953698fb018b6babfbdcde83e1f4d770ab2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4ffd2b3e959cda33c02760755be11f05460c144a8700915f20a4f04fac44d74b825b29e25fbd03f4646fcb24333ca8afeb8b5e24640f09a3dac30af44b114c3
|
7
|
+
data.tar.gz: 0fe0ec48c13e2bcc260d9dbe7cae396a265e8f7f555fedb669c112874f48f6f2ec1d50939aca8a7496473374eac4f500e16cd36cb54f5f4654a4aad974f5026e
|
data/lib/pipe_fitter/pipeline.rb
CHANGED
@@ -98,14 +98,40 @@ module PipeFitter
|
|
98
98
|
end
|
99
99
|
h
|
100
100
|
end
|
101
|
+
|
102
|
+
private_class_method def self.update_hash(base, key, value)
|
103
|
+
if base.key?(key)
|
104
|
+
base[key] = [base[key]] unless base[key].is_a?(Array)
|
105
|
+
base[key] << value
|
106
|
+
base[key].sort!
|
107
|
+
else
|
108
|
+
base[key] = value
|
109
|
+
end
|
110
|
+
base
|
111
|
+
end
|
112
|
+
|
113
|
+
def split_object(obj, skip_keys)
|
114
|
+
res = []
|
115
|
+
obj.each do |k, v|
|
116
|
+
next if skip_keys.include?(k)
|
117
|
+
(v.is_a?(Array) ? v : [v]).each do |vv|
|
118
|
+
if vv.is_a?(Hash) && vv.key?(:ref)
|
119
|
+
res << { key: k, ref_value: vv[:ref] }
|
120
|
+
else
|
121
|
+
res << { key: k, string_value: vv }
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
res
|
126
|
+
end
|
101
127
|
end
|
102
128
|
|
103
129
|
class PipelineObjects < PipelineBaseObjects
|
104
130
|
def self.create(api_res)
|
105
|
-
objs = api_res.map(&:to_h).sort_by { |obj| obj[:id] }.map do |obj|
|
131
|
+
objs = (api_res || []).map(&:to_h).sort_by { |obj| obj[:id] }.map do |obj|
|
106
132
|
base = { id: obj[:id], name: obj[:name] }
|
107
133
|
obj[:fields].sort_by { |f| f[:key] }.inject(base) do |a, e|
|
108
|
-
a
|
134
|
+
update_hash(a, e[:key].to_sym, e[:string_value] || { ref: e[:ref_value] })
|
109
135
|
end
|
110
136
|
end
|
111
137
|
new(objs)
|
@@ -113,26 +139,17 @@ module PipeFitter
|
|
113
139
|
|
114
140
|
def to_api_opts
|
115
141
|
@objs.map do |obj|
|
116
|
-
|
117
|
-
obj.each do |k, v|
|
118
|
-
next if k == :id || k == :name
|
119
|
-
if v.is_a?(Hash) && v.key?(:ref)
|
120
|
-
base[:fields] << { key: k, ref_value: v[:ref] }
|
121
|
-
else
|
122
|
-
base[:fields] << { key: k, string_value: v }
|
123
|
-
end
|
124
|
-
end
|
125
|
-
base
|
142
|
+
{ id: obj[:id], name: obj[:name], fields: split_object(obj, %i(id name)) }
|
126
143
|
end
|
127
144
|
end
|
128
145
|
end
|
129
146
|
|
130
147
|
class ParameterObjects < PipelineBaseObjects
|
131
148
|
def self.create(api_res)
|
132
|
-
objs = api_res.map(&:to_h).sort_by { |obj| obj[:id] }.map do |obj|
|
149
|
+
objs = (api_res || []).map(&:to_h).sort_by { |obj| obj[:id] }.map do |obj|
|
133
150
|
base = { id: obj[:id] }
|
134
151
|
obj[:attributes].sort_by { |a| a[:key] }.inject(base) do |a, e|
|
135
|
-
a
|
152
|
+
update_hash(a, e[:key].to_sym, e[:string_value])
|
136
153
|
end
|
137
154
|
end
|
138
155
|
new(objs)
|
@@ -140,12 +157,7 @@ module PipeFitter
|
|
140
157
|
|
141
158
|
def to_api_opts
|
142
159
|
@objs.map do |obj|
|
143
|
-
|
144
|
-
obj.each do |k, v|
|
145
|
-
next if k == :id
|
146
|
-
base[:attributes] << { key: k, string_value: v }
|
147
|
-
end
|
148
|
-
base
|
160
|
+
{ id: obj[:id], attributes: split_object(obj, %i(id)) }
|
149
161
|
end
|
150
162
|
end
|
151
163
|
end
|
@@ -174,8 +186,8 @@ module PipeFitter
|
|
174
186
|
name: api_res[:name],
|
175
187
|
description: api_res[:description],
|
176
188
|
}
|
177
|
-
objs[:tags] = api_res[:tags].map { |e| { e[:key].to_sym => e[:value] } }
|
178
|
-
api_res[:fields].inject(objs) do |a, e|
|
189
|
+
objs[:tags] = (api_res[:tags] || []).map { |e| { e[:key].to_sym => e[:value] } }
|
190
|
+
(api_res[:fields] || []).inject(objs) do |a, e|
|
179
191
|
a.update(e[:key].to_sym => (e[:string_value] || { ref: e[:ref_value] } ))
|
180
192
|
end
|
181
193
|
new(objs)
|
data/lib/pipe_fitter/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pipe_fitter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- masa21kik
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|