dpl 2.0.3.beta.4 → 2.0.3.beta.5
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 +4 -4
- data/Gemfile +15 -3
- data/Gemfile.lock +444 -211
- data/Rakefile +36 -34
- data/bin/dpl +3 -1
- data/dpl.gemspec +25 -0
- data/lib/dpl/cli.rb +19 -14
- data/lib/dpl/ctx/bash.rb +18 -12
- data/lib/dpl/ctx/test.rb +21 -15
- data/lib/dpl/ctx.rb +2 -0
- data/lib/dpl/helper/assets.rb +4 -2
- data/lib/dpl/helper/cmd.rb +20 -18
- data/lib/dpl/helper/config_file.rb +5 -3
- data/lib/dpl/helper/cookbook_site_streaming_uploader.rb +249 -0
- data/lib/dpl/helper/env.rb +26 -22
- data/lib/dpl/helper/github.rb +2 -0
- data/lib/dpl/helper/interpolate.rb +8 -4
- data/lib/dpl/helper/memoize.rb +4 -1
- data/lib/dpl/helper/squiggle.rb +3 -1
- data/lib/dpl/helper/transliterate.rb +3 -1
- data/lib/dpl/helper/wrap.rb +3 -1
- data/lib/dpl/helper/zip.rb +3 -1
- data/lib/dpl/provider/dsl.rb +18 -4
- data/lib/dpl/provider/examples.rb +6 -2
- data/lib/dpl/provider/status.rb +26 -24
- data/lib/dpl/providers/anynines.rb +22 -20
- data/lib/dpl/providers/azure_web_apps.rb +21 -19
- data/lib/dpl/providers/bintray.rb +44 -37
- data/lib/dpl/providers/bluemixcloudfoundry.rb +38 -36
- data/lib/dpl/providers/boxfuse.rb +12 -10
- data/lib/dpl/providers/cargo.rb +7 -5
- data/lib/dpl/providers/chef_supermarket.rb +82 -80
- data/lib/dpl/providers/cloud66.rb +17 -15
- data/lib/dpl/providers/cloudfiles.rb +8 -6
- data/lib/dpl/providers/cloudformation.rb +191 -187
- data/lib/dpl/providers/cloudfoundry.rb +32 -30
- data/lib/dpl/providers/codedeploy.rb +35 -33
- data/lib/dpl/providers/convox.rb +32 -25
- data/lib/dpl/providers/datica.rb +30 -28
- data/lib/dpl/providers/ecr.rb +66 -64
- data/lib/dpl/providers/elasticbeanstalk.rb +14 -12
- data/lib/dpl/providers/engineyard.rb +60 -58
- data/lib/dpl/providers/firebase.rb +6 -4
- data/lib/dpl/providers/flynn.rb +8 -6
- data/lib/dpl/providers/gae.rb +28 -25
- data/lib/dpl/providers/gcs.rb +59 -57
- data/lib/dpl/providers/git_push.rb +199 -195
- data/lib/dpl/providers/gleis.rb +19 -17
- data/lib/dpl/providers/hackage.rb +15 -13
- data/lib/dpl/providers/hephy.rb +18 -16
- data/lib/dpl/providers/heroku/api.rb +72 -70
- data/lib/dpl/providers/heroku/git.rb +15 -13
- data/lib/dpl/providers/heroku.rb +40 -38
- data/lib/dpl/providers/lambda.rb +134 -134
- data/lib/dpl/providers/launchpad.rb +45 -43
- data/lib/dpl/providers/netlify.rb +7 -5
- data/lib/dpl/providers/npm.rb +61 -58
- data/lib/dpl/providers/nuget.rb +8 -6
- data/lib/dpl/providers/openshift.rb +8 -6
- data/lib/dpl/providers/opsworks.rb +23 -21
- data/lib/dpl/providers/pages/api.rb +14 -14
- data/lib/dpl/providers/pages/git.rb +53 -47
- data/lib/dpl/providers/pages.rb +3 -1
- data/lib/dpl/providers/puppetforge.rb +6 -4
- data/lib/dpl/providers/pypi.rb +55 -54
- data/lib/dpl/providers/releases.rb +30 -23
- data/lib/dpl/providers/rubygems.rb +35 -31
- data/lib/dpl/providers/s3.rb +148 -142
- data/lib/dpl/providers/scalingo.rb +18 -16
- data/lib/dpl/providers/script.rb +4 -2
- data/lib/dpl/providers/snap.rb +12 -9
- data/lib/dpl/providers/surge.rb +7 -5
- data/lib/dpl/providers/testfairy.rb +47 -43
- data/lib/dpl/providers/transifex.rb +20 -18
- data/lib/dpl/providers.rb +3 -1
- data/lib/dpl/string_ext.rb +3 -1
- data/lib/dpl/support/aws_sdk_patch.rb +4 -1
- data/lib/dpl/support/gems.rb +7 -3
- data/lib/dpl/support/gstore_patch.rb +3 -1
- data/lib/dpl/support/version.rb +13 -12
- data/lib/dpl/version.rb +3 -1
- data/lib/dpl.rb +2 -0
- data/status.json +237 -0
- metadata +32 -15
- /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 ChefSupermarket < Provider
|
|
@@ -8,17 +10,17 @@ module Dpl
|
|
|
8
10
|
|
|
9
11
|
full_name 'Chef Supermarket'
|
|
10
12
|
|
|
11
|
-
description sq(<<-
|
|
13
|
+
description sq(<<-STR)
|
|
12
14
|
tbd
|
|
13
|
-
|
|
15
|
+
STR
|
|
14
16
|
|
|
15
|
-
gem 'chef', '~>
|
|
17
|
+
gem 'chef', '~> 18', require: %w[
|
|
16
18
|
chef/cookbook/cookbook_version_loader
|
|
17
|
-
chef/cookbook_site_streaming_uploader
|
|
18
19
|
chef/cookbook_uploader
|
|
19
|
-
|
|
20
|
+
]
|
|
21
|
+
|
|
20
22
|
gem 'json'
|
|
21
|
-
gem 'mime-types', '~> 3.
|
|
23
|
+
gem 'mime-types', '~> 3.4.1'
|
|
22
24
|
gem 'net-telnet', '~> 0.1.0' if ruby_pre?('2.3')
|
|
23
25
|
gem 'rack'
|
|
24
26
|
|
|
@@ -30,12 +32,12 @@ module Dpl
|
|
|
30
32
|
opt '--client_key KEY', 'Client API key file name', default: 'client.pem'
|
|
31
33
|
opt '--dir DIR', 'Directory containing the cookbook', default: '.'
|
|
32
34
|
|
|
33
|
-
URL =
|
|
35
|
+
URL = 'https://supermarket.chef.io/api/v1/cookbooks'
|
|
34
36
|
|
|
35
|
-
msgs validate:
|
|
36
|
-
upload:
|
|
37
|
-
missing_file:
|
|
38
|
-
unknown_error:
|
|
37
|
+
msgs validate: 'Validating cookbook',
|
|
38
|
+
upload: 'Uploading cookbook %{name} to %{url}',
|
|
39
|
+
missing_file: 'Missing file: %s',
|
|
40
|
+
unknown_error: 'Unknown error while sharing cookbook: %s',
|
|
39
41
|
version_exists: 'The same version of this cookbook already exists on the Opscode Cookbook Site.'
|
|
40
42
|
|
|
41
43
|
def setup
|
|
@@ -56,75 +58,75 @@ module Dpl
|
|
|
56
58
|
|
|
57
59
|
private
|
|
58
60
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
61
|
+
def upload
|
|
62
|
+
res = Chef::Knife::Core::CookbookSiteStreamingUploader.post(URL, user_id, client_key, params)
|
|
63
|
+
handle_error(res.body) if res.code.to_i != 201
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def params
|
|
67
|
+
{ cookbook: json(category: category), tarball: tarball}
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def tarball
|
|
71
|
+
shell "tar -czf /tmp/#{name}.tgz -C #{build_dir} ."
|
|
72
|
+
shell "tar -tvf /tmp/#{name}.tgz"
|
|
73
|
+
open "/tmp/#{name}.tgz"
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def name
|
|
77
|
+
@name ||= name_from_json || name_from_rb || error(:missing_file, 'metadata.json or metadata.rb')
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def name_from_json
|
|
81
|
+
JSON.parse(read('metadata.json'))['name'] if file?('metadata.json')
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def name_from_rb
|
|
85
|
+
Chef::Cookbook::Metadata.new.from_file('metadata.rb') if file?('metadata.rb')
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def cookbook
|
|
89
|
+
@cookbook ||= loader.cookbook_version
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def loader
|
|
93
|
+
Chef::Cookbook::CookbookVersionLoader.new('.').tap(&:load!)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def uploader
|
|
97
|
+
Chef::CookbookUploader.new(cookbook)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def build_dir
|
|
101
|
+
@build_dir ||= Chef::Knife::Core::CookbookSiteStreamingUploader.create_build_dir(cookbook)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def validate_file(path)
|
|
105
|
+
error :missing_file, path unless file?(path)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def url
|
|
109
|
+
URL
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def handle_error(res)
|
|
113
|
+
res = JSON.parse(res)
|
|
114
|
+
unknown_error(res) unless res['error_messages']
|
|
115
|
+
version_exists if res['error_messages'][0].include?('Version already exists')
|
|
116
|
+
error (res['error_messages'][0]).to_s
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def unknown_error(msg)
|
|
120
|
+
error :unknown_error, msg
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def version_exists
|
|
124
|
+
error :version_exists
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def json(obj)
|
|
128
|
+
JSON.dump(obj)
|
|
129
|
+
end
|
|
128
130
|
end
|
|
129
131
|
end
|
|
130
132
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Dpl
|
|
2
4
|
module Providers
|
|
3
5
|
class Cloud66 < Provider
|
|
@@ -5,9 +7,9 @@ module Dpl
|
|
|
5
7
|
|
|
6
8
|
status :alpha
|
|
7
9
|
|
|
8
|
-
description sq(<<-
|
|
10
|
+
description sq(<<-STR)
|
|
9
11
|
tbd
|
|
10
|
-
|
|
12
|
+
STR
|
|
11
13
|
|
|
12
14
|
env :cloud66
|
|
13
15
|
|
|
@@ -22,23 +24,23 @@ module Dpl
|
|
|
22
24
|
|
|
23
25
|
private
|
|
24
26
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
end
|
|
27
|
+
def client
|
|
28
|
+
Net::HTTP.new(uri.host, uri.port).tap do |client|
|
|
29
|
+
client.use_ssl = use_ssl?
|
|
29
30
|
end
|
|
31
|
+
end
|
|
30
32
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
def request
|
|
34
|
+
Net::HTTP::Post.new(uri.path)
|
|
35
|
+
end
|
|
34
36
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
37
|
+
def uri
|
|
38
|
+
@uri ||= URI.parse(redeployment_hook)
|
|
39
|
+
end
|
|
38
40
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
def use_ssl?
|
|
42
|
+
uri.scheme.downcase == 'https'
|
|
43
|
+
end
|
|
42
44
|
end
|
|
43
45
|
end
|
|
44
46
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Dpl
|
|
2
4
|
module Providers
|
|
3
5
|
class Cloudfiles < Provider
|
|
@@ -7,19 +9,19 @@ module Dpl
|
|
|
7
9
|
|
|
8
10
|
full_name 'Cloud Files'
|
|
9
11
|
|
|
10
|
-
description sq(<<-
|
|
12
|
+
description sq(<<-STR)
|
|
11
13
|
tbd
|
|
12
|
-
|
|
14
|
+
STR
|
|
13
15
|
|
|
14
|
-
gem 'nokogiri', '
|
|
15
|
-
gem 'fog-core', '
|
|
16
|
-
gem 'fog-rackspace', '~> 0.1.6', require: 'fog/rackspace'
|
|
16
|
+
gem 'nokogiri', '~> 1.15'
|
|
17
|
+
gem 'fog-core', '~> 2.3', require: 'fog/core'
|
|
18
|
+
gem 'fog-rackspace', '~> 0.1.6', git: 'https://github.com/travis-oss/fog-rackspace', require: 'fog/rackspace'
|
|
17
19
|
|
|
18
20
|
env :cloudfiles
|
|
19
21
|
|
|
20
22
|
opt '--username USER', 'Rackspace username', required: true
|
|
21
23
|
opt '--api_key KEY', 'Rackspace API key', required: true, secret: true
|
|
22
|
-
opt '--region REGION', 'Cloudfiles region', required: true, enum: %w
|
|
24
|
+
opt '--region REGION', 'Cloudfiles region', required: true, enum: %w[ord dfw syd iad hkg]
|
|
23
25
|
opt '--container NAME', 'Name of the container that files will be uploaded to', required: true
|
|
24
26
|
opt '--glob GLOB', 'Paths to upload', default: '**/*'
|
|
25
27
|
opt '--dot_match', 'Upload hidden files starting a dot'
|