cfndsl 0.8.9 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NjE5YTc0ODM5NzUxZGI2YmMwNDg1NjljZjdjMjA3NzY3NjI0NjM1MA==
4
+ NDllMmI2MjhiMWMzYmY0NzAyZDgzZjE2NWJhYzRlOWVjZmUxYmQ5Nw==
5
5
  data.tar.gz: !binary |-
6
- YmIwMzI3MTcxMGRlZDgwZGUxMDNkZjlkYTlhMDNjNWM0OTU4YjE2NA==
6
+ MjBmNzQ3OWRlMjAxMDZlMmJiOWE4NjZlNTBlZmNmYzExZTc3MTUyMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YzAxZDUyZTA3NzJjM2NiMWEzMjYxMDVjYTYxOTg0NjRmNjJiMGQ4NmFmMjU5
10
- MDA3M2Y1ZmY4MzcxMDYzY2JmNjcwNzJkZGQ2ZDJjMWZiODc5MjZkYWQ1ODU1
11
- NTE4M2E3NDQ2NDk2ZTkyMDg1MWZlNmE3NWQxOTk5Mjk3OWI5ZGE=
9
+ M2YyNjlhOTlhM2RmZDFkNDE3MjFmYTMzZGE2MjI1NjgyNmNjMDA3OTA0NDNj
10
+ NmYwZmMwYzFjODQxZDBiNTFjMjFkZGQ2M2ZkYzMxNDE1NjI5ZTc3NjI5Y2Q1
11
+ MjU1N2FhNDFiOTRlNzA0NDljNDJhYTUxNTk4YWE1YjQ2OTc5NmI=
12
12
  data.tar.gz: !binary |-
13
- NmYxODgyNmU1ODJjZjg5ZmEzNmNhZDlmODcyMDQxNjdhMGM4N2FlYTc4Y2Q0
14
- YjBiMDcyOGViYmQ4ZWM1MGVkZGNlM2YzMzQ2Y2ZlMjUwMzU4NmE3NWU4MGI1
15
- ODAyNjUyOGNmZTNkZTMzNDdkYzEyOTJhZTNjMDhiMzJjYmZhOGU=
13
+ OWI3YTUzZGViNTMxYTAyZTc4Y2U3ZjQ5Njg1YjVlZmVjNjVjYThlMzNiNDQx
14
+ NzBjYTliZjlmOGJhNWQ4ZmM5ODU4ZDQ2ZmRlNWQyNjM3ZWI5OGY1YzkyOTgw
15
+ YzZiN2ExZmMxYWRjYWE3NGUwYTVhYmYyZDlhOGZiOTlhNDQ1YWE=
@@ -61,7 +61,7 @@ module CfnDsl
61
61
  # rubocop:disable all
62
62
  def self.eval_file_with_extras(filename, extras = [], logstream = nil)
63
63
  b = binding
64
- params = CfnDsl::ExternalParameters.new
64
+ params = CfnDsl::ExternalParameters.refresh!
65
65
  extras.each do |type, file|
66
66
  case type
67
67
  when :yaml, :json
@@ -85,7 +85,6 @@ module CfnDsl
85
85
  end
86
86
  end
87
87
 
88
- CfnDsl::CloudFormationTemplate.external_parameters params
89
88
  logstream.puts("Loading template file #{filename}") if logstream
90
89
  b.eval(File.read(filename), filename)
91
90
  end
@@ -7,8 +7,24 @@ module CfnDsl
7
7
 
8
8
  attr_reader :parameters
9
9
 
10
+ class << self
11
+ def defaults(params = {})
12
+ @defaults ||= {}
13
+ @defaults.merge! params
14
+ @defaults
15
+ end
16
+
17
+ def current
18
+ @current || refresh!
19
+ end
20
+
21
+ def refresh!
22
+ @current = new
23
+ end
24
+ end
25
+
10
26
  def initialize
11
- @parameters = {}
27
+ @parameters = self.class.defaults.clone
12
28
  end
13
29
 
14
30
  def set_param(k, v)
@@ -131,6 +131,14 @@ module CfnDsl
131
131
  extend Functions
132
132
  include RefCheck
133
133
 
134
+ def self.external_parameters
135
+ CfnDsl::ExternalParameters.current
136
+ end
137
+
138
+ def external_parameters
139
+ self.class.external_parameters
140
+ end
141
+
134
142
  # Use instance variables to build a json object. Instance
135
143
  # variables that begin with a single underscore are elided.
136
144
  # Instance variables that begin with two underscores have one of
@@ -10,15 +10,6 @@ module CfnDsl
10
10
  dsl_attr_setter :AWSTemplateFormatVersion, :Description
11
11
  dsl_content_object :Condition, :Parameter, :Output, :Resource, :Mapping
12
12
 
13
- def self.external_parameters(params = nil)
14
- @external_parameters = params if params
15
- @external_parameters
16
- end
17
-
18
- def external_parameters
19
- self.class.external_parameters
20
- end
21
-
22
13
  def initialize
23
14
  @AWSTemplateFormatVersion = '2010-09-09'
24
15
  end
@@ -1,3 +1,3 @@
1
1
  module CfnDsl
2
- VERSION = '0.8.9'.freeze
2
+ VERSION = '0.9.0'.freeze
3
3
  end
@@ -1,9 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe CfnDsl do
4
+ after(:example) { CfnDsl::ExternalParameters.refresh! }
5
+
4
6
  it 'evaluates a cloud formation' do
5
7
  filename = "#{File.dirname(__FILE__)}/fixtures/test.rb"
6
- subject.eval_file_with_extras(filename)
8
+ subject.eval_file_with_extras(filename, [[:raw, 'test=123']])
7
9
  end
8
10
 
9
11
  it 'evaluates a heat' do
@@ -8,6 +8,30 @@ describe CfnDsl::ExternalParameters do
8
8
  exp
9
9
  end
10
10
 
11
+ context '.defaults' do
12
+ after(:example) { described_class.defaults.clear }
13
+
14
+ it 'allows for defaults to be set for each new parameters instance' do
15
+ described_class.defaults(reminder: 'You Know What It Is')
16
+ expect(subject[:reminder]).to eq('You Know What It Is')
17
+ end
18
+ end
19
+
20
+ context '.current' do
21
+ it 'retrieves the current parameters instance' do
22
+ expect(described_class.current).to be_an_instance_of(described_class)
23
+ end
24
+ end
25
+
26
+ context '.refresh!' do
27
+ it 'restores the current parameters to the defaults' do
28
+ described_class.current.set_param(:reminder, 'You Know What It Is')
29
+ expect(described_class.current[:reminder]).to eq('You Know What It Is')
30
+ described_class.refresh!
31
+ expect(described_class.current[:reminder]).to be_nil
32
+ end
33
+ end
34
+
11
35
  context '#set_param' do
12
36
  it 'treats keys as symbols only' do
13
37
  subject.set_param('reminder', 'You Know What It Is')
@@ -2,7 +2,7 @@ CloudFormation do
2
2
  TEST ||= 'no value set'.freeze
3
3
  puts TEST
4
4
 
5
- Description 'Test'
5
+ Description external_parameters[:test]
6
6
 
7
7
  Parameter('One') do
8
8
  String
@@ -49,7 +49,7 @@ CloudFormation do
49
49
  DeviceName '/dev/sda'
50
50
  VirtualName 'stuff'
51
51
  Ebs do
52
- SnapshotId 'asdasdfasdf'
52
+ SnapshotId external_parameters[:test]
53
53
  VolumeSize Ref('MyInstance')
54
54
  end
55
55
  end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe CfnDsl::JSONable do
4
+ context '.external_parameters' do
5
+ it 'allows access to the current parameters instance' do
6
+ expect(subject.class.external_parameters).to be_an_instance_of(CfnDsl::ExternalParameters)
7
+ end
8
+ end
9
+
10
+ context '#external_parameters' do
11
+ it 'allows access to the current parameters instance' do
12
+ expect(subject.external_parameters).to be_an_instance_of(CfnDsl::ExternalParameters)
13
+ end
14
+ end
15
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfndsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.9
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Jack
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-06-02 00:00:00.000000000 Z
12
+ date: 2016-06-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -91,6 +91,7 @@ files:
91
91
  - spec/external_parameters_spec.rb
92
92
  - spec/fixtures/heattest.rb
93
93
  - spec/fixtures/test.rb
94
+ - spec/jsonable_spec.rb
94
95
  - spec/resources_spec.rb
95
96
  - spec/spec_helper.rb
96
97
  homepage: https://github.com/stevenjack/cfndsl
@@ -124,5 +125,6 @@ test_files:
124
125
  - spec/external_parameters_spec.rb
125
126
  - spec/fixtures/heattest.rb
126
127
  - spec/fixtures/test.rb
128
+ - spec/jsonable_spec.rb
127
129
  - spec/resources_spec.rb
128
130
  - spec/spec_helper.rb