dpl 2.0.3.beta.4 → 2.0.3.beta.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +15 -3
  3. data/Gemfile.lock +444 -211
  4. data/Rakefile +36 -34
  5. data/bin/dpl +3 -1
  6. data/dpl.gemspec +25 -0
  7. data/lib/dpl/cli.rb +19 -14
  8. data/lib/dpl/ctx/bash.rb +18 -12
  9. data/lib/dpl/ctx/test.rb +21 -15
  10. data/lib/dpl/ctx.rb +2 -0
  11. data/lib/dpl/helper/assets.rb +4 -2
  12. data/lib/dpl/helper/cmd.rb +20 -18
  13. data/lib/dpl/helper/config_file.rb +5 -3
  14. data/lib/dpl/helper/cookbook_site_streaming_uploader.rb +249 -0
  15. data/lib/dpl/helper/env.rb +26 -22
  16. data/lib/dpl/helper/github.rb +2 -0
  17. data/lib/dpl/helper/interpolate.rb +8 -4
  18. data/lib/dpl/helper/memoize.rb +4 -1
  19. data/lib/dpl/helper/squiggle.rb +3 -1
  20. data/lib/dpl/helper/transliterate.rb +3 -1
  21. data/lib/dpl/helper/wrap.rb +3 -1
  22. data/lib/dpl/helper/zip.rb +3 -1
  23. data/lib/dpl/provider/dsl.rb +18 -4
  24. data/lib/dpl/provider/examples.rb +6 -2
  25. data/lib/dpl/provider/status.rb +26 -24
  26. data/lib/dpl/providers/anynines.rb +22 -20
  27. data/lib/dpl/providers/azure_web_apps.rb +21 -19
  28. data/lib/dpl/providers/bintray.rb +44 -37
  29. data/lib/dpl/providers/bluemixcloudfoundry.rb +38 -36
  30. data/lib/dpl/providers/boxfuse.rb +12 -10
  31. data/lib/dpl/providers/cargo.rb +7 -5
  32. data/lib/dpl/providers/chef_supermarket.rb +82 -80
  33. data/lib/dpl/providers/cloud66.rb +17 -15
  34. data/lib/dpl/providers/cloudfiles.rb +8 -6
  35. data/lib/dpl/providers/cloudformation.rb +191 -187
  36. data/lib/dpl/providers/cloudfoundry.rb +32 -30
  37. data/lib/dpl/providers/codedeploy.rb +35 -33
  38. data/lib/dpl/providers/convox.rb +32 -25
  39. data/lib/dpl/providers/datica.rb +30 -28
  40. data/lib/dpl/providers/ecr.rb +66 -64
  41. data/lib/dpl/providers/elasticbeanstalk.rb +14 -12
  42. data/lib/dpl/providers/engineyard.rb +60 -58
  43. data/lib/dpl/providers/firebase.rb +6 -4
  44. data/lib/dpl/providers/flynn.rb +8 -6
  45. data/lib/dpl/providers/gae.rb +28 -25
  46. data/lib/dpl/providers/gcs.rb +59 -57
  47. data/lib/dpl/providers/git_push.rb +199 -195
  48. data/lib/dpl/providers/gleis.rb +19 -17
  49. data/lib/dpl/providers/hackage.rb +15 -13
  50. data/lib/dpl/providers/hephy.rb +18 -16
  51. data/lib/dpl/providers/heroku/api.rb +72 -70
  52. data/lib/dpl/providers/heroku/git.rb +15 -13
  53. data/lib/dpl/providers/heroku.rb +40 -38
  54. data/lib/dpl/providers/lambda.rb +134 -134
  55. data/lib/dpl/providers/launchpad.rb +45 -43
  56. data/lib/dpl/providers/netlify.rb +7 -5
  57. data/lib/dpl/providers/npm.rb +61 -58
  58. data/lib/dpl/providers/nuget.rb +8 -6
  59. data/lib/dpl/providers/openshift.rb +8 -6
  60. data/lib/dpl/providers/opsworks.rb +23 -21
  61. data/lib/dpl/providers/pages/api.rb +14 -14
  62. data/lib/dpl/providers/pages/git.rb +53 -47
  63. data/lib/dpl/providers/pages.rb +3 -1
  64. data/lib/dpl/providers/puppetforge.rb +6 -4
  65. data/lib/dpl/providers/pypi.rb +55 -54
  66. data/lib/dpl/providers/releases.rb +30 -23
  67. data/lib/dpl/providers/rubygems.rb +35 -31
  68. data/lib/dpl/providers/s3.rb +148 -142
  69. data/lib/dpl/providers/scalingo.rb +18 -16
  70. data/lib/dpl/providers/script.rb +4 -2
  71. data/lib/dpl/providers/snap.rb +12 -9
  72. data/lib/dpl/providers/surge.rb +7 -5
  73. data/lib/dpl/providers/testfairy.rb +47 -43
  74. data/lib/dpl/providers/transifex.rb +20 -18
  75. data/lib/dpl/providers.rb +3 -1
  76. data/lib/dpl/string_ext.rb +3 -1
  77. data/lib/dpl/support/aws_sdk_patch.rb +4 -1
  78. data/lib/dpl/support/gems.rb +7 -3
  79. data/lib/dpl/support/gstore_patch.rb +3 -1
  80. data/lib/dpl/support/version.rb +13 -12
  81. data/lib/dpl/version.rb +3 -1
  82. data/lib/dpl.rb +2 -0
  83. data/status.json +237 -0
  84. metadata +32 -15
  85. /data/lib/dpl/providers/{packagecloud.rb → packagecloud.rb_} +0 -0
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Dpl
2
4
  module Providers
3
5
  class Cloudformation < Provider
@@ -6,9 +8,9 @@ module Dpl
6
8
 
7
9
  full_name 'AWS CloudFormation'
8
10
 
9
- description sq(<<-str)
11
+ description sq(<<-STR)
10
12
  tbd
11
- str
13
+ STR
12
14
 
13
15
  gem 'aws-sdk-cloudformation', '~> 1.0'
14
16
 
@@ -24,25 +26,25 @@ module Dpl
24
26
  opt '--promote', 'Deploy changes', default: true, note: 'otherwise a change set is created'
25
27
  opt '--role_arn ARN', 'AWS Role ARN'
26
28
  opt '--sts_assume_role ARN', 'AWS Role ARN for cross account deployments (assumed by travis using given AWS credentials).'
27
- opt '--capabilities STR', 'CloudFormation allowed capabilities', type: :array, enum: %w(CAPABILITY_IAM CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND), sep: ',', see: 'https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html'
29
+ opt '--capabilities STR', 'CloudFormation allowed capabilities', type: :array, enum: %w[CAPABILITY_IAM CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND], sep: ',', see: 'https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html'
28
30
  opt '--wait', 'Wait for CloutFormation to finish the stack creation and update', default: true
29
31
  opt '--wait_timeout SEC', 'How many seconds to wait for stack creation and update.', type: :integer, default: 3600
30
32
  opt '--create_timeout SEC', 'How many seconds to wait before the stack status becomes CREATE_FAILED', type: :integer, default: 3600, note: 'valid only when creating a stack'
31
33
  opt '--parameters STR', 'key=value pairs or ENV var names', type: :array, eg: 'one=1 or ENV_VAR_TWO'
32
34
  opt '--output_file PATH', 'Path to output file to store CloudFormation outputs to'
33
35
 
34
- msgs login: 'Using Access Key: %{access_key_id}',
35
- create_stack: 'Creating stack ...',
36
- promote_stack: 'Promoting stack ...',
36
+ msgs login: 'Using Access Key: %{access_key_id}',
37
+ create_stack: 'Creating stack ...',
38
+ promote_stack: 'Promoting stack ...',
37
39
  create_change_set: 'Creating change set ...',
38
- stack_up_to_date: 'Stack already up to date.',
40
+ stack_up_to_date: 'Stack already up to date.',
39
41
  delete_change_set: 'No changes in stack. Removing changeset.',
40
- done: 'Done.',
41
- missing_template: 'File does not exist: %{template}',
42
- invalid_creds: 'Invalid credentials'
42
+ done: 'Done.',
43
+ missing_template: 'File does not exist: %{template}',
44
+ invalid_creds: 'Invalid credentials'
43
45
 
44
- strs change_set_name: 'travis-ci-build-%{build_number}-%{now}',
45
- change_set_desc: 'Changeset created by Travis CI job for build #%{build_number} (%{git_sha})'
46
+ strs change_set_name: 'travis-ci-build-%{build_number}-%{now}',
47
+ change_set_desc: 'Changeset created by Travis CI job for build #%{build_number} (%{git_sha})'
46
48
 
47
49
  def login
48
50
  info :login
@@ -57,221 +59,223 @@ module Dpl
57
59
 
58
60
  private
59
61
 
60
- def update
61
- promote? ? promote : create_change_set(:update)
62
- rescue Aws::CloudFormation::Errors::ValidationError => e
63
- raise e unless e.message.start_with?('No updates are to be performed')
64
- info :stack_up_to_date
65
- end
62
+ def update
63
+ promote? ? promote : create_change_set(:update)
64
+ rescue Aws::CloudFormation::Errors::ValidationError => e
65
+ raise e unless e.message.start_with?('No updates are to be performed')
66
66
 
67
- def promote
68
- info :promote_stack
69
- client.update_stack(common_params)
70
- stream_events(stack_name, :stack_update_complete) if wait?
71
- info :done
72
- end
67
+ info :stack_up_to_date
68
+ end
73
69
 
74
- def create
75
- promote? ? create_stack : create_change_set(:create)
76
- end
70
+ def promote
71
+ info :promote_stack
72
+ client.update_stack(common_params)
73
+ stream_events(stack_name, :stack_update_complete) if wait?
74
+ info :done
75
+ end
77
76
 
78
- def create_stack
79
- info :create_stack
80
- params = { timeout_in_minutes: create_timeout, on_failure: 'ROLLBACK' }
81
- client.create_stack(common_params.merge(params))
82
- stream_events(stack_name, :stack_create_complete) if wait?
83
- info :done
84
- end
77
+ def create
78
+ promote? ? create_stack : create_change_set(:create)
79
+ end
85
80
 
86
- def create_change_set(type)
87
- info :create_change_set
88
- set = client.create_change_set(common_params.merge(change_set_params(type)))
89
- wait_for(:change_set_create_complete, change_set_name: set.id) if wait? && !test?
90
- info :done
91
- rescue Aws::Waiters::Errors::FailureStateError => e
92
- raise e unless change_set_contains_changes?(set)
93
- info :delete_change_set
94
- client.delete_change_set(change_set_name: set.id)
95
- end
81
+ def create_stack
82
+ info :create_stack
83
+ params = { timeout_in_minutes: create_timeout, on_failure: 'ROLLBACK' }
84
+ client.create_stack(common_params.merge(params))
85
+ stream_events(stack_name, :stack_create_complete) if wait?
86
+ info :done
87
+ end
96
88
 
97
- def change_set_params(type)
98
- {
99
- change_set_type: type.to_s.upcase,
100
- change_set_name: interpolate(str(:change_set_name)),
101
- description: interpolate(str(:change_set_desc))
102
- }
103
- end
89
+ def create_change_set(type)
90
+ info :create_change_set
91
+ set = client.create_change_set(common_params.merge(change_set_params(type)))
92
+ wait_for(:change_set_create_complete, change_set_name: set.id) if wait? && !test?
93
+ info :done
94
+ rescue Aws::Waiters::Errors::FailureStateError => e
95
+ raise e unless change_set_contains_changes?(set)
104
96
 
105
- def change_set_contains_changes?(change_set)
106
- data = client.describe_change_set(change_set_name: change_set.id)
107
- data.status_reason.start_with?(%(The submitted information didn't contain changes))
108
- end
97
+ info :delete_change_set
98
+ client.delete_change_set(change_set_name: set.id)
99
+ end
109
100
 
110
- def stack_exists?
111
- stack = last_stack
112
- stack && stack.stack_status != 'REVIEW_IN_PROGRESS'
113
- rescue Aws::CloudFormation::Errors::ValidationError => e
114
- raise e unless e.message.include?('does not exist')
115
- false
116
- end
101
+ def change_set_params(type)
102
+ {
103
+ change_set_type: type.to_s.upcase,
104
+ change_set_name: interpolate(str(:change_set_name)),
105
+ description: interpolate(str(:change_set_desc))
106
+ }
107
+ end
117
108
 
118
- def stream_events(stack_name, condition)
119
- stream = EventStream.new(client, stack_name, method(:info))
120
- wait_for(condition, stack_name: stack_name) unless test? # hmm.
121
- ensure
122
- stream.stop unless stream.nil?
123
- end
109
+ def change_set_contains_changes?(change_set)
110
+ data = client.describe_change_set(change_set_name: change_set.id)
111
+ data.status_reason.start_with?(%(The submitted information didn't contain changes))
112
+ end
124
113
 
125
- def wait_for(cond, params)
126
- started_at = Time.now
127
- timeout = lambda { |*| throw :failure if Time.now - started_at > wait_timeout }
128
- # params = params.merge(max_attempts: nil, delay: 5, before_wait: timeout)
129
- client.wait_until(cond, params) { |w| w.before_wait(&timeout) }
130
- end
114
+ def stack_exists?
115
+ stack = last_stack
116
+ stack && stack.stack_status != 'REVIEW_IN_PROGRESS'
117
+ rescue Aws::CloudFormation::Errors::ValidationError => e
118
+ raise e unless e.message.include?('does not exist')
131
119
 
132
- def store_events
133
- logs = last_stack.outputs || {}
134
- logs = logs.map { |log| "#{log[:output_key]}=#{log[:output_value]}" }
135
- File.write(output_file, logs.join("\n"))
136
- end
120
+ false
121
+ end
137
122
 
138
- def last_stack
139
- client.describe_stacks(stack_name: stack_name)[:stacks].first
140
- end
123
+ def stream_events(stack_name, condition)
124
+ stream = EventStream.new(client, stack_name, method(:info))
125
+ wait_for(condition, stack_name:) unless test? # hmm.
126
+ ensure
127
+ stream&.stop
128
+ end
141
129
 
142
- def common_params
143
- params = {
144
- stack_name: stack_name,
145
- role_arn: role_arn,
146
- capabilities: capabilities,
147
- parameters: parameters
148
- }
149
- params.merge!(template_param)
150
- @common_params ||= compact(params)
151
- end
130
+ def wait_for(cond, params)
131
+ started_at = Time.now
132
+ timeout = ->(*) { throw :failure if Time.now - started_at > wait_timeout }
133
+ # params = params.merge(max_attempts: nil, delay: 5, before_wait: timeout)
134
+ client.wait_until(cond, params) { |w| w.before_wait(&timeout) }
135
+ end
152
136
 
153
- def parameters
154
- @parameters ||= Array(super).map do |str|
155
- key, value = str.split('=', 2)
156
- { parameter_key: key, parameter_value: value || ENV[key] }
157
- end
158
- end
137
+ def store_events
138
+ logs = last_stack.outputs || {}
139
+ logs = logs.map { |log| "#{log[:output_key]}=#{log[:output_value]}" }
140
+ File.write(output_file, logs.join("\n"))
141
+ end
159
142
 
160
- def create_timeout
161
- super / 60
162
- end
143
+ def last_stack
144
+ client.describe_stacks(stack_name:)[:stacks].first
145
+ end
163
146
 
164
- def stack_name
165
- @stack_name ||= "#{stack_name_prefix}#{super}"
166
- end
147
+ def common_params
148
+ params = {
149
+ stack_name:,
150
+ role_arn:,
151
+ capabilities:,
152
+ parameters:
153
+ }
154
+ params.merge!(template_param)
155
+ @common_params ||= compact(params)
156
+ end
167
157
 
168
- def template_param
169
- str = template
170
- return { template_url: str } if url?(str)
171
- return { template_body: read(str) } if file?(str)
172
- error(:missing_template)
158
+ def parameters
159
+ @parameters ||= Array(super).map do |str|
160
+ key, value = str.split('=', 2)
161
+ { parameter_key: key, parameter_value: value || ENV[key] }
173
162
  end
163
+ end
174
164
 
175
- def client
176
- @client ||= Aws::CloudFormation::Client.new(client_options)
177
- end
165
+ def create_timeout
166
+ super / 60
167
+ end
178
168
 
179
- def client_options
180
- params = { region: region, credentials: credentials }
181
- params = params.merge(credentials: assume_role(params)) if sts_assume_role?
182
- params
183
- end
169
+ def stack_name
170
+ @stack_name ||= "#{stack_name_prefix}#{super}"
171
+ end
184
172
 
185
- def credentials
186
- Aws::Credentials.new(access_key_id, secret_access_key)
187
- end
173
+ def template_param
174
+ str = template
175
+ return { template_url: str } if url?(str)
176
+ return { template_body: read(str) } if file?(str)
188
177
 
189
- def assume_role(params)
190
- assumed_role = Aws::STS::Client.new(params).assume_role(
191
- role_arn: sts_assume_role,
192
- role_session_name: "travis-build-#{build_number}"
193
- )
194
- Aws::Credentials.new(
195
- assumed_role.credentials.access_key_id,
196
- assumed_role.credentials.secret_access_key,
197
- assumed_role.credentials.session_token
198
- )
199
- end
178
+ error(:missing_template)
179
+ end
200
180
 
201
- def now
202
- Time.now.strftime('%Y%m%d%H%M%S')
203
- end
181
+ def client
182
+ @client ||= Aws::CloudFormation::Client.new(client_options)
183
+ end
204
184
 
205
- def url?(str)
206
- str =~ %r(^https?://)
207
- end
185
+ def client_options
186
+ params = { region:, credentials: }
187
+ params = params.merge(credentials: assume_role(params)) if sts_assume_role?
188
+ params
189
+ end
208
190
 
209
- class EventStream < Struct.new(:client, :stack_name, :handler)
210
- attr_reader :thread
191
+ def credentials
192
+ Aws::Credentials.new(access_key_id, secret_access_key)
193
+ end
211
194
 
212
- def initialize(*)
213
- super
214
- @event = describe_stack_events.stack_events.first
215
- @thread = Thread.new(&method(:process))
216
- end
195
+ def assume_role(params)
196
+ assumed_role = Aws::STS::Client.new(params).assume_role(
197
+ role_arn: sts_assume_role,
198
+ role_session_name: "travis-build-#{build_number}"
199
+ )
200
+ Aws::Credentials.new(
201
+ assumed_role.credentials.access_key_id,
202
+ assumed_role.credentials.secret_access_key,
203
+ assumed_role.credentials.session_token
204
+ )
205
+ end
217
206
 
218
- def stop
219
- mutex.synchronize { @stop = true }
220
- thread.join
221
- end
207
+ def now
208
+ Time.now.strftime('%Y%m%d%H%M%S')
209
+ end
222
210
 
223
- private
211
+ def url?(str)
212
+ str =~ %r{^https?://}
213
+ end
224
214
 
225
- def process
226
- until mutex.synchronize { @stop }
227
- @event, events = events_since(@event)
228
- events.each { |e| handler.call(format_event(e)) }
229
- sleep 5 unless ENV['ENV'] == 'test'
230
- end
231
- end
215
+ class EventStream < Struct.new(:client, :stack_name, :handler)
216
+ attr_reader :thread
232
217
 
233
- # source: https://github.com/rvedotrc/cfn-events/blob/master/lib/cfn-events/runner.rb
234
- def events_since(event)
235
- described_stack = describe_stack_events
236
- stack_events = described_stack.stack_events
237
- return [event, []] if stack_events.first.event_id == event.event_id
218
+ def initialize(*)
219
+ super
220
+ @event = describe_stack_events.stack_events.first
221
+ @thread = Thread.new(&method(:process))
222
+ end
238
223
 
239
- events = []
240
- described_stack.each_page do |page|
224
+ def stop
225
+ mutex.synchronize { @stop = true }
226
+ thread.join
227
+ end
241
228
 
229
+ private
242
230
 
243
- if (oldest_new = page.stack_events.index { |e| e.event_id == event.event_id })
244
- events.concat(page.stack_events[0..oldest_new - 1])
245
- return [events.first, events.reverse]
246
- end
247
- events.concat(page.stack_events)
248
- end
231
+ def process
232
+ until mutex.synchronize { @stop }
233
+ @event, events = events_since(@event)
234
+ events.each { |e| handler.call(format_event(e)) }
235
+ sleep 5 unless ENV['ENV'] == 'test'
236
+ end
237
+ end
249
238
 
250
- warn %(Last-seen stack event is no longer returned by AWS. Please raise this as a provider's bug.)
251
- [events.first, events.reverse]
239
+ # source: https://github.com/rvedotrc/cfn-events/blob/master/lib/cfn-events/runner.rb
240
+ def events_since(event)
241
+ described_stack = describe_stack_events
242
+ stack_events = described_stack.stack_events
243
+ return [event, []] if stack_events.first.event_id == event.event_id
244
+
245
+ events = []
246
+ described_stack.each_page do |page|
247
+ if (oldest_new = page.stack_events.index { |e| e.event_id == event.event_id })
248
+ events.concat(page.stack_events[0..oldest_new - 1])
249
+ return [events.first, events.reverse]
252
250
  end
251
+ events.concat(page.stack_events)
252
+ end
253
253
 
254
- def describe_stack_events
255
- client.describe_stack_events(stack_name: stack_name)
256
- end
254
+ warn %(Last-seen stack event is no longer returned by AWS. Please raise this as a provider's bug.)
255
+ [events.first, events.reverse]
256
+ end
257
257
 
258
- def mutex
259
- @mutex ||= Mutex.new
260
- end
258
+ def describe_stack_events
259
+ client.describe_stack_events(stack_name:)
260
+ end
261
261
 
262
- EVENT_KEYS = %i(timestamp resource_type resource_status logical_resource_id
263
- physical_resource_id resource_status_reason)
262
+ def mutex
263
+ @mutex ||= Mutex.new
264
+ end
264
265
 
265
- def format_event(event)
266
- parts = EVENT_KEYS.map { |key| event.send(key) }
267
- parts[0] = format_timestamp(parts[0])
268
- parts.join(' ')
269
- end
266
+ EVENT_KEYS = %i[timestamp resource_type resource_status logical_resource_id
267
+ physical_resource_id resource_status_reason].freeze
270
268
 
271
- def format_timestamp(timestamp)
272
- timestamp.utc.strftime('%Y-%m-%dT%H:%M:%SZ')
273
- end
269
+ def format_event(event)
270
+ parts = EVENT_KEYS.map { |key| event.send(key) }
271
+ parts[0] = format_timestamp(parts[0])
272
+ parts.join(' ')
273
+ end
274
+
275
+ def format_timestamp(timestamp)
276
+ timestamp.utc.strftime('%Y-%m-%dT%H:%M:%SZ')
274
277
  end
278
+ end
275
279
  end
276
280
  end
277
281
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Dpl
2
4
  module Providers
3
5
  class Cloudfoundry < Provider
@@ -7,9 +9,9 @@ module Dpl
7
9
 
8
10
  full_name 'Cloud Foundry'
9
11
 
10
- description sq(<<-str)
12
+ description sq(<<-STR)
11
13
  tbd
12
- str
14
+ STR
13
15
 
14
16
  env :cloudfoundry
15
17
 
@@ -23,20 +25,20 @@ module Dpl
23
25
  opt '--manifest FILE', 'Path to the manifest'
24
26
  opt '--skip_ssl_validation', 'Skip SSL validation'
25
27
  opt '--deployment_strategy STRATEGY', 'Deployment strategy, either rolling or null'
26
- opt '--v3', 'Use the v3 API version to push the application'
28
+ opt '--v3', 'Use the v3 API version to push the application'
27
29
  opt '--logout', default: true, internal: true
28
30
 
29
31
  cmds install: 'test $(uname) = "Linux" && rel="linux64-binary" || rel="macosx64"; wget "https://cli.run.pivotal.io/stable?release=${rel}&version=v7&source=github" -qO cf.tgz && tar -zxvf cf.tgz && rm cf.tgz',
30
- api: './cf api %{api} %{skip_ssl_validation_opt}',
31
- login: './cf login -u %{username} -p %{password} -o %{organization} -s %{space}',
32
- push: './cf %{push_cmd} %{push_args}',
33
- logout: './cf logout'
32
+ api: './cf api %{api} %{skip_ssl_validation_opt}',
33
+ login: './cf login -u %{username} -p %{password} -o %{organization} -s %{space}',
34
+ push: './cf %{push_cmd} %{push_args}',
35
+ logout: './cf logout'
34
36
 
35
37
  errs install: 'Failed to install CLI tools',
36
- api: 'Failed to set api %{api}',
37
- login: 'Failed to login',
38
- push: 'Failed to push app',
39
- logout: 'Failed to logout'
38
+ api: 'Failed to set api %{api}',
39
+ login: 'Failed to login',
40
+ push: 'Failed to push app',
41
+ logout: 'Failed to logout'
40
42
 
41
43
  msgs manifest_missing: 'Application must have a manifest.yml for unattended deployment'
42
44
 
@@ -63,25 +65,25 @@ module Dpl
63
65
 
64
66
  private
65
67
 
66
- def push_cmd
67
- v3? ? 'v3-push' : 'push'
68
- end
69
-
70
- def push_args
71
- args = []
72
- args << quote(app_name) if app_name?
73
- args << "-f #{manifest}" if manifest?
74
- args << "--strategy #{deployment_strategy}" if deployment_strategy?
75
- args.join(' ')
76
- end
77
-
78
- def skip_ssl_validation_opt
79
- '--skip-ssl-validation' if skip_ssl_validation?
80
- end
81
-
82
- def manifest_missing?
83
- !File.exists?(manifest)
84
- end
68
+ def push_cmd
69
+ v3? ? 'v3-push' : 'push'
70
+ end
71
+
72
+ def push_args
73
+ args = []
74
+ args << quote(app_name) if app_name?
75
+ args << "-f #{manifest}" if manifest?
76
+ args << "--strategy #{deployment_strategy}" if deployment_strategy?
77
+ args.join(' ')
78
+ end
79
+
80
+ def skip_ssl_validation_opt
81
+ '--skip-ssl-validation' if skip_ssl_validation?
82
+ end
83
+
84
+ def manifest_missing?
85
+ !File.exist?(manifest)
86
+ end
85
87
  end
86
88
  end
87
89
  end