dpl-thib 1.10.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 (66) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +1 -0
  3. data/.github/CONTRIBUTING.md +173 -0
  4. data/.github/stale.yml +53 -0
  5. data/.gitignore +13 -0
  6. data/.rspec +2 -0
  7. data/.travis.yml +55 -0
  8. data/CODE_OF_CONDUCT.md +74 -0
  9. data/Gemfile +5 -0
  10. data/LICENSE +22 -0
  11. data/README.md +968 -0
  12. data/Rakefile +208 -0
  13. data/bin/dpl +5 -0
  14. data/dpl-anynines.gemspec +3 -0
  15. data/dpl-atlas.gemspec +3 -0
  16. data/dpl-azure_webapps.gemspec +3 -0
  17. data/dpl-bintray.gemspec +3 -0
  18. data/dpl-bitballoon.gemspec +3 -0
  19. data/dpl-bluemix_cloud_foundry.gemspec +3 -0
  20. data/dpl-boxfuse.gemspec +3 -0
  21. data/dpl-cargo.gemspec +3 -0
  22. data/dpl-catalyze.gemspec +3 -0
  23. data/dpl-chef_supermarket.gemspec +10 -0
  24. data/dpl-cloud66.gemspec +3 -0
  25. data/dpl-cloud_files.gemspec +3 -0
  26. data/dpl-cloud_foundry.gemspec +3 -0
  27. data/dpl-code_deploy.gemspec +3 -0
  28. data/dpl-deis.gemspec +3 -0
  29. data/dpl-elastic_beanstalk.gemspec +3 -0
  30. data/dpl-engine_yard.gemspec +3 -0
  31. data/dpl-firebase.gemspec +3 -0
  32. data/dpl-gae.gemspec +3 -0
  33. data/dpl-gcs.gemspec +3 -0
  34. data/dpl-hackage.gemspec +3 -0
  35. data/dpl-hephy.gemspec +3 -0
  36. data/dpl-heroku.gemspec +3 -0
  37. data/dpl-lambda.gemspec +3 -0
  38. data/dpl-launchpad.gemspec +3 -0
  39. data/dpl-npm.gemspec +3 -0
  40. data/dpl-openshift.gemspec +3 -0
  41. data/dpl-ops_works.gemspec +3 -0
  42. data/dpl-packagecloud.gemspec +3 -0
  43. data/dpl-pages.gemspec +3 -0
  44. data/dpl-puppet_forge.gemspec +3 -0
  45. data/dpl-pypi.gemspec +3 -0
  46. data/dpl-releases.gemspec +3 -0
  47. data/dpl-rubygems.gemspec +3 -0
  48. data/dpl-s3.gemspec +3 -0
  49. data/dpl-scalingo.gemspec +3 -0
  50. data/dpl-script.gemspec +3 -0
  51. data/dpl-snap.gemspec +3 -0
  52. data/dpl-surge.gemspec +3 -0
  53. data/dpl-testfairy.gemspec +3 -0
  54. data/dpl-transifex.gemspec +3 -0
  55. data/dpl.gemspec +3 -0
  56. data/gemspec_helper.rb +51 -0
  57. data/lib/dpl/cli.rb +66 -0
  58. data/lib/dpl/error.rb +3 -0
  59. data/lib/dpl/provider.rb +308 -0
  60. data/lib/dpl/version.rb +3 -0
  61. data/notes/engine_yard.md +1 -0
  62. data/notes/heroku.md +3 -0
  63. data/spec/cli_spec.rb +36 -0
  64. data/spec/provider_spec.rb +191 -0
  65. data/spec/spec_helper.rb +20 -0
  66. metadata +237 -0
@@ -0,0 +1,208 @@
1
+ require 'bundler'
2
+ require 'term/ansicolor'
3
+ require 'pathname'
4
+ require 'logger'
5
+ require './lib/dpl/version'
6
+ require 'highline'
7
+ require 'faraday'
8
+
9
+ include Term::ANSIColor
10
+
11
+ def cli
12
+ @cli ||= HighLine.new
13
+ end
14
+
15
+ @ready = false
16
+
17
+ def logger
18
+ @logger ||= Logger.new($stdout)
19
+ end
20
+
21
+ def top
22
+ @top ||= Pathname.new File.expand_path(File.dirname(__FILE__))
23
+ end
24
+
25
+ def gem_version
26
+ ENV['DPL_VERSION'] || DPL::VERSION
27
+ end
28
+
29
+ def confirm(verb = "release")
30
+ unless @ready
31
+ answer = cli.ask "Ready to #{verb} `dpl` version #{gem_version}? (y/n)"
32
+ if answer !~ /^y/i
33
+ abort red("Aborting #{verb}")
34
+ end
35
+
36
+ @ready = true
37
+ end
38
+ end
39
+
40
+ def dpl_bin
41
+ File.join(Gem.bindir, 'dpl')
42
+ end
43
+
44
+ gemspecs = FileList[File.join(top, "dpl-*.gemspec")]
45
+
46
+ providers = gemspecs.map { |f| /dpl-(?<provider>.*)\.gemspec/ =~ f && provider }
47
+
48
+ desc "Build dpl gem"
49
+ file "dpl-#{gem_version}.gem" do
50
+ logger.info green("Building dpl gem")
51
+ ruby "-S gem build dpl.gemspec"
52
+ end
53
+
54
+ desc "Install dpl gem"
55
+ file dpl_bin => "dpl-#{gem_version}.gem" do
56
+ logger.info green("Installing dpl gem")
57
+ ruby "-S gem install dpl-#{gem_version}.gem"
58
+ end
59
+
60
+ task :default => [:spec, Rake::FileTask[dpl_bin]] do
61
+ Rake::Task["spec_providers"].invoke
62
+ Rake::Task["check_providers"].invoke
63
+ end
64
+
65
+ desc "Run spec on all providers"
66
+ task :spec_providers do
67
+ providers.each do |provider|
68
+ Rake::Task["spec-#{provider}"].invoke
69
+ end
70
+ end
71
+
72
+ desc "Check all provider gems install correctly"
73
+ task :check_providers do
74
+ providers.each do |provider|
75
+ Rake::Task["check-#{provider}"].invoke
76
+ end
77
+ end
78
+
79
+ desc "Build all gems"
80
+ task :build => "dpl-#{gem_version}.gem" do
81
+ providers.each do |provider|
82
+ Rake::Task["dpl-#{provider}-#{gem_version}.gem"].invoke
83
+ end
84
+ end
85
+
86
+ desc "Uninstall all gems"
87
+ task :uninstall do
88
+ providers.each do |provider|
89
+ Rake::Task["uninstall-#{provider}"].invoke
90
+ end
91
+ logger.info red("Uninstalling dpl")
92
+ sh "gem uninstall -aIx dpl"
93
+ end
94
+
95
+ desc "Release all gems"
96
+ task :release do
97
+ confirm
98
+ released = []
99
+ providers.each do |provider|
100
+ while !released.include? provider
101
+ logger.info "checking dpl-#{provider}"
102
+
103
+ cli = Faraday.new url: 'https://rubygems.org'
104
+
105
+ begin
106
+ response = cli.get("/api/v2/rubygems/dpl-#{provider}/versions/#{gem_version}.json")
107
+ if response.success?
108
+ released << provider
109
+ logger.info green("dpl-#{provider} #{gem_version} exists")
110
+ next
111
+ else
112
+ begin
113
+ if Rake::Task["release-#{provider}"].invoke
114
+ released << provider
115
+ end
116
+ rescue => e
117
+ Rake::Task["release-#{provider}"].reenable
118
+ end
119
+ end
120
+ rescue Faraday::Error => e
121
+ logger.info yellow("connection failed. retrying")
122
+ retry
123
+ end
124
+ end
125
+ end
126
+ logger.info green("Pushing dpl-#{gem_version}.gem")
127
+ sh "gem push dpl-#{gem_version}.gem"
128
+ end
129
+
130
+ desc "Yank all gems"
131
+ task :yank, [:version] do |t, args|
132
+ version = args.version
133
+ confirm "yank"
134
+ logger.info green("Yanking `dpl` version #{version}")
135
+ sh "gem yank dpl -v #{version}"
136
+ providers.each do |provider|
137
+ Rake::Task["yank-#{provider}"].invoke
138
+ end
139
+ end
140
+
141
+ task :deep_clean do
142
+ Rake::Task[:clean].invoke
143
+ sh "git clean -dfx"
144
+ end
145
+
146
+ task :clean do
147
+ rm_rf "stubs"
148
+ rm_rf "vendor"
149
+ rm_rf "dpl-*.gem"
150
+ Rake::Task[:uninstall].invoke
151
+ end
152
+
153
+ desc "Run dpl specs"
154
+ task :spec do
155
+ ruby '-S rspec spec/cli_spec.rb spec/provider_spec.rb'
156
+ end
157
+
158
+ providers.each do |provider|
159
+ desc "Write Gemfile-#{provider}"
160
+ file "Gemfile-#{provider}" do |t|
161
+ gemfile = top + t.name
162
+ logger.info green("Writing #{gemfile}")
163
+ gemfile.write %Q(source 'https://rubygems.org'\ngemspec :name => "dpl-#{provider}"\n)
164
+ end
165
+
166
+ desc %Q(Run dpl-#{provider} specs)
167
+ task "spec-#{provider}", [:lines] => [Rake::FileTask[dpl_bin], "Gemfile-#{provider}"] do |_t, args|
168
+ tail = args.lines ? ":#{args.lines}" : ""
169
+ sh "rm -f $HOME/.npmrc"
170
+ logger.info green("Running `bundle install` for #{provider}")
171
+ sh 'bash', '-cl', "bundle install --gemfile=Gemfile-#{provider} --path=vendor/cache/dpl-#{provider} --retry=3 --binstubs=stubs"
172
+ logger.info green("Running specs for #{provider}")
173
+ sh "env BUNDLE_GEMFILE=Gemfile-#{provider} ./stubs/rspec spec/provider/#{provider}_spec.rb#{tail}"
174
+ end
175
+
176
+ desc "Build dpl-#{provider} gem"
177
+ file "dpl-#{provider}-#{gem_version}.gem" do
178
+ logger.info green("Building dpl-#{provider} gem")
179
+ ruby "-S gem build --silent dpl-#{provider}.gemspec"
180
+ end
181
+
182
+ desc "Test dpl-#{provider} gem"
183
+ task "check-#{provider}" => [Rake::FileTask[dpl_bin], "dpl-#{provider}-#{gem_version}.gem"] do
184
+ logger.info green("Installing dpl-#{provider} gem")
185
+ sh "gem install --no-post-install-message dpl-#{provider}-#{gem_version}.gem"
186
+ logger.info green("Testing dpl-#{provider} loads correctly")
187
+ ruby "-S dpl --provider=#{provider} --skip-cleanup=true --no-deploy"
188
+ end
189
+
190
+ desc "Uninstall dpl-#{provider}"
191
+ task "uninstall-#{provider}" do
192
+ logger.info red("Uninstalling dpl-#{provider}")
193
+ sh "gem uninstall -aIx dpl-#{provider}"
194
+ end
195
+
196
+ desc "Release dpl-#{provider} gem"
197
+ task "release-#{provider}" => "dpl-#{provider}-#{gem_version}.gem" do
198
+ confirm
199
+ logger.info green("Pushing dpl-#{provider}-#{gem_version}.gem")
200
+ sh "gem push dpl-#{provider}-#{gem_version}.gem"
201
+ end
202
+
203
+ desc "Yank dpl-#{provider}"
204
+ task "yank-#{provider}" do
205
+ logger.info green("Yanking dpl-#{provider} version #{gem_version}")
206
+ sh "gem yank dpl-#{provider} -v #{gem_version}"
207
+ end
208
+ end
data/bin/dpl ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
3
+
4
+ require 'dpl/cli'
5
+ DPL::CLI.run(ARGV)
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'anynines'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'atlas'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'azure_webapps'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'bintray'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'bitballoon', [['bitballoon']]
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'bluemix_cloud_foundry'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'boxfuse'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'cargo'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'catalyze'
@@ -0,0 +1,10 @@
1
+ require './gemspec_helper'
2
+
3
+ if Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.3.0")
4
+ gemspec_for 'chef_supermarket', [['rack'], ['mime-types'], ['net-telnet', '~> 0.1.0'], ['chef', '~> 12.0']]
5
+ elsif Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.4.0")
6
+ gemspec_for 'chef_supermarket', [['rack'], ['mime-types'], ['chef', '~> 13.0']]
7
+ else
8
+ gemspec_for 'chef_supermarket', [['rack'], ['mime-types'], ['chef', '>= 14']]
9
+ end
10
+
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'cloud66'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'cloud_files', [['net-ssh'], ['mime-types'], ['nokogiri'], ['fog-rackspace']]
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'cloud_foundry'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'code_deploy', [['aws-sdk', '~> 2.0']]
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'deis'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'elastic_beanstalk', [['aws-sdk', '~> 2.0'], ['rubyzip']]
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'engine_yard', [['engineyard-cloud-client']]
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'firebase'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'gae'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'gcs', [['gstore'], ['mime-types', '~> 2.0']]
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'hackage'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'hephy'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'heroku', [['faraday'], ['rendezvous'], ['netrc']]
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'lambda', [['aws-sdk', '~> 2.0'], ['rubyzip']]
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'launchpad'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'npm'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'openshift', [['httpclient', '~> 2.4.0'], ['net-ssh'], ['net-ssh-gateway'], ['rhc']]
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'ops_works', [['aws-sdk', '~> 2.0']]
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'packagecloud', [['packagecloud-ruby', '1.0.8']]
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'pages', [['octokit', '~> 4.6.2']]
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'puppet_forge', [['puppet', '~> 5'], ['puppet-blacksmith'], ['json_pure']]
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'pypi'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'releases', [['octokit', '~> 4.6.2'], ['mime-types', '~> 2.0']]
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'rubygems', [['gems', '>= 1.1.0']]
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 's3', [['aws-sdk', '~> 2.0'], ['mime-types', '~> 2.0']]
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'scalingo'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'script'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'snap'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'surge'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'testfairy', [['multipart-post', '2.0.0']]
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for 'transifex'
@@ -0,0 +1,3 @@
1
+ require './gemspec_helper'
2
+
3
+ gemspec_for
@@ -0,0 +1,51 @@
1
+ $:.unshift File.expand_path("../lib", __FILE__)
2
+ require "dpl/version"
3
+
4
+ def gemspec_for(provider_name=nil, runtime_dependencies=[])
5
+ Gem::Specification.new do |s|
6
+
7
+ s.name = ["dpl", 'thib'].compact.join("-")
8
+ s.author = "Konstantin Haase"
9
+ s.email = "konstantin.mailinglists@googlemail.com"
10
+ s.homepage = "https://github.com/travis-ci/dpl"
11
+ s.summary = %q{deploy tool}
12
+ s.description = %q{deploy tool abstraction for clients}
13
+ s.license = 'MIT'
14
+
15
+ s.require_path = 'lib'
16
+ s.required_ruby_version = '>= 2.2'
17
+
18
+ # set up version
19
+ s.version = ENV['DPL_VERSION'] || DPL::VERSION
20
+
21
+ # dependencies
22
+ if provider_name
23
+ s.add_runtime_dependency 'dpl', s.version
24
+ end
25
+
26
+ runtime_dependencies.each do |part|
27
+ s.add_runtime_dependency *part
28
+ end
29
+
30
+ s.add_development_dependency 'rspec'
31
+ s.add_development_dependency 'rspec-its'
32
+ s.add_development_dependency 'rake'
33
+ s.add_development_dependency 'json_pure'
34
+ s.add_development_dependency 'tins'
35
+ s.add_development_dependency 'coveralls'
36
+ s.add_development_dependency 'highline'
37
+ s.add_development_dependency 'term-ansicolor'
38
+ s.add_development_dependency 'faraday'
39
+
40
+ # set up files
41
+ if provider_name
42
+ s.files = `git ls-files`.split("\n").grep(Regexp.new provider_name.to_s)
43
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n").grep(Regexp.new provider_name.to_s)
44
+ else
45
+ s.files = `git ls-files`.split("\n").reject {|f| f =~ Regexp.new("provider/")}
46
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n").reject {|f| f =~ Regexp.new("provider/")}
47
+ end
48
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }.grep(Regexp.new provider_name.to_s)
49
+
50
+ end
51
+ end