dpl-thib 1.10.5

Sign up to get free protection for your applications and to get access to all the features.
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