pipe_fitter 0.1.7 → 0.1.8

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: 69ad8e802eb67ae7a2f6e7bf0b7db4143ea681ee
4
- data.tar.gz: 25cfcd60d89d01c51c0b474beea8902360cf93c4
3
+ metadata.gz: 892c113ee708c1620229690aa80940b4cd2ec4df
4
+ data.tar.gz: ec8b73ebbd4f064f944ee640158782d76291b16d
5
5
  SHA512:
6
- metadata.gz: a5121edf6101aeceba5b7eb46dacbb65a59da7f57a22e44a827e8f38f5469ec63c34e83b73e8afbe56d1ac585fb992447327f514333cc35c97d0d1d2e7b0c2d4
7
- data.tar.gz: ef18e2ee2d4973327c239c73b23d2241a99851954000ccd465ccf323f443df732d85e6ebc30789ff89334c560d327f717b6dc5d05c333805ff015e46b83623d4
6
+ metadata.gz: 5a3801e39e26c40dd1dda5411d23fce072f3d95f56496b600dfc02a98f4ed29b0dc8f6732c8469bd6f089ec69c75fafc07eafb7e6c89af764cf08c8325ad4679
7
+ data.tar.gz: 8053e25626a894251dd2bb93b7c261728c64bac31fc6984d3847713114a02a11da0cc79732d02dc7d038718854c835349b1cf6af9bb1608644181aff33283bf9
@@ -79,13 +79,6 @@ module PipeFitter
79
79
  end
80
80
 
81
81
  class PipelineBaseObjects
82
- def initialize(objs)
83
- @objs = case objs
84
- when Array then objs.map { |obj| symbolize_keys(obj) }
85
- else symbolize_keys(objs) || {}
86
- end
87
- end
88
-
89
82
  def to_objs
90
83
  case @objs
91
84
  when Array then @objs.map { |obj| stringify_keys(obj) }
@@ -143,16 +136,27 @@ module PipeFitter
143
136
 
144
137
  class PipelineObjects < PipelineBaseObjects
145
138
  def self.create(api_res)
146
- objs = (api_res || []).map(&:to_h).sort_by { |obj| obj[:id] }.map do |obj|
139
+ objs = (api_res || []).map(&:to_h).map do |obj|
147
140
  base = { id: obj[:id], name: obj[:name] }
148
141
  fields = obj[:fields].inject({}) do |a, e|
149
142
  update_hash(a, e[:key].to_sym, e[:string_value] || { ref: e[:ref_value] })
150
143
  end
151
- base.merge(fields.sort_by { |k, _| k }.to_h)
144
+ base.merge(fields)
152
145
  end
153
146
  new(objs)
154
147
  end
155
148
 
149
+ KEY_ORDER = %i(id name).freeze
150
+
151
+ def initialize(objs)
152
+ @objs = (objs || []).map { |obj| symbolize_keys(obj) }
153
+ .sort_by { |obj| obj[:id] }.map do |obj|
154
+ obj.sort_by do |k, v|
155
+ [KEY_ORDER.index(k) || KEY_ORDER.size + 1, k.to_s, v.to_s]
156
+ end.to_h
157
+ end
158
+ end
159
+
156
160
  def to_api_opts
157
161
  @objs.map do |obj|
158
162
  { id: obj[:id], name: obj[:name], fields: split_object(obj, %i(id name)) }
@@ -162,15 +166,26 @@ module PipeFitter
162
166
 
163
167
  class ParameterObjects < PipelineBaseObjects
164
168
  def self.create(api_res)
165
- objs = (api_res || []).map(&:to_h).sort_by { |obj| obj[:id] }.map do |obj|
169
+ objs = (api_res || []).map(&:to_h).map do |obj|
166
170
  base = { id: obj[:id] }
167
- obj[:attributes].sort_by { |a| a[:key] }.inject(base) do |a, e|
171
+ obj[:attributes].inject(base) do |a, e|
168
172
  update_hash(a, e[:key].to_sym, e[:string_value])
169
173
  end
170
174
  end
171
175
  new(objs)
172
176
  end
173
177
 
178
+ KEY_ORDER = %i(id).freeze
179
+
180
+ def initialize(objs)
181
+ @objs = (objs || []).map { |obj| symbolize_keys(obj) }
182
+ .sort_by { |obj| obj[:id] }.map do |obj|
183
+ obj.sort_by do |k, v|
184
+ [KEY_ORDER.index(k) || KEY_ORDER.size + 1, k.to_s, v.to_s]
185
+ end.to_h
186
+ end
187
+ end
188
+
174
189
  def to_api_opts
175
190
  @objs.map do |obj|
176
191
  { id: obj[:id], attributes: split_object(obj, %i(id)) }
@@ -180,12 +195,16 @@ module PipeFitter
180
195
 
181
196
  class ParameterValues < PipelineBaseObjects
182
197
  def self.create(api_res)
183
- objs = (api_res || []).sort_by { |obj| [obj[:id], obj[:string_value]] }.map do |obj|
198
+ objs = (api_res || []).map do |obj|
184
199
  { obj[:id].to_sym => obj[:string_value] }
185
200
  end
186
201
  new(objs)
187
202
  end
188
203
 
204
+ def initialize(objs)
205
+ @objs = (objs || []).sort_by { |obj| obj.first[0] }
206
+ end
207
+
189
208
  def to_api_opts
190
209
  @objs.map do |e|
191
210
  e.map do |k, v|
@@ -209,6 +228,12 @@ module PipeFitter
209
228
  new(objs)
210
229
  end
211
230
 
231
+ def initialize(objs)
232
+ @objs = symbolize_keys(objs || {}).sort_by do |k, v|
233
+ [DESCRIPTION_KEYS.index(k) || DESCRIPTION_KEYS.size + 1, k.to_s, v.to_s]
234
+ end.to_h
235
+ end
236
+
212
237
  DESCRIPTION_KEYS = %i(name description tags uniqueId).freeze
213
238
 
214
239
  def to_objs
@@ -1,3 +1,3 @@
1
1
  module PipeFitter
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.8"
3
3
  end
@@ -1,6 +1,7 @@
1
1
  require "yaml"
2
2
  require "erb"
3
3
  require "pathname"
4
+ require "tempfile"
4
5
 
5
6
  module PipeFitter
6
7
  class YamlLoader
@@ -10,7 +11,7 @@ module PipeFitter
10
11
 
11
12
  def load(filename)
12
13
  @search_path.unshift(Pathname.new(filename).dirname)
13
- text = eval_erb(filename)
14
+ text = eval_erb(grep_v(filename, /^\s*#/))
14
15
  YAML.load(text) || {}
15
16
  rescue Psych::SyntaxError => e
16
17
  text.split("\n").each_with_index do |l, i|
@@ -23,13 +24,18 @@ module PipeFitter
23
24
  def include_template(filename, context = {})
24
25
  dir = @search_path.find { |p| p.join(filename).exist? }
25
26
  path = dir.nil? ? filename : dir.join(filename)
26
- eval_erb(path, context).gsub("\n", "\n" + " " * (context[:indent] || 0))
27
+ eval_erb(File.read(path), context)
28
+ .gsub("\n", "\n" + " " * (context[:indent] || 0))
27
29
  end
28
30
 
29
31
  private
30
32
 
31
- def eval_erb(filename, context = {})
32
- ERB.new(File.read(filename), nil, "-").result(binding).strip
33
+ def eval_erb(data, context = {})
34
+ ERB.new(data, nil, "-").result(binding).strip
35
+ end
36
+
37
+ def grep_v(filename, pattern)
38
+ File.open(filename).select { |l| l !~ pattern }.join
33
39
  end
34
40
  end
35
41
  end
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.7
4
+ version: 0.1.8
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-16 00:00:00.000000000 Z
11
+ date: 2016-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk