def run
if File.readable? AWS_CONFIG
content = File.read(AWS_CONFIG)
access_key = content[/aws_access_key_id = (\S+)\n/, 1]
secret_access_key = content[/aws_secret_access_key = (\S+)\n/, 1]
end
deploy 'codedeploy' do |config|
config['access_key_id'] = ask("Access key ID: ") { |q| q.default = access_key if access_key }.to_s
secret_access_key = nil unless access_key == config['access_key_id']
config['secret_access_key'] = secret_access_key || ask("Secret access key: ") { |q| q.echo = "*" }.to_s
config['bucket'] = ask("S3 Bucket: ").to_s
config['key'] = ask("S3 Key: ").to_s
config['bundle_type'] = ask("Bundle Type: ") { |q| q.default = config['key'][/\.(zip|tar|tgz)$/, 1] }.to_s
config['application'] = ask("Application Name: ") { |q| q.default = repository.name }.to_s
config['deployment_group'] = ask("Deployment Group Name: ").to_s
encrypt(config, 'secret_access_key') if agree("Encrypt secret access key? ") { |q| q.default = 'yes' }
end
if agree("Also push bundle to S3? ")
cd = travis_config['deploy']
s3 = {
'provider' => 's3',
'access_key_id' => cd['access_key_id'],
'secret_access_key' => cd['secret_access_key'],
'local_dir' => 'dpl_cd_upload',
'skip_cleanup' => true,
'on' => cd['on'],
'bucket' => cd['bucket']
}
s3['upload_dir'] = File.dirname(cd['key']) if cd['key'].include? '/'
travis_config['deploy'] = [ s3, cd ]
upload_file_name = File.basename(cd['key'])
source_file = ask("Source File: ") { |q| q.default = upload_file_name }
travis_config['before_deploy'] = [
"mkdir -p dpl_cd_upload",
"mv #{Shellwords.escape(source_file)} dpl_cd_upload/#{Shellwords.escape(upload_file_name)}"
]
end
end