cody 0.9.6 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +0 -9
  3. data/CHANGELOG.md +22 -0
  4. data/Gemfile +0 -2
  5. data/cody.gemspec +3 -3
  6. data/lib/cody.rb +4 -8
  7. data/lib/cody/aws_services.rb +1 -1
  8. data/lib/cody/aws_services/helpers.rb +20 -3
  9. data/lib/cody/cli.rb +4 -13
  10. data/lib/cody/{badge.rb → cli/badge.rb} +1 -1
  11. data/lib/cody/{base.rb → cli/base.rb} +9 -3
  12. data/lib/cody/{delete.rb → cli/delete.rb} +3 -3
  13. data/lib/cody/cli/deploy.rb +7 -0
  14. data/lib/cody/cli/help.rb +11 -0
  15. data/lib/cody/{help → cli/help}/deploy.md +0 -0
  16. data/lib/cody/{help → cli/help}/init.md +0 -0
  17. data/lib/cody/{help → cli/help}/logs.md +0 -0
  18. data/lib/cody/{help → cli/help}/start.md +0 -0
  19. data/lib/cody/{help → cli/help}/stop.md +0 -0
  20. data/lib/cody/{init.rb → cli/init.rb} +1 -2
  21. data/lib/cody/{list.rb → cli/list.rb} +23 -4
  22. data/lib/cody/{logs.rb → cli/logs.rb} +3 -2
  23. data/lib/cody/{sequence.rb → cli/sequence.rb} +3 -3
  24. data/lib/cody/{start.rb → cli/start.rb} +3 -3
  25. data/lib/cody/{status.rb → cli/status.rb} +2 -1
  26. data/lib/cody/{stop.rb → cli/stop.rb} +2 -1
  27. data/lib/cody/command.rb +11 -0
  28. data/lib/cody/core.rb +5 -5
  29. data/lib/cody/dsl/base.rb +9 -0
  30. data/lib/cody/dsl/project.rb +67 -49
  31. data/lib/cody/dsl/role.rb +11 -11
  32. data/lib/cody/dsl/schedule.rb +8 -8
  33. data/lib/cody/list/no_builds_project.rb +1 -1
  34. data/lib/cody/list/project.rb +3 -1
  35. data/lib/cody/project.rb +22 -23
  36. data/lib/cody/role.rb +20 -20
  37. data/lib/cody/schedule.rb +37 -37
  38. data/lib/cody/stack.rb +16 -71
  39. data/lib/cody/stack/base.rb +104 -0
  40. data/lib/cody/{create.rb → stack/create.rb} +2 -2
  41. data/lib/cody/{update.rb → stack/update.rb} +2 -2
  42. data/lib/cody/tailer.rb +1 -1
  43. data/lib/cody/version.rb +1 -1
  44. data/lib/template/project/buildspec.yml +1 -1
  45. data/lib/template/project/project.rb.tt +5 -19
  46. metadata +64 -70
  47. data/lib/cody/completer.rb +0 -159
  48. data/lib/cody/completer/script.rb +0 -6
  49. data/lib/cody/completer/script.sh +0 -10
  50. data/lib/cody/deploy.rb +0 -40
  51. data/lib/cody/help.rb +0 -9
  52. data/lib/cody/help/completion.md +0 -22
  53. data/lib/cody/help/completion_script.md +0 -3
  54. data/vendor/aws_data/CHANGELOG.md +0 -7
  55. data/vendor/aws_data/Gemfile +0 -4
  56. data/vendor/aws_data/LICENSE.txt +0 -21
  57. data/vendor/aws_data/README.md +0 -42
  58. data/vendor/aws_data/Rakefile +0 -6
  59. data/vendor/aws_data/aws_data.gemspec +0 -30
  60. data/vendor/aws_data/bin/console +0 -14
  61. data/vendor/aws_data/bin/setup +0 -8
  62. data/vendor/aws_data/lib/aws_data.rb +0 -91
  63. data/vendor/aws_data/lib/aws_data/version.rb +0 -3
  64. data/vendor/aws_data/spec/aws_data_spec.rb +0 -5
  65. data/vendor/aws_data/spec/spec_helper.rb +0 -14
  66. data/vendor/cfn-status/Gemfile +0 -4
  67. data/vendor/cfn-status/LICENSE.txt +0 -21
  68. data/vendor/cfn-status/README.md +0 -56
  69. data/vendor/cfn-status/Rakefile +0 -6
  70. data/vendor/cfn-status/bin/console +0 -14
  71. data/vendor/cfn-status/bin/setup +0 -8
  72. data/vendor/cfn-status/cfn-status.gemspec +0 -30
  73. data/vendor/cfn-status/lib/cfn/aws_service.rb +0 -56
  74. data/vendor/cfn-status/lib/cfn/status.rb +0 -220
  75. data/vendor/cfn-status/lib/cfn/status/version.rb +0 -5
  76. data/vendor/cfn-status/spec/cfn/status_spec.rb +0 -81
  77. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-complete.json +0 -1080
  78. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-in-progress.json +0 -1080
  79. data/vendor/cfn-status/spec/fixtures/cfn/stack-events-update-rollback-complete.json +0 -1086
  80. data/vendor/cfn-status/spec/spec_helper.rb +0 -14
  81. data/vendor/cfn_camelizer/CHANGELOG.md +0 -10
  82. data/vendor/cfn_camelizer/Gemfile +0 -4
  83. data/vendor/cfn_camelizer/LICENSE.txt +0 -21
  84. data/vendor/cfn_camelizer/README.md +0 -40
  85. data/vendor/cfn_camelizer/Rakefile +0 -6
  86. data/vendor/cfn_camelizer/bin/console +0 -14
  87. data/vendor/cfn_camelizer/bin/setup +0 -8
  88. data/vendor/cfn_camelizer/cfn_camelizer.gemspec +0 -32
  89. data/vendor/cfn_camelizer/lib/camelizer.yml +0 -33
  90. data/vendor/cfn_camelizer/lib/cfn_camelizer.rb +0 -92
  91. data/vendor/cfn_camelizer/lib/cfn_camelizer/version.rb +0 -3
  92. data/vendor/cfn_camelizer/spec/cfn_camelizer_spec.rb +0 -79
  93. data/vendor/cfn_camelizer/spec/spec_helper.rb +0 -14
@@ -2,92 +2,37 @@ require "aws-sdk-cloudformation"
2
2
 
3
3
  module Cody
4
4
  class Stack
5
- include AwsServices
5
+ include Cody::AwsServices
6
6
 
7
7
  def initialize(options)
8
8
  @options = options
9
9
  @project_name = @options[:project_name] || inferred_project_name
10
- @stack_name = options[:stack_name] || inferred_stack_name(@project_name)
11
-
12
- @full_project_name = project_name_convention(@project_name)
13
- @template = {
14
- "Description" => "CodeBuild Project: #{@full_project_name}",
15
- "Resources" => {}
16
- }
10
+ @stack_name = normalize_stack_name(options[:stack_name] || inferred_stack_name(@project_name))
17
11
  end
18
12
 
19
13
  def run
20
- options = @options.merge(
21
- project_name: @project_name,
22
- full_project_name: @full_project_name,
23
- )
24
- project_builder = Project.new(options)
25
- unless project_builder.exist?
26
- puts "ERROR: Cody project does not exist: #{project_builder.project_path}".color(:red)
27
- exit 1
28
- return
29
- end
30
- project = project_builder.run
31
- @template["Resources"].merge!(project)
32
-
33
- if project["CodeBuild"]["Properties"]["ServiceRole"] == {"Ref"=>"IamRole"}
34
- role = Role.new(options).run
35
- @template["Resources"].merge!(role)
36
- end
37
-
38
- schedule = Schedule.new(options).run
39
- @template["Resources"].merge!(schedule) if schedule
40
-
41
- template_path = "/tmp/codebuild.yml"
42
- FileUtils.mkdir_p(File.dirname(template_path))
43
- IO.write(template_path, YAML.dump(@template))
44
- puts "Generated CloudFormation template at #{template_path.color(:green)}"
45
- return if @options[:noop]
46
- puts "Deploying stack #{@stack_name.color(:green)} with CodeBuild project #{@full_project_name.color(:green)}"
47
-
48
- begin
49
- perform
50
- url_info
51
- return unless @options[:wait]
52
- status.wait
53
- exit 2 unless status.success?
54
- rescue Aws::CloudFormation::Errors::ValidationError => e
55
- if e.message.include?("No updates") # No updates are to be performed.
56
- puts "WARN: #{e.message}".color(:yellow)
57
- else
58
- puts "ERROR ValidationError: #{e.message}".color(:red)
59
- exit 1
60
- end
14
+ handle_rollback_completed!
15
+ if stack_exists?(@stack_name)
16
+ Update.new(@options).run
17
+ else
18
+ Create.new(@options).run
61
19
  end
62
20
  end
63
21
 
64
22
  private
65
- def url_info
66
- stack = cfn.describe_stacks(stack_name: @stack_name).stacks.first
67
- region = `aws configure get region`.strip rescue "us-east-1"
68
- url = "https://console.aws.amazon.com/cloudformation/home?region=#{region}#/stacks"
69
- puts "Stack name #{@stack_name.color(:yellow)} status #{stack["stack_status"].color(:yellow)}"
70
- puts "Here's the CloudFormation url to check for more details #{url}"
71
- end
72
-
73
- def status
74
- @status ||= Cfn::Status.new(@stack_name)
23
+ def handle_rollback_completed!
24
+ @stack = find_stack(@stack_name)
25
+ if @stack && rollback_complete?(@stack)
26
+ puts "Existing stack in ROLLBACK_COMPLETE state. Deleting stack before continuing."
27
+ cfn.delete_stack(stack_name: @stack_name)
28
+ status.wait
29
+ status.reset
30
+ @stack = nil # at this point stack has been deleted
31
+ end
75
32
  end
76
33
 
77
34
  def rollback_complete?(stack)
78
35
  stack.stack_status == 'ROLLBACK_COMPLETE'
79
36
  end
80
-
81
- def find_stack(stack_name)
82
- resp = cfn.describe_stacks(stack_name: stack_name)
83
- resp.stacks.first
84
- rescue Aws::CloudFormation::Errors::ValidationError => e
85
- # example: Stack with id demo-web does not exist
86
- if e.message =~ /Stack with/ && e.message =~ /does not exist/
87
- nil
88
- else
89
- raise
90
- end
91
- end
92
37
  end
93
38
  end
@@ -0,0 +1,104 @@
1
+ class Cody::Stack
2
+ class Base
3
+ include Cody::AwsServices
4
+
5
+ def initialize(options)
6
+ @options = options
7
+ @project_name = @options[:project_name] || inferred_project_name
8
+ @stack_name = normalize_stack_name(options[:stack_name] || inferred_stack_name(@project_name))
9
+
10
+ @full_project_name = project_name_convention(@project_name)
11
+ @template = {
12
+ "Description" => "CodeBuild Project: #{@full_project_name}",
13
+ "Resources" => {}
14
+ }
15
+ end
16
+
17
+ def run
18
+ options = @options.merge(
19
+ project_name: @project_name,
20
+ full_project_name: @full_project_name,
21
+ )
22
+ project_builder = Cody::Project.new(options)
23
+ unless project_builder.exist?
24
+ puts "ERROR: Cody project does not exist: #{project_builder.project_path}".color(:red)
25
+ exit 1
26
+ return
27
+ end
28
+ project = project_builder.run
29
+ @template["Resources"].merge!(project)
30
+
31
+ if project["CodeBuild"]["Properties"]["ServiceRole"] == {"Ref"=>"IamRole"}
32
+ role = Cody::Role.new(options).run
33
+ @template["Resources"].merge!(role)
34
+ end
35
+
36
+ schedule = Cody::Schedule.new(options).run
37
+ @template["Resources"].merge!(schedule) if schedule
38
+
39
+ template_path = "/tmp/codebuild.yml"
40
+ FileUtils.mkdir_p(File.dirname(template_path))
41
+ IO.write(template_path, YAML.dump(@template))
42
+ puts "Generated CloudFormation template at #{template_path.color(:green)}"
43
+ return if @options[:noop]
44
+ puts "Deploying stack #{@stack_name.color(:green)} with CodeBuild project #{@full_project_name.color(:green)}"
45
+
46
+ begin
47
+ perform
48
+ url_info
49
+ return unless @options[:wait]
50
+ status.wait
51
+ exit 2 unless status.success?
52
+ rescue Aws::CloudFormation::Errors::ValidationError => e
53
+ if e.message.include?("No updates") # No updates are to be performed.
54
+ puts "WARN: #{e.message}".color(:yellow)
55
+ else
56
+ puts "ERROR ValidationError: #{e.message}".color(:red)
57
+ exit 1
58
+ end
59
+ end
60
+ end
61
+
62
+ private
63
+ def url_info
64
+ stack = cfn.describe_stacks(stack_name: @stack_name).stacks.first
65
+ region = `aws configure get region`.strip rescue "us-east-1"
66
+ url = "https://console.aws.amazon.com/cloudformation/home?region=#{region}#/stacks"
67
+ puts "Stack name #{@stack_name.color(:yellow)} status #{stack["stack_status"].color(:yellow)}"
68
+ puts "Here's the CloudFormation url to check for more details #{url}"
69
+ end
70
+
71
+ def status
72
+ @status ||= CfnStatus.new(@stack_name)
73
+ end
74
+
75
+ def rollback_complete?(stack)
76
+ stack.stack_status == 'ROLLBACK_COMPLETE'
77
+ end
78
+
79
+
80
+ def handle_rollback_completed!
81
+ @stack = find_stack(@stack_name)
82
+ if @stack && rollback_complete?(@stack)
83
+ puts "Existing stack in ROLLBACK_COMPLETE state. Deleting stack before continuing."
84
+ cfn.delete_stack(stack_name: @stack_name)
85
+ status.wait
86
+ status.reset
87
+ @stack = nil # at this point stack has been deleted
88
+ end
89
+ end
90
+
91
+ def find_stack(stack_name)
92
+ return if ENV['TEST']
93
+ resp = cfn.describe_stacks(stack_name: stack_name)
94
+ resp.stacks.first
95
+ rescue Aws::CloudFormation::Errors::ValidationError => e
96
+ # example: Stack with id demo-web does not exist
97
+ if e.message =~ /Stack with/ && e.message =~ /does not exist/
98
+ nil
99
+ else
100
+ raise
101
+ end
102
+ end
103
+ end
104
+ end
@@ -1,5 +1,5 @@
1
- module Cody
2
- class Create < Stack
1
+ class Cody::Stack
2
+ class Create < Base
3
3
  def perform
4
4
  cfn.create_stack(
5
5
  stack_name: @stack_name,
@@ -1,5 +1,5 @@
1
- module Cody
2
- class Update < Stack
1
+ class Cody::Stack
2
+ class Update < Base
3
3
  def perform
4
4
  cfn.update_stack(
5
5
  stack_name: @stack_name,
@@ -2,7 +2,7 @@ require "aws-logs"
2
2
 
3
3
  module Cody
4
4
  class Tailer
5
- include AwsServices
5
+ include Cody::AwsServices
6
6
 
7
7
  def initialize(options, build_id)
8
8
  @options, @build_id = options, build_id
@@ -1,3 +1,3 @@
1
1
  module Cody
2
- VERSION = "0.9.6"
2
+ VERSION = "1.0.2"
3
3
  end
@@ -5,7 +5,7 @@ version: 0.2
5
5
  phases:
6
6
  install:
7
7
  runtime-versions:
8
- ruby: 2.6
8
+ ruby: latest
9
9
  build:
10
10
  commands:
11
11
  - uptime
@@ -1,5 +1,10 @@
1
1
  # For methods, refer to the properties of the CloudFormation CodeBuild::Project https://amzn.to/2UTeNlr
2
2
  # For convenience methods, refer to the source https://github.com/tongueroo/cody/blob/master/lib/cody/dsl/project.rb
3
+ # Docs:
4
+ #
5
+ # * https://cody.run/docs/dsl/project/
6
+ # * https://cody.run/docs/docs/dsl/helpers/
7
+ #
3
8
 
4
9
  # name("example-project-name") # recommend leaving unset and codebuild will use a conventional name
5
10
  github_url("<%= project_github_url %>")
@@ -8,22 +13,3 @@ environment_variables(
8
13
  JETS_ENV: "test",
9
14
  # API_KEY: "ssm:/codebuild/demo/api_key" # Example of ssm parameter
10
15
  )
11
-
12
- # Some useful helpers:
13
- # puts "project_name #{project_name}" # IE: demo-web
14
- # puts "full_project_name #{full_project_name}" # demo-web-development
15
-
16
- # Uncomment to enable github webhook, the GitHub oauth token needs admin:repo_hook permissions
17
- # Refer to https://cody.run/docs/github_oauth/
18
- # triggers(webhook: true)
19
- # Another example:
20
- # Docs: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-codebuild-project-projecttriggers.html
21
- # {type: "EVENT", pattern: "PUSH"} is required
22
- # Also, note the extra brackets: [[]] is actually the proper format. I know weird.
23
- # triggers(
24
- # webhook: true,
25
- # filter_groups: [[{type: "HEAD_REF", pattern: "my-branch"}, {type: "EVENT", pattern: "PUSH"}]]
26
- # )
27
-
28
- # Shorthand to enable all local cache modes
29
- # local_cache(true)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cody
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.6
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-25 00:00:00.000000000 Z
11
+ date: 2020-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -94,6 +94,48 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: aws_data
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
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
112
+ name: cfn-status
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: cfn_camelizer
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
97
139
  - !ruby/object:Gem::Dependency
98
140
  name: cli-format
99
141
  requirement: !ruby/object:Gem::Requirement
@@ -276,18 +318,27 @@ files:
276
318
  - lib/cody/autoloader.rb
277
319
  - lib/cody/aws_services.rb
278
320
  - lib/cody/aws_services/helpers.rb
279
- - lib/cody/badge.rb
280
- - lib/cody/base.rb
281
321
  - lib/cody/cli.rb
322
+ - lib/cody/cli/badge.rb
323
+ - lib/cody/cli/base.rb
324
+ - lib/cody/cli/delete.rb
325
+ - lib/cody/cli/deploy.rb
326
+ - lib/cody/cli/help.rb
327
+ - lib/cody/cli/help/deploy.md
328
+ - lib/cody/cli/help/init.md
329
+ - lib/cody/cli/help/logs.md
330
+ - lib/cody/cli/help/start.md
331
+ - lib/cody/cli/help/stop.md
332
+ - lib/cody/cli/init.rb
333
+ - lib/cody/cli/list.rb
334
+ - lib/cody/cli/logs.rb
335
+ - lib/cody/cli/sequence.rb
336
+ - lib/cody/cli/start.rb
337
+ - lib/cody/cli/status.rb
338
+ - lib/cody/cli/stop.rb
282
339
  - lib/cody/command.rb
283
- - lib/cody/completer.rb
284
- - lib/cody/completer/script.rb
285
- - lib/cody/completer/script.sh
286
340
  - lib/cody/core.rb
287
- - lib/cody/create.rb
288
341
  - lib/cody/default/settings.yml
289
- - lib/cody/delete.rb
290
- - lib/cody/deploy.rb
291
342
  - lib/cody/dsl/base.rb
292
343
  - lib/cody/dsl/project.rb
293
344
  - lib/cody/dsl/project/ssm.rb
@@ -295,30 +346,17 @@ files:
295
346
  - lib/cody/dsl/schedule.rb
296
347
  - lib/cody/evaluate.rb
297
348
  - lib/cody/evaluate/interface.rb
298
- - lib/cody/help.rb
299
- - lib/cody/help/completion.md
300
- - lib/cody/help/completion_script.md
301
- - lib/cody/help/deploy.md
302
- - lib/cody/help/init.md
303
- - lib/cody/help/logs.md
304
- - lib/cody/help/start.md
305
- - lib/cody/help/stop.md
306
- - lib/cody/init.rb
307
- - lib/cody/list.rb
308
349
  - lib/cody/list/no_builds_project.rb
309
350
  - lib/cody/list/project.rb
310
- - lib/cody/logs.rb
311
351
  - lib/cody/project.rb
312
352
  - lib/cody/role.rb
313
353
  - lib/cody/schedule.rb
314
- - lib/cody/sequence.rb
315
354
  - lib/cody/setting.rb
316
355
  - lib/cody/stack.rb
317
- - lib/cody/start.rb
318
- - lib/cody/status.rb
319
- - lib/cody/stop.rb
356
+ - lib/cody/stack/base.rb
357
+ - lib/cody/stack/create.rb
358
+ - lib/cody/stack/update.rb
320
359
  - lib/cody/tailer.rb
321
- - lib/cody/update.rb
322
360
  - lib/cody/variables.rb
323
361
  - lib/cody/version.rb
324
362
  - lib/template/project/buildspec.yml
@@ -330,50 +368,6 @@ files:
330
368
  - lib/template/top/variables/base.rb
331
369
  - lib/template/top/variables/development.rb
332
370
  - lib/template/top/variables/production.rb
333
- - vendor/aws_data/CHANGELOG.md
334
- - vendor/aws_data/Gemfile
335
- - vendor/aws_data/Gemfile.lock
336
- - vendor/aws_data/LICENSE.txt
337
- - vendor/aws_data/README.md
338
- - vendor/aws_data/Rakefile
339
- - vendor/aws_data/aws_data.gemspec
340
- - vendor/aws_data/bin/console
341
- - vendor/aws_data/bin/setup
342
- - vendor/aws_data/lib/aws_data.rb
343
- - vendor/aws_data/lib/aws_data/version.rb
344
- - vendor/aws_data/pkg/aws_data-0.1.0.gem
345
- - vendor/aws_data/spec/aws_data_spec.rb
346
- - vendor/aws_data/spec/spec_helper.rb
347
- - vendor/cfn-status/Gemfile
348
- - vendor/cfn-status/Gemfile.lock
349
- - vendor/cfn-status/LICENSE.txt
350
- - vendor/cfn-status/README.md
351
- - vendor/cfn-status/Rakefile
352
- - vendor/cfn-status/bin/console
353
- - vendor/cfn-status/bin/setup
354
- - vendor/cfn-status/cfn-status.gemspec
355
- - vendor/cfn-status/lib/cfn/aws_service.rb
356
- - vendor/cfn-status/lib/cfn/status.rb
357
- - vendor/cfn-status/lib/cfn/status/version.rb
358
- - vendor/cfn-status/spec/cfn/status_spec.rb
359
- - vendor/cfn-status/spec/fixtures/cfn/stack-events-complete.json
360
- - vendor/cfn-status/spec/fixtures/cfn/stack-events-in-progress.json
361
- - vendor/cfn-status/spec/fixtures/cfn/stack-events-update-rollback-complete.json
362
- - vendor/cfn-status/spec/spec_helper.rb
363
- - vendor/cfn_camelizer/CHANGELOG.md
364
- - vendor/cfn_camelizer/Gemfile
365
- - vendor/cfn_camelizer/Gemfile.lock
366
- - vendor/cfn_camelizer/LICENSE.txt
367
- - vendor/cfn_camelizer/README.md
368
- - vendor/cfn_camelizer/Rakefile
369
- - vendor/cfn_camelizer/bin/console
370
- - vendor/cfn_camelizer/bin/setup
371
- - vendor/cfn_camelizer/cfn_camelizer.gemspec
372
- - vendor/cfn_camelizer/lib/camelizer.yml
373
- - vendor/cfn_camelizer/lib/cfn_camelizer.rb
374
- - vendor/cfn_camelizer/lib/cfn_camelizer/version.rb
375
- - vendor/cfn_camelizer/spec/cfn_camelizer_spec.rb
376
- - vendor/cfn_camelizer/spec/spec_helper.rb
377
371
  homepage: https://github.com/tongueroo/cody
378
372
  licenses:
379
373
  - MIT