cfhighlander 0.3.0.alpha.1531308925 → 0.3.0.alpha.1531438371

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
  SHA256:
3
- metadata.gz: 2c12a4a3a77776adcce725b79b5b4465c9c4309f0555ed98e9e29c85712ff2c1
4
- data.tar.gz: bce88d0ea70c76e55e5da59239f5487a1281b17984bd2eabe16a5e0a08b481b7
3
+ metadata.gz: 99bdc92897ee6f2ce760495c539412309eb65cd134a08b51ffcb5abc0a6757aa
4
+ data.tar.gz: b19a2169d07759c991d71d90490d95753b9a230e00441f814769ccd3797eedc9
5
5
  SHA512:
6
- metadata.gz: 682eee35713ca1922848cf399de60fc8ffdce092c31ec358408fd32eb0ad78638f95a7b3706ec68558e67a1912f5e94cca48ba9eac3d5733811bff91d452c191
7
- data.tar.gz: fbb63313080792008f8bfc356a385a334148a910eebbfd14fac424b724caa74e8911565b15cd37a9830979f947b56ecd2dcc657e5fc65a2548e75e398660ab8f
6
+ metadata.gz: 5555333f992766a2a0ca527bc0737c088759227e4e44f104f164503b4d70b01c97a7a6fc7c545f7354c36b08570d03623ece3cb5674d02dc25638782451f23d8
7
+ data.tar.gz: 74bee959517244870bd3425128b18e6f1fb2eaa1d214f50ed37d47fb7d897e29d78779c8c2c4e501442d3601f31ebf535f72d1b9995e40bd0408c35c27b262b3
data/bin/cfhighlander.rb CHANGED
@@ -16,9 +16,7 @@ require_relative '../lib/cfhighlander.validator'
16
16
 
17
17
  class HighlanderCli < Thor
18
18
 
19
-
20
-
21
- package_name "highlander"
19
+ package_name "cfhighlander"
22
20
 
23
21
  desc 'configcompile component[@version]', 'Compile Highlander components configuration'
24
22
 
@@ -276,6 +276,7 @@ module Cfhighlander
276
276
  # executing package command can generate files. We DO NOT want this file in source directory,
277
277
  # but rather in intermediate directory
278
278
  tmp_source_dir = "#{@workdir}/out/lambdas/tmp/#{name}"
279
+ FileUtils.rmtree(File.dirname(tmp_source_dir)) if File.exist? tmp_source_dir
279
280
  FileUtils.mkpath(File.dirname(tmp_source_dir))
280
281
  FileUtils.copy_entry(lambda_source_dir, tmp_source_dir)
281
282
  lambda_source_dir = tmp_source_dir
@@ -1,4 +1,3 @@
1
-
2
1
  module Cfhighlander
3
2
 
4
3
  module Dsl
@@ -6,7 +5,52 @@ module Cfhighlander
6
5
 
7
6
  attr_accessor :config
8
7
 
9
- def initialize(parent)
8
+
9
+ def GetAtt(resource, property)
10
+ return FnGetAtt(resource, property)
11
+ end
12
+
13
+ def FnGetAtt(resource, property)
14
+ return {
15
+ 'Fn::GetAtt' => [resource, property]
16
+ }
17
+ end
18
+
19
+ def Ref(resource)
20
+ return {
21
+ 'Ref' => resource
22
+ }
23
+ end
24
+
25
+ def FnFindInMap(map, key, attr)
26
+ return { 'Fn::FindInMap' => [map, key, attr] }
27
+ end
28
+
29
+ def FindInMap(map, key, attr)
30
+ return FnFindInMap(map, key, attr)
31
+ end
32
+
33
+ def cfout(resource, output = nil)
34
+ if output.nil?
35
+ parts = resource.split('.')
36
+ if parts.size() != 2
37
+ raise "cfout('#{resource}'): If cfout given single argument cfout('component.OutputName') syntax must be used"
38
+ else
39
+ resource = parts[0]
40
+ output = parts[1]
41
+ end
42
+ end
43
+
44
+ return GetAtt(resource, "Outputs.#{output}")
45
+ end
46
+
47
+
48
+ def cfmap(map, key, attr)
49
+ return FindInMap(map, key, attr)
50
+ end
51
+
52
+
53
+ def initialize (parent)
10
54
  @config = parent.config unless parent.nil?
11
55
  end
12
56
 
@@ -63,7 +63,7 @@ module Cfhighlander
63
63
  @template = template_name
64
64
  @template_version = template_version
65
65
  @name = name
66
- @cfn_name = @name.gsub('-','').gsub('_','').gsub(' ','')
66
+ @cfn_name = @name.gsub('-', '').gsub('_', '').gsub(' ', '')
67
67
  @param_values = param_values
68
68
 
69
69
  # distribution settings
@@ -131,6 +131,26 @@ module Cfhighlander
131
131
  @param_values[name] = value
132
132
  end
133
133
 
134
+ def config(key = '', value = '')
135
+ @component_loaded.config[key] = value
136
+ end
137
+
138
+ def ConfigParameter(config_key:, parameter:, defaultValue: '', type: 'String')
139
+ Parameters do
140
+ ComponentParam parameter, defaultValue, type: type
141
+ end
142
+ config config_key, Ref(parameter)
143
+ end
144
+
145
+ ## for all the message received, try and forward them to load component dsl
146
+ def method_missing(method, *args, &block)
147
+ child_dsl = @component_loaded.highlander_dsl
148
+ if child_dsl.respond_to? method
149
+ # child_dsl.method
150
+ child_dsl.send method, *args, &block
151
+ end
152
+ end
153
+
134
154
  # Parameters should be lazy loaded, that is late-binding should happen once
135
155
  # all parameters and mappings are known
136
156
  def resolve_parameter_values(available_outputs)
@@ -2,7 +2,7 @@
2
2
 
3
3
  extensions_folder = "#{File.dirname(__FILE__)}/../hl_ext"
4
4
 
5
- Dir["#{extensions_folder}/*.rb"].each { |f|
5
+ Dir["#{extensions_folder}/*.rb"].each {|f|
6
6
  require f
7
7
  }
8
8
 
@@ -56,8 +56,10 @@ module Cfhighlander
56
56
  @dependson_components_templates = []
57
57
  @dependson_components = []
58
58
  @conditions = []
59
- @config_overrides = {},
59
+ @config_overrides = {}
60
60
  @extended_template = nil
61
+ # execution blocks for subcomponents
62
+ @subcomponents_exec = {}
61
63
  end
62
64
 
63
65
  # DSL statements
@@ -84,16 +86,20 @@ module Cfhighlander
84
86
 
85
87
  def Parameters(&block)
86
88
  @parameters.config = @config
87
- @parameters.instance_eval(&block)
89
+ @parameters.instance_eval(&block) unless block.nil?
88
90
  end
89
91
 
92
+ # def ComponentParam(argc*, argv)
93
+ # @parameters.ComponentParam(argc, argv)
94
+ # end
95
+
90
96
  def Condition(name, expression)
91
97
  @conditions << Condition.new(name, expression)
92
98
  end
93
99
 
94
100
  def DynamicMappings(providerName)
95
101
  maps = mappings_provider_maps(providerName, self.config)
96
- maps.each { |name, map| addMapping(name, map) } unless maps.nil?
102
+ maps.each {|name, map| addMapping(name, map)} unless maps.nil?
97
103
  end
98
104
 
99
105
  def DependsOn(template)
@@ -133,7 +139,8 @@ module Cfhighlander
133
139
  conditional,
134
140
  enabled
135
141
  )
136
- component.instance_eval(&block) unless block.nil?
142
+ # component.instance_eval(&block) unless block.nil?
143
+ @subcomponents_exec[name] = block unless block.nil?
137
144
  component.distribute_bucket = @distribution_bucket unless @distribution_bucket.nil?
138
145
  component.distribute_prefix = @distribution_prefix unless @distribution_prefix.nil?
139
146
  component.version = @version unless @version.nil?
@@ -188,11 +195,11 @@ module Cfhighlander
188
195
 
189
196
  # Internal and interface functions
190
197
 
191
- def loadComponents()
198
+ def loadComponents
192
199
 
193
200
  # empty config overrides to start with
194
- @config_overrides = Hash[@subcomponents.collect { |c| [c.name, { 'nested_component' => true }] }]
195
- @named_components = Hash[@subcomponents.collect { |c| [c.name, c] }]
201
+ @config_overrides = Hash[@subcomponents.collect {|c| [c.name, { 'nested_component' => true }]}]
202
+ @named_components = Hash[@subcomponents.collect {|c| [c.name, c]}]
196
203
 
197
204
  # populate overrides with master config defined overrides
198
205
  load_configfile_component_config
@@ -217,6 +224,7 @@ module Cfhighlander
217
224
  @subcomponents.each do |component|
218
225
 
219
226
  component.load @config_overrides[component.name]
227
+
220
228
  # add all of it's stack parameters unless same template has been already processed
221
229
  component
222
230
  .component_loaded
@@ -241,8 +249,10 @@ module Cfhighlander
241
249
  end
242
250
 
243
251
  end
244
-
245
- component.component_loaded.eval_cfndsl()
252
+ if @subcomponents_exec.key? component.name
253
+ component.instance_eval &@subcomponents_exec[component.name]
254
+ end
255
+ component.component_loaded.eval_cfndsl
246
256
  end
247
257
 
248
258
  # in 2nd pass, load parameters
@@ -291,14 +301,14 @@ module Cfhighlander
291
301
  end
292
302
 
293
303
  def apply_config_overrides
294
- @config_overrides.each { |component_name, component_override|
304
+ @config_overrides.each {|component_name, component_override|
295
305
  @named_components[component_name].component_loaded.config.extend(component_override)
296
306
  }
297
307
  end
298
308
 
299
309
  def load_configfile_component_config
300
310
  if (@config.key? 'components')
301
- @config['components'].each { |component_name, component_config|
311
+ @config['components'].each {|component_name, component_config|
302
312
  if component_config.key?('config')
303
313
  if @config_overrides.key? component_name
304
314
  @config_overrides[component_name].extend(component_config['config'])
@@ -313,28 +323,28 @@ module Cfhighlander
313
323
  def apply_config_exports
314
324
  # first export from master to all children
315
325
  if ((@config.key? 'config_export') and (@config['config_export']['global']))
316
- @config['config_export']['global'].each { |global_export_key|
326
+ @config['config_export']['global'].each {|global_export_key|
317
327
  if @config.key? global_export_key
318
- @config_overrides.each { |cname, co|
328
+ @config_overrides.each {|cname, co|
319
329
  co[global_export_key] = @config[global_export_key]
320
330
  }
321
331
  end
322
332
  }
323
333
  end
324
334
 
325
- @subcomponents.each { |component|
335
+ @subcomponents.each {|component|
326
336
  cl = component.component_loaded
327
337
  if ((not cl.config.nil?) and (cl.config.key? 'config_export'))
328
338
 
329
339
  # global config
330
340
  if cl.config['config_export'].key? 'global'
331
- cl.config['config_export']['global'].each { |global_export_key|
341
+ cl.config['config_export']['global'].each {|global_export_key|
332
342
 
333
343
  # global config is exported to parent and every component
334
344
  if cl.config.key? global_export_key
335
345
 
336
346
  # cname is for component name, co for component override
337
- @config_overrides.each { |cname, co|
347
+ @config_overrides.each {|cname, co|
338
348
 
339
349
  # if templates are different e.g don't export from vpc to vpc
340
350
  config_receiver_component = @named_components[cname]
@@ -360,7 +370,7 @@ module Cfhighlander
360
370
  end
361
371
 
362
372
  if cl.config['config_export'].key? 'component'
363
- cl.config['config_export']['component'].each { |component_name, export_keys|
373
+ cl.config['config_export']['component'].each {|component_name, export_keys|
364
374
  # check if there is configuration of export from this component
365
375
  # and if there is export configuration for given component name
366
376
 
@@ -369,7 +379,7 @@ module Cfhighlander
369
379
  if @config_overrides.key? component.export_config[component_name]
370
380
  # override the config
371
381
  real_component_name = component.export_config[component_name]
372
- export_keys.each { |export_component_key|
382
+ export_keys.each {|export_component_key|
373
383
  puts("Exporting config for key=#{export_component_key} from #{component.name} to #{real_component_name}")
374
384
  if not @config_overrides[real_component_name].key? export_component_key
375
385
  @config_overrides[real_component_name][export_component_key] = {}
@@ -380,7 +390,7 @@ module Cfhighlander
380
390
  STDERR.puts("Trying to export configuration for non-existant component #{component.export_config[component_name]}")
381
391
  end
382
392
  elsif @config_overrides.key? component_name
383
- export_keys.each { |export_component_key|
393
+ export_keys.each {|export_component_key|
384
394
  puts("Exporting config for key=#{export_component_key} from #{component.name} to #{component_name}")
385
395
  if not @config_overrides[component_name].key? export_component_key
386
396
  @config_overrides[component_name][export_component_key] = {}
@@ -400,7 +410,7 @@ module Cfhighlander
400
410
  end
401
411
 
402
412
  def load_explicit_component_config
403
- @component_configs.each { |component_name, component_config|
413
+ @component_configs.each {|component_name, component_config|
404
414
  @config_overrides[component_name].extend(component_config)
405
415
  }
406
416
 
@@ -424,7 +434,7 @@ module Cfhighlander
424
434
  if not (@distribution_bucket.nil? or @distribution_prefix.nil?)
425
435
  @distribute_url = "https://#{@distribution_bucket}.s3.amazonaws.com/#{@distribution_prefix}"
426
436
  @distribute_url = "#{@distribute_url}/#{@version}" unless @version.nil?
427
- @subcomponents.each { |component|
437
+ @subcomponents.each {|component|
428
438
  component.distribute_bucket = @distribution_bucket unless @distribution_bucket.nil?
429
439
  component.distribute_prefix = @distribution_prefix unless @distribution_prefix.nil?
430
440
  component.version = @version unless @version.nil?
@@ -472,12 +482,15 @@ def CfhighlanderTemplate(&block)
472
482
  unless @distribution_prefix.nil?
473
483
  instance.DistributionPrefix(@distribution_prefix)
474
484
  end
485
+ unless @distribution_format.nil?
486
+ instance.Forma
487
+ end
475
488
 
476
489
  # process convention over configuration componentname.config.yaml files
477
490
  @potential_subcomponent_overrides.each do |name, config|
478
491
 
479
492
  # if there is component with given file name
480
- if (not instance.subcomponents.find{|s|s.name == name}.nil?)
493
+ if (not instance.subcomponents.find {|s| s.name == name}.nil?)
481
494
  instance.config['components'] = {} unless instance.config.key? 'components'
482
495
  instance.config['components'][name] = {} unless instance.config['components'].key? name
483
496
  instance.config['components'][name]['config'] = {} unless instance.config['components'][name].key? 'config'
@@ -486,7 +499,7 @@ def CfhighlanderTemplate(&block)
486
499
  if config.key? 'components'
487
500
  if config['components'].key? name
488
501
  if config['components'][name].key? 'config'
489
- config = config['components'][name]['config']
502
+ config = config['components'][name]['config']
490
503
  end
491
504
  end
492
505
  end
data/lib/util/zip.util.rb CHANGED
@@ -17,7 +17,7 @@ module Cfhighlander
17
17
  # Zip the input directory.
18
18
  def write
19
19
  entries = Dir.entries(@input_dir) - %w(. ..)
20
-
20
+ puts "DEBUG: Compressing #{@input_dir} to #{@output_file}"
21
21
  ::Zip::File.open(@output_file, ::Zip::File::CREATE) do |zipfile|
22
22
  write_entries entries, '', zipfile
23
23
  end
@@ -30,7 +30,6 @@ module Cfhighlander
30
30
  entries.each do |e|
31
31
  zipfile_path = path == '' ? e : File.join(path, e)
32
32
  disk_file_path = File.join(@input_dir, zipfile_path)
33
- puts "TRACE: Deflating #{disk_file_path}"
34
33
 
35
34
  if File.directory? disk_file_path
36
35
  recursively_deflate_directory(disk_file_path, zipfile, zipfile_path)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfhighlander
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0.alpha.1531308925
4
+ version: 0.3.0.alpha.1531438371
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nikola Tosic
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-07-11 00:00:00.000000000 Z
12
+ date: 2018-07-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: highline