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.
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 Anynines < Provider
@@ -5,9 +7,9 @@ module Dpl
5
7
 
6
8
  status :alpha
7
9
 
8
- description sq(<<-str)
10
+ description sq(<<-STR)
9
11
  tbd
10
- str
12
+ STR
11
13
 
12
14
  env :anynines
13
15
 
@@ -23,17 +25,17 @@ module Dpl
23
25
  API = 'https://api.de.a9s.eu'
24
26
 
25
27
  cmds install: 'test $(uname) = "Linux" && rel="linux64-binary" || rel="macosx64"; wget "https://cli.run.pivotal.io/stable?release=${rel}&source=github" -qO cf.tgz && tar -zxvf cf.tgz && rm cf.tgz',
26
- api: './cf api %{url}',
27
- login: './cf login -u %{username} -p %{password} -o %{organization} -s %{space}',
28
- push: './cf push %{args}',
29
- logout: './cf logout'
28
+ api: './cf api %{url}',
29
+ login: './cf login -u %{username} -p %{password} -o %{organization} -s %{space}',
30
+ push: './cf push %{args}',
31
+ logout: './cf logout'
30
32
 
31
33
  errs install: 'Failed to install CLI tools',
32
- api: 'Failed to set api',
33
- login: 'Failed to login',
34
- target: 'Failed to target organization %{organization}, space %{space}',
35
- push: 'Failed to push app',
36
- logout: 'Failed to logout'
34
+ api: 'Failed to set api',
35
+ login: 'Failed to login',
36
+ target: 'Failed to target organization %{organization}, space %{space}',
37
+ push: 'Failed to push app',
38
+ logout: 'Failed to logout'
37
39
 
38
40
  def install
39
41
  shell :install
@@ -54,16 +56,16 @@ module Dpl
54
56
 
55
57
  private
56
58
 
57
- def url
58
- API
59
- end
59
+ def url
60
+ API
61
+ end
60
62
 
61
- def args
62
- args = []
63
- args << quote(app_name) if app_name?
64
- args << "-f #{manifest}" if manifest?
65
- args.join(' ')
66
- end
63
+ def args
64
+ args = []
65
+ args << quote(app_name) if app_name?
66
+ args << "-f #{manifest}" if manifest?
67
+ args.join(' ')
68
+ end
67
69
  end
68
70
  end
69
71
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Dpl
2
4
  module Providers
3
5
  class AzureWebApps < Provider
@@ -7,9 +9,9 @@ module Dpl
7
9
 
8
10
  full_name 'Azure Web Apps'
9
11
 
10
- description sq(<<-str)
12
+ description sq(<<-STR)
11
13
  tbd
12
- str
14
+ STR
13
15
 
14
16
  env :AZURE_WA
15
17
 
@@ -22,14 +24,14 @@ module Dpl
22
24
  needs :git
23
25
 
24
26
  cmds checkout: 'git checkout HEAD',
25
- add: 'git add . --all --force',
26
- commit: 'git commit -m "Cleanup commit"',
27
- deploy: 'git push --force --quiet %{url} HEAD:refs/heads/master'
27
+ add: 'git add . --all --force',
28
+ commit: 'git commit -m "Cleanup commit"',
29
+ deploy: 'git push --force --quiet %{url} HEAD:refs/heads/master'
28
30
 
29
- msgs commit: 'Committing changes to git',
30
- deploy: 'Deploying to Azure Web App: %{site}'
31
+ msgs commit: 'Committing changes to git',
32
+ deploy: 'Deploying to Azure Web App: %{site}'
31
33
 
32
- errs push: 'Failed pushing to Azure Web Apps'
34
+ errs push: 'Failed pushing to Azure Web Apps'
33
35
 
34
36
  URL = 'https://%s:%s@%s.scm.azurewebsites.net:443/%s.git'
35
37
 
@@ -43,19 +45,19 @@ module Dpl
43
45
 
44
46
  private
45
47
 
46
- def url
47
- URL % [username, password, target, site]
48
- end
48
+ def url
49
+ format(URL, username, password, target, site)
50
+ end
49
51
 
50
- def target
51
- slot || site
52
- end
52
+ def target
53
+ slot || site
54
+ end
53
55
 
54
- def commit
55
- shell :checkout
56
- shell :add
57
- shell :commit
58
- end
56
+ def commit
57
+ shell :checkout
58
+ shell :add
59
+ shell :commit
60
+ end
59
61
  end
60
62
  end
61
63
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'net/http'
2
4
  require 'uri'
3
5
  require 'find'
@@ -9,9 +11,9 @@ module Dpl
9
11
 
10
12
  status :stable
11
13
 
12
- description sq(<<-str)
14
+ description sq(<<-STR)
13
15
  tbd
14
- str
16
+ STR
15
17
 
16
18
  gem 'json'
17
19
 
@@ -23,42 +25,42 @@ module Dpl
23
25
  opt '--passphrase PHRASE', 'Passphrase as configured on Bintray (if GPG signing is used)'
24
26
  opt '--url URL', default: 'https://api.bintray.com', internal: true
25
27
 
26
- msgs missing_file: 'Missing descriptor file: %{file}',
27
- invalid_file: 'Failed to parse descriptor file %{file}',
28
- create_package: 'Creating package %{package_name}',
29
- package_attrs: 'Adding attributes for package %{package_name}',
30
- create_version: 'Creating version %{version_name}',
31
- version_attrs: 'Adding attributes for version %{version_name}',
32
- upload_file: 'Uploading file %{source} to %{target}',
33
- sign_version: 'Signing version %s passphrase',
28
+ msgs missing_file: 'Missing descriptor file: %{file}',
29
+ invalid_file: 'Failed to parse descriptor file %{file}',
30
+ create_package: 'Creating package %{package_name}',
31
+ package_attrs: 'Adding attributes for package %{package_name}',
32
+ create_version: 'Creating version %{version_name}',
33
+ version_attrs: 'Adding attributes for version %{version_name}',
34
+ upload_file: 'Uploading file %{source} to %{target}',
35
+ sign_version: 'Signing version %s passphrase',
34
36
  publish_version: 'Publishing version %{version_name} of package %{package_name}',
35
- missing_path: 'Path: %{path} does not exist.',
36
- list_download: 'Listing %{path} in downloads',
37
- retrying: '%{code} response from Bintray. It may take some time for a version to be published, retrying in %{pause} sec ... (%{count}/%{max})',
38
- giveup_retries: 'Too many retries failed, giving up, something went wrong.',
39
- unexpected_code: 'Unexpected HTTP response code %s while checking if the %s exists' ,
40
- request_failed: '%s %s returned unexpected HTTP response code %s',
37
+ missing_path: 'Path: %{path} does not exist.',
38
+ list_download: 'Listing %{path} in downloads',
39
+ retrying: '%{code} response from Bintray. It may take some time for a version to be published, retrying in %{pause} sec ... (%{count}/%{max})',
40
+ giveup_retries: 'Too many retries failed, giving up, something went wrong.',
41
+ unexpected_code: 'Unexpected HTTP response code %s while checking if the %s exists',
42
+ request_failed: '%s %s returned unexpected HTTP response code %s',
41
43
  request_success: 'Bintray response: %s %s. %s'
42
44
 
43
45
  PATHS = {
44
- packages: '/packages/%{subject}/%{repo}',
45
- package: '/packages/%{subject}/%{repo}/%{package_name}',
46
- package_attrs: '/packages/%{subject}/%{repo}/%{package_name}/attributes',
47
- versions: '/packages/%{subject}/%{repo}/%{package_name}/versions',
48
- version: '/packages/%{subject}/%{repo}/%{package_name}/versions/%{version_name}',
49
- version_attrs: '/packages/%{subject}/%{repo}/%{package_name}/versions/%{version_name}/attributes',
50
- version_sign: '/gpg/%{subject}/%{repo}/%{package_name}/versions/%{version_name}',
46
+ packages: '/packages/%{subject}/%{repo}',
47
+ package: '/packages/%{subject}/%{repo}/%{package_name}',
48
+ package_attrs: '/packages/%{subject}/%{repo}/%{package_name}/attributes',
49
+ versions: '/packages/%{subject}/%{repo}/%{package_name}/versions',
50
+ version: '/packages/%{subject}/%{repo}/%{package_name}/versions/%{version_name}',
51
+ version_attrs: '/packages/%{subject}/%{repo}/%{package_name}/versions/%{version_name}/attributes',
52
+ version_sign: '/gpg/%{subject}/%{repo}/%{package_name}/versions/%{version_name}',
51
53
  version_publish: '/content/%{subject}/%{repo}/%{package_name}/%{version_name}/publish',
52
- version_file: '/content/%{subject}/%{repo}/%{package_name}/%{version_name}/%{target}',
53
- file_metadata: '/file_metadata/%{subject}/%{repo}/%{target}'
54
- }
54
+ version_file: '/content/%{subject}/%{repo}/%{package_name}/%{version_name}/%{target}',
55
+ file_metadata: '/file_metadata/%{subject}/%{repo}/%{target}'
56
+ }.freeze
55
57
 
56
58
  MAP = {
57
- package: %i(name desc licenses labels vcs_url website_url
58
- issue_tracker_url public_download_numbers public_stats),
59
- version: %i(name desc released vcs_tag github_release_notes_file
60
- github_use_tag_release_notes attributes)
61
- }
59
+ package: %i[name desc licenses labels vcs_url website_url
60
+ issue_tracker_url public_download_numbers public_stats],
61
+ version: %i[name desc released vcs_tag github_release_notes_file
62
+ github_use_tag_release_notes attributes]
63
+ }.freeze
62
64
 
63
65
  def install
64
66
  require 'json'
@@ -85,6 +87,7 @@ module Dpl
85
87
  info :create_package
86
88
  post(path(:packages), compact(only(package, *MAP[:package])))
87
89
  return unless package_attrs
90
+
88
91
  info :package_attrs
89
92
  post(path(:package_attrs), package_attrs)
90
93
  end
@@ -97,6 +100,7 @@ module Dpl
97
100
  info :create_version
98
101
  post(path(:versions), compact(only(version, *MAP[:version])))
99
102
  return unless version_attrs
103
+
100
104
  info :version_attrs
101
105
  post(path(:version_attrs), version_attrs)
102
106
  end
@@ -134,10 +138,11 @@ module Dpl
134
138
  end
135
139
  end
136
140
 
137
- def retrying(opts, &block)
141
+ def retrying(opts)
138
142
  1.upto(opts[:max]) do |count|
139
143
  code = yield
140
144
  return if code < 400
145
+
141
146
  info :retrying, opts.merge(count: count, code: code)
142
147
  sleep opts[:pause]
143
148
  end
@@ -147,7 +152,8 @@ module Dpl
147
152
  def files
148
153
  return {} unless files = descriptor[:files]
149
154
  return @files if @files
150
- keys = %i(path includePattern excludePattern uploadPattern matrixParams listInDownloads)
155
+
156
+ keys = %i[path includePattern excludePattern uploadPattern matrixParams listInDownloads]
151
157
  files = files.map { |file| file if file[:path] = path_for(file[:includePattern]) }
152
158
  @files = files.compact.map { |file| find(*file.values_at(*keys)) }.flatten
153
159
  end
@@ -172,9 +178,10 @@ module Dpl
172
178
 
173
179
  def path_for(str)
174
180
  ix = str.index('(')
175
- path = ix.to_i == 0 ? str : str[0, ix]
181
+ path = ix.to_i.zero? ? str : str[0, ix]
176
182
  return path if File.exist?(path)
177
- warn :missing_path, path: path
183
+
184
+ warn(:missing_path, path: path)
178
185
  nil
179
186
  end
180
187
 
@@ -236,7 +243,7 @@ module Dpl
236
243
 
237
244
  def descriptor
238
245
  @descriptor ||= symbolize(JSON.parse(File.read(file)))
239
- rescue => e
246
+ rescue StandardError
240
247
  error :invalid_file
241
248
  end
242
249
 
@@ -291,7 +298,7 @@ module Dpl
291
298
  def parse(json)
292
299
  hash = JSON.parse(json)
293
300
  hash.is_a?(Hash) ? hash : {}
294
- rescue
301
+ rescue StandardError
295
302
  {}
296
303
  end
297
304
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Dpl
2
4
  module Providers
3
5
  class Bluemixcloudfoundry < Provider
@@ -7,9 +9,9 @@ module Dpl
7
9
 
8
10
  full_name 'Bluemix 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
 
@@ -17,7 +19,7 @@ module Dpl
17
19
  opt '--password PASS', 'Bluemix password', required: true, secret: true
18
20
  opt '--organization ORG', 'Bluemix organization', required: true
19
21
  opt '--space SPACE', 'Bluemix space', required: true
20
- opt '--region REGION', 'Bluemix region', default: 'ng', enum: %w(ng eu-gb eu-de au-syd)
22
+ opt '--region REGION', 'Bluemix region', default: 'ng', enum: %w[ng eu-gb eu-de au-syd]
21
23
  opt '--api URL', 'Bluemix api URL'
22
24
  opt '--app_name APP', 'Application name'
23
25
  opt '--buildpack PACK', 'Buildpack name or Git URL'
@@ -26,25 +28,25 @@ module Dpl
26
28
  opt '--logout', default: true, internal: true
27
29
 
28
30
  API = {
29
- 'ng': 'api.ng.bluemix.net',
30
- 'eu-gb': 'api.eu-gb.bluemix.net',
31
- 'eu-de': 'api.eu-de.bluemix.net',
31
+ 'ng': 'api.ng.bluemix.net',
32
+ 'eu-gb': 'api.eu-gb.bluemix.net',
33
+ 'eu-de': 'api.eu-de.bluemix.net',
32
34
  'au-syd': 'api.au-syd.bluemix.net'
33
- }
35
+ }.freeze
34
36
 
35
37
  cmds install: 'test $(uname) = "Linux" && rel="linux64-binary" || rel="macosx64"; wget "https://cli.run.pivotal.io/stable?release=${rel}&source=github" -qO cf.tgz && tar -zxvf cf.tgz && rm cf.tgz',
36
- api: './cf api %{api} %{skip_ssl_validation_opt}',
37
- login: './cf login -u %{username} -p %{password}',
38
- target: './cf target -o %{organization} -s %{space}',
39
- push: './cf push %{push_args}',
40
- logout: './cf logout'
38
+ api: './cf api %{api} %{skip_ssl_validation_opt}',
39
+ login: './cf login -u %{username} -p %{password}',
40
+ target: './cf target -o %{organization} -s %{space}',
41
+ push: './cf push %{push_args}',
42
+ logout: './cf logout'
41
43
 
42
44
  errs install: 'Failed to install CLI tools',
43
- api: 'Failed to set api %{api}',
44
- login: 'Failed to login',
45
- target: 'Failed to target organization %{organization}, space %{space}',
46
- push: 'Failed to push app',
47
- logout: 'Failed to logout'
45
+ api: 'Failed to set api %{api}',
46
+ login: 'Failed to login',
47
+ target: 'Failed to target organization %{organization}, space %{space}',
48
+ push: 'Failed to push app',
49
+ logout: 'Failed to logout'
48
50
 
49
51
  msgs manifest_missing: 'Application must have a manifest.yml for unattended deployment'
50
52
 
@@ -72,25 +74,25 @@ module Dpl
72
74
 
73
75
  private
74
76
 
75
- def push_args
76
- args = []
77
- args << quote(app_name) if app_name?
78
- args << "-f #{manifest}" if manifest?
79
- args << "-b #{buildpack}" if buildpack?
80
- args.join(' ')
81
- end
82
-
83
- def skip_ssl_validation_opt
84
- '--skip-ssl-validation' if skip_ssl_validation?
85
- end
86
-
87
- def manifest_missing?
88
- !File.exists?(manifest)
89
- end
90
-
91
- def api
92
- super || API[region.to_sym]
93
- end
77
+ def push_args
78
+ args = []
79
+ args << quote(app_name) if app_name?
80
+ args << "-f #{manifest}" if manifest?
81
+ args << "-b #{buildpack}" if buildpack?
82
+ args.join(' ')
83
+ end
84
+
85
+ def skip_ssl_validation_opt
86
+ '--skip-ssl-validation' if skip_ssl_validation?
87
+ end
88
+
89
+ def manifest_missing?
90
+ !File.exist?(manifest)
91
+ end
92
+
93
+ def api
94
+ super || API[region.to_sym]
95
+ end
94
96
  end
95
97
  end
96
98
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Dpl
2
4
  module Providers
3
5
  class Boxfuse < Provider
@@ -5,9 +7,9 @@ module Dpl
5
7
 
6
8
  status :alpha
7
9
 
8
- description sq(<<-str)
10
+ description sq(<<-STR)
9
11
  tbd
10
- str
12
+ STR
11
13
 
12
14
  env :boxfuse
13
15
 
@@ -23,10 +25,10 @@ module Dpl
23
25
  URL = 'https://files.boxfuse.com/com/boxfuse/client/boxfuse-commandline/1.33.0.1460/boxfuse-commandline-1.33.0.1460-linux-x64.tar.gz'
24
26
 
25
27
  cmds install: 'curl -L %{URL} | tar xz',
26
- deploy: 'boxfuse/boxfuse run %{deploy_opts}'
28
+ deploy: 'boxfuse/boxfuse run %{deploy_opts}'
27
29
 
28
30
  def validate
29
- # TODO check if the config file exists (it seems `boxfuse` doesn't)
31
+ # TODO: check if the config file exists (it seems `boxfuse` doesn't)
30
32
  end
31
33
 
32
34
  def install
@@ -39,12 +41,12 @@ module Dpl
39
41
 
40
42
  private
41
43
 
42
- def deploy_opts
43
- opts = [*opts_for(%i(user secret payload app env version), prefix: '-')]
44
- opts << "-configfile=#{config_file}" if config_file?
45
- opts << extra_args if extra_args?
46
- opts.join(' ')
47
- end
44
+ def deploy_opts
45
+ opts = [*opts_for(%i[user secret payload app env version], prefix: '-')]
46
+ opts << "-configfile=#{config_file}" if config_file?
47
+ opts << extra_args if extra_args?
48
+ opts.join(' ')
49
+ end
48
50
  end
49
51
  end
50
52
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Dpl
2
4
  module Providers
3
5
  class Cargo < Provider
@@ -5,9 +7,9 @@ module Dpl
5
7
 
6
8
  status :stable
7
9
 
8
- description sq(<<-str)
10
+ description sq(<<-STR)
9
11
  tbd
10
- str
12
+ STR
11
13
 
12
14
  env :cargo
13
15
 
@@ -22,9 +24,9 @@ module Dpl
22
24
 
23
25
  private
24
26
 
25
- def publish_opts
26
- opts_for(%i(token allow_dirty), dashed: true)
27
- end
27
+ def publish_opts
28
+ opts_for(%i[token allow_dirty], dashed: true)
29
+ end
28
30
  end
29
31
  end
30
32
  end