cody 0.9.5 → 1.0.1

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 +23 -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 +20 -0
  30. data/lib/cody/dsl/project.rb +54 -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 +9 -0
  34. data/lib/cody/list/project.rb +5 -2
  35. data/lib/cody/project.rb +26 -29
  36. data/lib/cody/role.rb +22 -23
  37. data/lib/cody/schedule.rb +39 -40
  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 +66 -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
@@ -1,13 +1,12 @@
1
1
  module Cody
2
- class Schedule
2
+ class Schedule < Dsl::Base
3
3
  include Cody::Dsl::Schedule
4
4
  include Evaluate
5
5
  include Variables
6
6
 
7
7
  def initialize(options={})
8
- @options = options
8
+ super
9
9
  @schedule_path = options[:schedule_path] || get_schedule_path
10
- @properties = default_properties
11
10
  @iam_policy = {}
12
11
  end
13
12
 
@@ -18,27 +17,27 @@ module Cody
18
17
  load_variables
19
18
  evaluate(@schedule_path)
20
19
 
21
- @properties[:schedule_expression] = @schedule_expression if @schedule_expression
20
+ @properties[:ScheduleExpression] = @schedule_expression if @schedule_expression
22
21
  set_rule_event! if @rule_event_props
23
22
  return if old_properties == @properties # empty schedule.rb file
24
23
 
25
24
  resource = {
26
- events_rule: {
27
- type: "AWS::Events::Rule",
28
- properties: @properties
25
+ EventsRule: {
26
+ Type: "AWS::Events::Rule",
27
+ Properties: @properties
29
28
  },
30
- events_rule_role: events_rule_role,
29
+ EventsRuleRole: events_rule_role,
31
30
  }
32
- CfnCamelizer.transform(resource)
31
+ auto_camelize(resource)
33
32
  end
34
33
 
35
34
  def set_rule_event!
36
35
  props = @rule_event_props
37
- if props.key?(:detail)
38
- description = props.key?(:description) ? props.delete(:description) : rule_description
39
- rule_props = { event_pattern: props, description: description }
40
- else # if props.key?(:event_pattern)
41
- props[:description] ||= rule_description
36
+ if props.key?(:Detail)
37
+ description = props.key?(:Description) ? props.delete(:Description) : rule_description
38
+ rule_props = { EventPattern: props, description: description }
39
+ else # if props.key?(:EventPattern)
40
+ props[:Description] ||= rule_description
42
41
  rule_props = props
43
42
  end
44
43
 
@@ -49,15 +48,15 @@ module Cody
49
48
  description = "Cody #{@options[:full_project_name]}"
50
49
  name = description.gsub(" ", "-").downcase
51
50
  {
52
- description: "#{description} CodeBuild project",
53
- # event_pattern: ,
54
- name: name,
55
- # schedule_expression: ,
56
- state: "ENABLED",
57
- targets: [{
58
- arn: { "Fn::GetAtt": "CodeBuild.Arn" },
59
- role_arn: { "Fn::GetAtt": "EventsRuleRole.Arn" }, # required for specific CodeBuild target.
60
- id: "CodeBuildTarget",
51
+ Description: "#{description} CodeBuild project",
52
+ # EventPattern: ,
53
+ Name: name,
54
+ # ScheduleExpression: ,
55
+ State: "ENABLED",
56
+ Targets: [{
57
+ Arn: { "Fn::GetAtt": "CodeBuild.Arn" },
58
+ RoleArn: { "Fn::GetAtt": "EventsRuleRole.Arn" }, # required for specific CodeBuild target.
59
+ Id: "CodeBuildTarget",
61
60
  }]
62
61
  }
63
62
  end
@@ -69,25 +68,25 @@ module Cody
69
68
 
70
69
  def events_rule_role
71
70
  {
72
- type: "AWS::IAM::Role",
73
- properties: {
74
- assume_role_policy_document: {
75
- statement: [{
76
- action: [ "sts:AssumeRole" ],
77
- effect: "Allow",
78
- principal: { service: [ "events.amazonaws.com" ] }
71
+ Type: "AWS::IAM::Role",
72
+ Properties: {
73
+ AssumeRolePolicyDocument: {
74
+ Statement: [{
75
+ Action: [ "sts:AssumeRole" ],
76
+ Effect: "Allow",
77
+ Principal: { Service: [ "events.amazonaws.com" ] }
79
78
  }],
80
- version: "2012-10-17"
79
+ Version: "2012-10-17"
81
80
  },
82
- path: "/",
83
- policies: [{
84
- policy_name: "CodeBuildAccess",
85
- policy_document: {
86
- version: "2012-10-17",
87
- statement: [{
88
- action: "codebuild:StartBuild",
89
- effect: "Allow",
90
- resource: "arn:aws:codebuild:#{aws_data.region}:#{aws_data.account}:project/#{@options[:full_project_name]}"
81
+ Path: "/",
82
+ Policies: [{
83
+ PolicyName: "CodeBuildAccess",
84
+ PolicyDocument: {
85
+ Version: "2012-10-17",
86
+ Statement: [{
87
+ Action: "codebuild:StartBuild",
88
+ Effect: "Allow",
89
+ Resource: "arn:aws:codebuild:#{aws_data.region}:#{aws_data.account}:project/#{@options[:full_project_name]}"
91
90
  }]
92
91
  }
93
92
  }]
@@ -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.5"
2
+ VERSION = "1.0.1"
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.5
4
+ version: 1.0.1
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-08-09 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,47 +318,45 @@ 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
342
+ - lib/cody/dsl/base.rb
291
343
  - lib/cody/dsl/project.rb
292
344
  - lib/cody/dsl/project/ssm.rb
293
345
  - lib/cody/dsl/role.rb
294
346
  - lib/cody/dsl/schedule.rb
295
347
  - lib/cody/evaluate.rb
296
348
  - lib/cody/evaluate/interface.rb
297
- - lib/cody/help.rb
298
- - lib/cody/help/completion.md
299
- - lib/cody/help/completion_script.md
300
- - lib/cody/help/deploy.md
301
- - lib/cody/help/init.md
302
- - lib/cody/help/logs.md
303
- - lib/cody/help/start.md
304
- - lib/cody/help/stop.md
305
- - lib/cody/init.rb
306
- - lib/cody/list.rb
349
+ - lib/cody/list/no_builds_project.rb
307
350
  - lib/cody/list/project.rb
308
- - lib/cody/logs.rb
309
351
  - lib/cody/project.rb
310
352
  - lib/cody/role.rb
311
353
  - lib/cody/schedule.rb
312
- - lib/cody/sequence.rb
313
354
  - lib/cody/setting.rb
314
355
  - lib/cody/stack.rb
315
- - lib/cody/start.rb
316
- - lib/cody/status.rb
317
- - lib/cody/stop.rb
356
+ - lib/cody/stack/base.rb
357
+ - lib/cody/stack/create.rb
358
+ - lib/cody/stack/update.rb
318
359
  - lib/cody/tailer.rb
319
- - lib/cody/update.rb
320
360
  - lib/cody/variables.rb
321
361
  - lib/cody/version.rb
322
362
  - lib/template/project/buildspec.yml
@@ -328,50 +368,6 @@ files:
328
368
  - lib/template/top/variables/base.rb
329
369
  - lib/template/top/variables/development.rb
330
370
  - lib/template/top/variables/production.rb
331
- - vendor/aws_data/CHANGELOG.md
332
- - vendor/aws_data/Gemfile
333
- - vendor/aws_data/Gemfile.lock
334
- - vendor/aws_data/LICENSE.txt
335
- - vendor/aws_data/README.md
336
- - vendor/aws_data/Rakefile
337
- - vendor/aws_data/aws_data.gemspec
338
- - vendor/aws_data/bin/console
339
- - vendor/aws_data/bin/setup
340
- - vendor/aws_data/lib/aws_data.rb
341
- - vendor/aws_data/lib/aws_data/version.rb
342
- - vendor/aws_data/pkg/aws_data-0.1.0.gem
343
- - vendor/aws_data/spec/aws_data_spec.rb
344
- - vendor/aws_data/spec/spec_helper.rb
345
- - vendor/cfn-status/Gemfile
346
- - vendor/cfn-status/Gemfile.lock
347
- - vendor/cfn-status/LICENSE.txt
348
- - vendor/cfn-status/README.md
349
- - vendor/cfn-status/Rakefile
350
- - vendor/cfn-status/bin/console
351
- - vendor/cfn-status/bin/setup
352
- - vendor/cfn-status/cfn-status.gemspec
353
- - vendor/cfn-status/lib/cfn/aws_service.rb
354
- - vendor/cfn-status/lib/cfn/status.rb
355
- - vendor/cfn-status/lib/cfn/status/version.rb
356
- - vendor/cfn-status/spec/cfn/status_spec.rb
357
- - vendor/cfn-status/spec/fixtures/cfn/stack-events-complete.json
358
- - vendor/cfn-status/spec/fixtures/cfn/stack-events-in-progress.json
359
- - vendor/cfn-status/spec/fixtures/cfn/stack-events-update-rollback-complete.json
360
- - vendor/cfn-status/spec/spec_helper.rb
361
- - vendor/cfn_camelizer/CHANGELOG.md
362
- - vendor/cfn_camelizer/Gemfile
363
- - vendor/cfn_camelizer/Gemfile.lock
364
- - vendor/cfn_camelizer/LICENSE.txt
365
- - vendor/cfn_camelizer/README.md
366
- - vendor/cfn_camelizer/Rakefile
367
- - vendor/cfn_camelizer/bin/console
368
- - vendor/cfn_camelizer/bin/setup
369
- - vendor/cfn_camelizer/cfn_camelizer.gemspec
370
- - vendor/cfn_camelizer/lib/camelizer.yml
371
- - vendor/cfn_camelizer/lib/cfn_camelizer.rb
372
- - vendor/cfn_camelizer/lib/cfn_camelizer/version.rb
373
- - vendor/cfn_camelizer/spec/cfn_camelizer_spec.rb
374
- - vendor/cfn_camelizer/spec/spec_helper.rb
375
371
  homepage: https://github.com/tongueroo/cody
376
372
  licenses:
377
373
  - MIT