cfoo 0.0.2 → 0.0.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 +7 -0
- data/Guardfile +8 -0
- data/README.md +3 -5
- data/cfoo.gemspec +7 -1
- data/features/attribute_expansion.feature +2 -2
- data/lib/cfoo/el_parser.rb +1 -2
- data/lib/cfoo/file_system.rb +30 -10
- data/lib/cfoo/parser.rb +1 -1
- data/lib/cfoo/version.rb +1 -1
- data/spec/cfoo/el_parser_spec.rb +8 -4
- data/spec/cfoo/file_system_spec.rb +23 -4
- data/spec/cfoo/parser_spec.rb +11 -1
- metadata +177 -132
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5fcc988f1989d6b93a69fa74fac941f3294f5bea
|
4
|
+
data.tar.gz: ede4908b05d3c967c5b71d6b6ed4515298eac28a
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c6ce108951f4369e9d5018746c4f552d655acda9af47808104d5d69675643f016c4e63d46676973cd37591a9ad8776fa7d82235909a1c9062f02e5feb59b763a
|
7
|
+
data.tar.gz: 003f932fcacefab7b329a63c0716540d035a83d7302c322314a163a96d79f9d28592577e8c4c51b0bb0bf5a3fed2e874e3768551b2895797f2fb4a7a0d56e56d
|
data/Guardfile
ADDED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Cfoo
|
2
2
|
|
3
|
-
[](https://travis-ci.org/drrb/cfoo)
|
4
4
|
[](https://coveralls.io/r/drrb/cfoo)
|
5
5
|
[](https://codeclimate.com/github/drrb/cfoo)
|
6
6
|
|
@@ -75,7 +75,7 @@ Properties:
|
|
75
75
|
|
76
76
|
function error_exit
|
77
77
|
{
|
78
|
-
/opt/aws/bin/cfn-signal -e 1 -r "
|
78
|
+
/opt/aws/bin/cfn-signal -e 1 -r "\$1" '$(WaitHandle)'
|
79
79
|
exit 1
|
80
80
|
}
|
81
81
|
|
@@ -139,9 +139,7 @@ Cfoo Shortcut: `$(SubnetConfig[VPC][CIDR])`
|
|
139
139
|
|
140
140
|
CloudFormation: `{ "Fn::GetAtt" : [ "Ec2Instance", "PublicIp" ] }`
|
141
141
|
|
142
|
-
Cfoo Shortcut: `$(Ec2Instance
|
143
|
-
|
144
|
-
Other Shortcut: `$(Ec2Instance[PublicIp])`
|
142
|
+
Cfoo Shortcut: `$(Ec2Instance[PublicIp])`
|
145
143
|
|
146
144
|
##### Embedded Reference
|
147
145
|
|
data/cfoo.gemspec
CHANGED
@@ -31,5 +31,11 @@ Gem::Specification.new do |gem|
|
|
31
31
|
gem.add_development_dependency "cucumber"
|
32
32
|
gem.add_development_dependency "simplecov"
|
33
33
|
gem.add_development_dependency "coveralls", ">= 0.6.3"
|
34
|
-
gem.add_development_dependency "
|
34
|
+
gem.add_development_dependency "mime-types", "< 2" # Needed to support Ruby 1.8
|
35
|
+
|
36
|
+
unless ["1.8.7", "1.9.2"].include? RUBY_VERSION
|
37
|
+
gem.add_development_dependency "guard"
|
38
|
+
gem.add_development_dependency "guard-rspec"
|
39
|
+
gem.add_development_dependency "terminal-notifier-guard"
|
40
|
+
end
|
35
41
|
end
|
@@ -8,7 +8,7 @@ Feature: Expand EL Attribute References
|
|
8
8
|
"""
|
9
9
|
EntryPoint:
|
10
10
|
Description: IP address of the Bastion Host
|
11
|
-
Value: $(BastionHost
|
11
|
+
Value: $(BastionHost[PublicIp])
|
12
12
|
"""
|
13
13
|
When I process "outputs.yml"
|
14
14
|
Then the output should match JSON
|
@@ -27,7 +27,7 @@ Feature: Expand EL Attribute References
|
|
27
27
|
"""
|
28
28
|
WebSite:
|
29
29
|
Description: URL of the website
|
30
|
-
Value: http://$(PublicElasticLoadBalancer
|
30
|
+
Value: http://$(PublicElasticLoadBalancer[DNSName])/index.html
|
31
31
|
"""
|
32
32
|
When I process "outputs.yml"
|
33
33
|
Then the output should match JSON
|
data/lib/cfoo/el_parser.rb
CHANGED
@@ -28,13 +28,12 @@ module Cfoo
|
|
28
28
|
rule(:dot) { str('.') }
|
29
29
|
rule(:comma) { str(",") >> space? }
|
30
30
|
rule(:text_character) { match['^\\\\$'] }
|
31
|
-
rule(:identifier) { match['a-zA-Z0-
|
31
|
+
rule(:identifier) { match['a-zA-Z0-9._\-:'].repeat(1).as(:identifier) >> space? }
|
32
32
|
rule(:text) { text_character.repeat(1).as(:text) }
|
33
33
|
|
34
34
|
rule(:attribute_reference) do
|
35
35
|
(
|
36
36
|
expression.as(:reference) >> (
|
37
|
-
str(".") >> identifier.as(:attribute) |
|
38
37
|
str("[") >> expression.as(:attribute) >> str("]")
|
39
38
|
)
|
40
39
|
).as(:attribute_reference)
|
data/lib/cfoo/file_system.rb
CHANGED
@@ -1,5 +1,22 @@
|
|
1
1
|
require 'cfoo/yaml_parser'
|
2
2
|
|
3
|
+
class String
|
4
|
+
def coordinates_of_index(index)
|
5
|
+
lines = split("\n")
|
6
|
+
line_number = 1
|
7
|
+
column_number = index + 1
|
8
|
+
lines.each do |line|
|
9
|
+
if line.length < column_number
|
10
|
+
line_number += 1
|
11
|
+
column_number -= line.length
|
12
|
+
else
|
13
|
+
return [ line_number, column_number ]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
[ -1, -1 ]
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
3
20
|
module Cfoo
|
4
21
|
class FileSystem
|
5
22
|
def initialize(project_root, yaml_parser)
|
@@ -19,19 +36,19 @@ module Cfoo
|
|
19
36
|
end
|
20
37
|
|
21
38
|
def find_coordinates(string, file_name)
|
22
|
-
matching_lines = []
|
23
39
|
open(file_name) do |file|
|
24
|
-
file.
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
40
|
+
content = file.read
|
41
|
+
lines = string.split "\n"
|
42
|
+
patterns = lines.map { |line| Regexp.escape(line) }
|
43
|
+
pattern = patterns.join '\n\s*'
|
44
|
+
regex = %r[#{pattern}]
|
45
|
+
index = regex =~ content
|
46
|
+
if index.nil?
|
47
|
+
raise CoordinatesNotFound, "Couldn't find '#{string.inspect}' in '#{file_name}'"
|
48
|
+
else
|
49
|
+
content.coordinates_of_index(index)
|
31
50
|
end
|
32
51
|
end
|
33
|
-
#TODO test this
|
34
|
-
raise "Couldn't find '#{string}' in '#{file}'"
|
35
52
|
end
|
36
53
|
|
37
54
|
def glob_relative(path)
|
@@ -45,4 +62,7 @@ module Cfoo
|
|
45
62
|
Dir.glob("#{resolve_file path}/*")
|
46
63
|
end
|
47
64
|
end
|
65
|
+
|
66
|
+
class CoordinatesNotFound < StandardError
|
67
|
+
end
|
48
68
|
end
|
data/lib/cfoo/parser.rb
CHANGED
@@ -98,7 +98,7 @@ module Cfoo
|
|
98
98
|
attr_accessor :file_name, :cause, :source, :line, :column
|
99
99
|
|
100
100
|
def initialize(file_name, cause, source, line, column)
|
101
|
-
super("Failed to parse '#{file_name}':\
|
101
|
+
super("Failed to parse '#{file_name}':\nLocation: #{file_name} line #{line}, column #{column} \nSource: #{source}\nCause: #{cause.ascii_tree}")
|
102
102
|
|
103
103
|
@file_name = file_name
|
104
104
|
@cause = cause
|
data/lib/cfoo/version.rb
CHANGED
data/spec/cfoo/el_parser_spec.rb
CHANGED
@@ -7,6 +7,10 @@ module Cfoo
|
|
7
7
|
parser.parse("$(orange)").should == {"Ref" => "orange"}
|
8
8
|
end
|
9
9
|
|
10
|
+
it 'turns simple EL references with dots into CloudFormation "Ref" maps' do
|
11
|
+
parser.parse("$(orange.color)").should == {"Ref" => "orange.color"}
|
12
|
+
end
|
13
|
+
|
10
14
|
it 'turns EL references embedded in strings into appended arrays' do
|
11
15
|
parser.parse("large $(MelonType) melon").should == {"Fn::Join" => [ "" , [ "large ", { "Ref" => "MelonType" }, " melon" ]]}
|
12
16
|
end
|
@@ -15,14 +19,14 @@ module Cfoo
|
|
15
19
|
parser.parse("I have $(number) apples and $(otherNumber) oranges").should == {"Fn::Join" => [ "" , ["I have ", { "Ref" => "number" }, " apples and ", { "Ref" => "otherNumber" }, " oranges" ]]}
|
16
20
|
end
|
17
21
|
|
18
|
-
it 'turns EL attribute references into CloudFormation "GetAtt" maps' do
|
19
|
-
parser.parse("$(apple.color)").should == {"Fn::GetAtt" => ["apple", "color"]}
|
20
|
-
end
|
21
|
-
|
22
22
|
it 'turns EL attribute map references into CloudFormation "GetAtt" maps' do
|
23
23
|
parser.parse("$(apple[color])").should == {"Fn::GetAtt" => ["apple", "color"]}
|
24
24
|
end
|
25
25
|
|
26
|
+
it 'turns EL attribute map references with dots into CloudFormation "GetAtt" maps' do
|
27
|
+
parser.parse("$(apple[color.primary])").should == {"Fn::GetAtt" => ["apple", "color.primary"]}
|
28
|
+
end
|
29
|
+
|
26
30
|
it 'turns EL map references into CloudFormation "FindInMap" maps' do
|
27
31
|
parser.parse("$(fruit[apple][color])").should == {"Fn::FindInMap" => ["fruit", "apple", "color"]}
|
28
32
|
end
|
@@ -50,9 +50,28 @@ module Cfoo
|
|
50
50
|
dog
|
51
51
|
EOF
|
52
52
|
|
53
|
-
|
54
|
-
|
55
|
-
|
53
|
+
coordinates = file_system.find_coordinates("lazy", "test.txt")
|
54
|
+
expect(coordinates).to eq [2,37]
|
55
|
+
end
|
56
|
+
it "returns the coordinates of multiline strings" do
|
57
|
+
write_project_file "test.txt", <<-EOF
|
58
|
+
the quick brown fox
|
59
|
+
jumps over the lazy
|
60
|
+
dog
|
61
|
+
EOF
|
62
|
+
|
63
|
+
file_system.find_coordinates("lazy\ndog", "test.txt")
|
64
|
+
end
|
65
|
+
it "raises an error if it can't find the text" do
|
66
|
+
write_project_file "test.txt", <<-EOF
|
67
|
+
the quick brown fox
|
68
|
+
jumps over the lazy
|
69
|
+
dog
|
70
|
+
EOF
|
71
|
+
|
72
|
+
expect {
|
73
|
+
file_system.find_coordinates("xxxxxx", "test.txt")
|
74
|
+
}.to raise_error CoordinatesNotFound
|
56
75
|
end
|
57
76
|
end
|
58
77
|
|
@@ -74,7 +93,7 @@ module Cfoo
|
|
74
93
|
file_system.glob_relative("modules/*.yml").should == ["modules/c.yml"]
|
75
94
|
end
|
76
95
|
end
|
77
|
-
|
96
|
+
|
78
97
|
describe "#parse_file" do
|
79
98
|
it "loads the file with the YAML parser" do
|
80
99
|
yaml_parser.should_receive(:load_file).with("#{project_root}/yamlfile.yml")
|
data/spec/cfoo/parser_spec.rb
CHANGED
@@ -51,6 +51,11 @@ module Cfoo
|
|
51
51
|
parser.parse_file("myfile.yml").should == {"Ref" => "orange"}
|
52
52
|
end
|
53
53
|
|
54
|
+
it 'turns simple EL references with dots into CloudFormation "Ref" maps' do
|
55
|
+
file_system.should_receive(:parse_file).with("myfile.yml").and_return("$(orange.color)")
|
56
|
+
parser.parse_file("myfile.yml").should == {"Ref" => "orange.color"}
|
57
|
+
end
|
58
|
+
|
54
59
|
it 'turns EL references embedded in strings into appended arrays' do
|
55
60
|
file_system.should_receive(:parse_file).with("myfile.yml").and_return("large $(MelonType) melon")
|
56
61
|
parser.parse_file("myfile.yml").should == {"Fn::Join" => [ "", [ "large ", { "Ref" => "MelonType" }, " melon" ] ] }
|
@@ -63,10 +68,15 @@ module Cfoo
|
|
63
68
|
end
|
64
69
|
|
65
70
|
it 'turns EL attribute references into CloudFormation "GetAtt" maps' do
|
66
|
-
file_system.should_receive(:parse_file).with("myfile.yml").and_return("$(apple
|
71
|
+
file_system.should_receive(:parse_file).with("myfile.yml").and_return("$(apple[color])")
|
67
72
|
parser.parse_file("myfile.yml").should == {"Fn::GetAtt" => ["apple", "color"]}
|
68
73
|
end
|
69
74
|
|
75
|
+
it 'turns EL attribute references with dots into CloudFormation "GetAtt" maps' do
|
76
|
+
file_system.should_receive(:parse_file).with("myfile.yml").and_return("$(apple[color.primary])")
|
77
|
+
parser.parse_file("myfile.yml").should == {"Fn::GetAtt" => ["apple", "color.primary"]}
|
78
|
+
end
|
79
|
+
|
70
80
|
it 'turns EL map references into CloudFormation "FindInMap" maps' do
|
71
81
|
file_system.should_receive(:parse_file).with("myfile.yml").and_return("$(fruit[apple][color])")
|
72
82
|
parser.parse_file("myfile.yml").should == {"Fn::FindInMap" => ["fruit", "apple", "color"]}
|
metadata
CHANGED
@@ -1,147 +1,196 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: cfoo
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
segments:
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
version: 0.0.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
10
5
|
platform: ruby
|
11
|
-
authors:
|
6
|
+
authors:
|
12
7
|
- drrb
|
13
8
|
autorequire:
|
14
9
|
bindir: bin
|
15
10
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2014-04-17 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
21
14
|
name: json
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
segments:
|
28
|
-
- 0
|
29
|
-
version: "0"
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
30
20
|
type: :runtime
|
31
|
-
version_requirements: *id001
|
32
|
-
- !ruby/object:Gem::Dependency
|
33
|
-
name: parslet
|
34
21
|
prerelease: false
|
35
|
-
|
36
|
-
requirements:
|
37
|
-
- -
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
|
40
|
-
|
41
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: parslet
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
42
34
|
type: :runtime
|
43
|
-
version_requirements: *id002
|
44
|
-
- !ruby/object:Gem::Dependency
|
45
|
-
name: bundler
|
46
35
|
prerelease: false
|
47
|
-
|
48
|
-
requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
49
45
|
- - ~>
|
50
|
-
- !ruby/object:Gem::Version
|
51
|
-
|
52
|
-
- 1
|
53
|
-
- 3
|
54
|
-
version: "1.3"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.3'
|
55
48
|
type: :development
|
56
|
-
version_requirements: *id003
|
57
|
-
- !ruby/object:Gem::Dependency
|
58
|
-
name: rake
|
59
49
|
prerelease: false
|
60
|
-
|
61
|
-
requirements:
|
62
|
-
- -
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
|
65
|
-
|
66
|
-
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
67
62
|
type: :development
|
68
|
-
version_requirements: *id004
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rspec
|
71
63
|
prerelease: false
|
72
|
-
|
73
|
-
requirements:
|
74
|
-
- -
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
|
77
|
-
|
78
|
-
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
79
76
|
type: :development
|
80
|
-
version_requirements: *id005
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
|
-
name: cucumber
|
83
77
|
prerelease: false
|
84
|
-
|
85
|
-
requirements:
|
86
|
-
- -
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
|
89
|
-
|
90
|
-
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: cucumber
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
91
90
|
type: :development
|
92
|
-
version_requirements: *id006
|
93
|
-
- !ruby/object:Gem::Dependency
|
94
|
-
name: simplecov
|
95
91
|
prerelease: false
|
96
|
-
|
97
|
-
requirements:
|
98
|
-
- -
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
|
101
|
-
|
102
|
-
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: simplecov
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
103
104
|
type: :development
|
104
|
-
|
105
|
-
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
106
112
|
name: coveralls
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.6.3
|
118
|
+
type: :development
|
107
119
|
prerelease: false
|
108
|
-
|
109
|
-
requirements:
|
110
|
-
- -
|
111
|
-
- !ruby/object:Gem::Version
|
112
|
-
segments:
|
113
|
-
- 0
|
114
|
-
- 6
|
115
|
-
- 3
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
116
124
|
version: 0.6.3
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: mime-types
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - <
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '2'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - <
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '2'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: guard
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - '>='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
117
146
|
type: :development
|
118
|
-
version_requirements: *id008
|
119
|
-
- !ruby/object:Gem::Dependency
|
120
|
-
name: json
|
121
147
|
prerelease: false
|
122
|
-
|
123
|
-
requirements:
|
124
|
-
- -
|
125
|
-
- !ruby/object:Gem::Version
|
126
|
-
|
127
|
-
|
128
|
-
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: guard-rspec
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
129
160
|
type: :development
|
130
|
-
|
131
|
-
|
132
|
-
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: terminal-notifier-guard
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - '>='
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
description: 'Cfoo: CloudFormation master'
|
182
|
+
email:
|
133
183
|
- drrrrrrrrrrrb@gmail.com
|
134
|
-
executables:
|
184
|
+
executables:
|
135
185
|
- cfoo
|
136
186
|
extensions: []
|
137
|
-
|
138
187
|
extra_rdoc_files: []
|
139
|
-
|
140
|
-
files:
|
188
|
+
files:
|
141
189
|
- .gitignore
|
142
190
|
- .simplecov
|
143
191
|
- .travis.yml
|
144
192
|
- Gemfile
|
193
|
+
- Guardfile
|
145
194
|
- LICENSE.txt
|
146
195
|
- README.md
|
147
196
|
- Rakefile
|
@@ -188,37 +237,33 @@ files:
|
|
188
237
|
- spec/cfoo/yaml_parser_spec.rb
|
189
238
|
- spec/cfoo/yaml_spec.rb
|
190
239
|
- spec/spec_helper.rb
|
191
|
-
has_rdoc: true
|
192
240
|
homepage: https://github.com/drrb/cfoo
|
193
|
-
licenses:
|
241
|
+
licenses:
|
194
242
|
- GPL-3
|
243
|
+
metadata: {}
|
195
244
|
post_install_message:
|
196
245
|
rdoc_options: []
|
197
|
-
|
198
|
-
require_paths:
|
246
|
+
require_paths:
|
199
247
|
- lib
|
200
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
201
|
-
requirements:
|
202
|
-
- -
|
203
|
-
- !ruby/object:Gem::Version
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
- !ruby/object:Gem::Version
|
211
|
-
segments:
|
212
|
-
- 0
|
213
|
-
version: "0"
|
248
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
249
|
+
requirements:
|
250
|
+
- - '>='
|
251
|
+
- !ruby/object:Gem::Version
|
252
|
+
version: '0'
|
253
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
254
|
+
requirements:
|
255
|
+
- - '>='
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: '0'
|
214
258
|
requirements: []
|
215
|
-
|
216
259
|
rubyforge_project:
|
217
|
-
rubygems_version:
|
260
|
+
rubygems_version: 2.2.1
|
218
261
|
signing_key:
|
219
|
-
specification_version:
|
220
|
-
summary: Cfoo (pronounced 'sifu') allows you to write your CloudFormation templates
|
221
|
-
|
262
|
+
specification_version: 4
|
263
|
+
summary: Cfoo (pronounced 'sifu') allows you to write your CloudFormation templates
|
264
|
+
in a YAML-based markup language, and organise it into modules to make it easier
|
265
|
+
to maintain.
|
266
|
+
test_files:
|
222
267
|
- features/attribute_expansion.feature
|
223
268
|
- features/convert_yaml_to_json.feature
|
224
269
|
- features/el_escaping.feature
|