dpl 1.10.17.travis.6637.6 → 2.0.0.alpha.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (140) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +74 -0
  3. data/CONTRIBUTING.md +392 -0
  4. data/Gemfile +17 -3
  5. data/Gemfile.lock +373 -0
  6. data/LICENSE +16 -19
  7. data/NOTES.md +275 -0
  8. data/README.md +1977 -707
  9. data/Rakefile +2 -2
  10. data/bin/dpl +7 -3
  11. data/lib/dpl.rb +20 -0
  12. data/lib/dpl/assets/atlas/install +19 -0
  13. data/lib/dpl/assets/dpl/README.erb.md +133 -0
  14. data/lib/dpl/assets/dpl/git_ssh +2 -0
  15. data/lib/dpl/assets/git/detect_private_key +8 -0
  16. data/lib/dpl/assets/hephy/filter_log +3 -0
  17. data/lib/dpl/assets/pypi/install +4 -0
  18. data/lib/dpl/assets/scalingo/install +6 -0
  19. data/lib/dpl/cli.rb +36 -48
  20. data/lib/dpl/ctx.rb +2 -0
  21. data/lib/dpl/ctx/bash.rb +543 -0
  22. data/lib/dpl/ctx/test.rb +242 -0
  23. data/lib/dpl/helper/assets.rb +36 -0
  24. data/lib/dpl/helper/cmd.rb +167 -0
  25. data/lib/dpl/helper/config_file.rb +47 -0
  26. data/lib/dpl/helper/env.rb +39 -0
  27. data/lib/dpl/helper/interpolate.rb +126 -0
  28. data/lib/dpl/helper/memoize.rb +20 -0
  29. data/lib/dpl/helper/squiggle.rb +22 -0
  30. data/lib/dpl/helper/zip.rb +69 -0
  31. data/lib/dpl/provider.rb +562 -234
  32. data/lib/dpl/provider/dsl.rb +369 -0
  33. data/lib/dpl/provider/examples.rb +128 -0
  34. data/lib/dpl/provider/status.rb +59 -0
  35. data/lib/dpl/providers.rb +40 -0
  36. data/lib/dpl/providers/anynines.rb +65 -0
  37. data/lib/dpl/providers/atlas.rb +49 -0
  38. data/lib/dpl/providers/azure_web_apps.rb +59 -0
  39. data/lib/dpl/providers/bintray.rb +313 -0
  40. data/lib/dpl/providers/bluemixcloudfoundry.rb +92 -0
  41. data/lib/dpl/providers/boxfuse.rb +48 -0
  42. data/lib/dpl/providers/cargo.rb +19 -0
  43. data/lib/dpl/providers/chef_supermarket.rb +128 -0
  44. data/lib/dpl/providers/cloud66.rb +40 -0
  45. data/lib/dpl/providers/cloudfiles.rb +56 -0
  46. data/lib/dpl/providers/cloudfoundry.rb +81 -0
  47. data/lib/dpl/providers/codedeploy.rb +179 -0
  48. data/lib/dpl/providers/datica.rb +60 -0
  49. data/lib/dpl/providers/elasticbeanstalk.rb +195 -0
  50. data/lib/dpl/providers/engineyard.rb +107 -0
  51. data/lib/dpl/providers/firebase.rb +41 -0
  52. data/lib/dpl/providers/gae.rb +74 -0
  53. data/lib/dpl/providers/gcs.rb +105 -0
  54. data/lib/dpl/providers/hackage.rb +47 -0
  55. data/lib/dpl/providers/hephy.rb +101 -0
  56. data/lib/dpl/providers/heroku.rb +111 -0
  57. data/lib/dpl/providers/heroku/api.rb +119 -0
  58. data/lib/dpl/providers/heroku/git.rb +50 -0
  59. data/lib/dpl/providers/lambda.rb +202 -0
  60. data/lib/dpl/providers/launchpad.rb +74 -0
  61. data/lib/dpl/providers/netlify.rb +30 -0
  62. data/lib/dpl/providers/npm.rb +88 -0
  63. data/lib/dpl/providers/openshift.rb +46 -0
  64. data/lib/dpl/providers/opsworks.rb +142 -0
  65. data/lib/dpl/providers/packagecloud.rb +190 -0
  66. data/lib/dpl/providers/pages.rb +17 -0
  67. data/lib/dpl/providers/pages/api.rb +102 -0
  68. data/lib/dpl/providers/pages/git.rb +251 -0
  69. data/lib/dpl/providers/puppetforge.rb +44 -0
  70. data/lib/dpl/providers/pypi.rb +120 -0
  71. data/lib/dpl/providers/releases.rb +214 -0
  72. data/lib/dpl/providers/rubygems.rb +89 -0
  73. data/lib/dpl/providers/s3.rb +243 -0
  74. data/lib/dpl/providers/scalingo.rb +63 -0
  75. data/lib/dpl/providers/script.rb +28 -0
  76. data/lib/dpl/providers/snap.rb +59 -0
  77. data/lib/dpl/providers/surge.rb +55 -0
  78. data/lib/dpl/providers/testfairy.rb +93 -0
  79. data/lib/dpl/providers/transifex.rb +66 -0
  80. data/lib/dpl/support/aws_sdk_patch.rb +23 -0
  81. data/lib/dpl/support/gems.rb +69 -0
  82. data/lib/dpl/support/gstore_patch.rb +6 -0
  83. data/lib/dpl/support/version.rb +83 -0
  84. data/lib/dpl/version.rb +2 -2
  85. metadata +98 -169
  86. data/.coveralls.yml +0 -1
  87. data/.github/CONTRIBUTING.md +0 -173
  88. data/.github/stale.yml +0 -53
  89. data/.gitignore +0 -13
  90. data/.rspec +0 -2
  91. data/.travis.yml +0 -56
  92. data/dpl-anynines.gemspec +0 -3
  93. data/dpl-atlas.gemspec +0 -3
  94. data/dpl-azure_webapps.gemspec +0 -3
  95. data/dpl-bintray.gemspec +0 -3
  96. data/dpl-bitballoon.gemspec +0 -3
  97. data/dpl-bluemix_cloud_foundry.gemspec +0 -3
  98. data/dpl-boxfuse.gemspec +0 -3
  99. data/dpl-cargo.gemspec +0 -3
  100. data/dpl-catalyze.gemspec +0 -3
  101. data/dpl-chef_supermarket.gemspec +0 -20
  102. data/dpl-cloud66.gemspec +0 -3
  103. data/dpl-cloud_files.gemspec +0 -3
  104. data/dpl-cloud_foundry.gemspec +0 -3
  105. data/dpl-code_deploy.gemspec +0 -3
  106. data/dpl-deis.gemspec +0 -3
  107. data/dpl-elastic_beanstalk.gemspec +0 -3
  108. data/dpl-engine_yard.gemspec +0 -3
  109. data/dpl-firebase.gemspec +0 -3
  110. data/dpl-gae.gemspec +0 -3
  111. data/dpl-gcs.gemspec +0 -3
  112. data/dpl-hackage.gemspec +0 -3
  113. data/dpl-hephy.gemspec +0 -3
  114. data/dpl-heroku.gemspec +0 -3
  115. data/dpl-lambda.gemspec +0 -3
  116. data/dpl-launchpad.gemspec +0 -3
  117. data/dpl-npm.gemspec +0 -3
  118. data/dpl-openshift.gemspec +0 -3
  119. data/dpl-ops_works.gemspec +0 -3
  120. data/dpl-packagecloud.gemspec +0 -3
  121. data/dpl-pages.gemspec +0 -3
  122. data/dpl-puppet_forge.gemspec +0 -3
  123. data/dpl-pypi.gemspec +0 -3
  124. data/dpl-releases.gemspec +0 -8
  125. data/dpl-rubygems.gemspec +0 -3
  126. data/dpl-s3.gemspec +0 -3
  127. data/dpl-scalingo.gemspec +0 -3
  128. data/dpl-script.gemspec +0 -3
  129. data/dpl-snap.gemspec +0 -3
  130. data/dpl-surge.gemspec +0 -3
  131. data/dpl-testfairy.gemspec +0 -3
  132. data/dpl-transifex.gemspec +0 -3
  133. data/dpl.gemspec +0 -3
  134. data/gemspec_helper.rb +0 -51
  135. data/lib/dpl/error.rb +0 -3
  136. data/notes/engine_yard.md +0 -1
  137. data/notes/heroku.md +0 -3
  138. data/spec/cli_spec.rb +0 -36
  139. data/spec/provider_spec.rb +0 -191
  140. data/spec/spec_helper.rb +0 -20
@@ -1,191 +0,0 @@
1
- require 'spec_helper'
2
- require 'dpl/provider'
3
-
4
- describe DPL::Provider do
5
- let(:example_provider) { Class.new(described_class)}
6
- let(:context) { DummyContext.new }
7
- subject(:provider) { example_provider.new(context, :app => 'example', :key_name => 'foo', :run => ["foo", "bar"]) }
8
-
9
- before { stub_const "DPL::Provider::Example", example_provider }
10
-
11
- describe "#new" do
12
- example { expect(described_class.new(context, :provider => "example")) .to be_an(example_provider) }
13
- example { expect(described_class.new(context, :provider => "Example")) .to be_an(example_provider) }
14
- example { expect(described_class.new(context, :provider => "exa_mple")).to be_an(example_provider) }
15
- example { expect(described_class.new(context, :provider => "exa-mple")).to be_an(example_provider) }
16
- example { expect(described_class.new(context, :provider => "scri_pt")).to be_an(DPL::Provider::Script) }
17
- example { expect(described_class.new(context, :provider => "scri _pt")).to be_an(DPL::Provider::Script) }
18
- example { expect(described_class.new(context, :provider => "cloudfoundry")).to be_an(DPL::Provider::CloudFoundry) }
19
- example "install deployment dependencies" do
20
- expect_any_instance_of(described_class).to receive(:respond_to?).with(:install_deploy_dependencies).and_return(true)
21
- expect_any_instance_of(described_class).to receive(:install_deploy_dependencies)
22
- described_class.new(context, :provider => "example")
23
- end
24
-
25
- it "installs correct gem when provider name does not match" do
26
- expect(context).to receive(:shell).with("gem install dpl-cloud_foundry -v #{ENV['DPL_VERSION'] || DPL::VERSION}")
27
- expect(described_class).to receive(:require).with("dpl/provider/cloud_foundry").and_raise LoadError.new("cannot load such file -- dpl/provider/cloud_foundry")
28
- expect(described_class).to receive(:require).with("dpl/provider/cloud_foundry").and_call_original
29
- described_class.new(context, :provider => 'cloudfoundry')
30
- end
31
-
32
- end
33
-
34
- describe "#pip" do
35
- example "installed" do
36
- expect(example_provider).to receive(:`).with("which foo").and_return("/bin/foo\n")
37
- expect(example_provider).not_to receive(:system)
38
- expect(example_provider.context).to receive(:shell).with("export PATH=$PATH:$HOME/.local/bin")
39
- example_provider.pip("foo")
40
- end
41
-
42
- example "missing" do
43
- expect(example_provider).to receive(:`).with("which foo").and_return("")
44
- expect(example_provider.context).to receive(:shell).with("pip install --user foo", retry: true)
45
- expect(example_provider.context).to receive(:shell).with("export PATH=$PATH:$HOME/.local/bin")
46
- example_provider.pip("foo")
47
- end
48
-
49
- example "specific version" do
50
- expect(example_provider).to receive(:`).with("which foo").and_return("")
51
- expect(example_provider.context).to receive(:shell).with("pip install --user foo==1.0", retry: true)
52
- expect(example_provider.context).to receive(:shell).with("export PATH=$PATH:$HOME/.local/bin")
53
- example_provider.pip("foo", "foo", "1.0")
54
- end
55
- end
56
-
57
- describe "#deploy" do
58
- before do
59
- expect(provider).to receive(:check_auth)
60
- expect(provider).to receive(:check_app)
61
- expect(provider).to receive(:push_app)
62
- expect(provider).to receive(:run).with("foo")
63
- expect(provider).to receive(:run).with("bar")
64
- end
65
-
66
- example "needs key" do
67
- expect(provider).to receive(:remove_key)
68
- expect(provider).to receive(:create_key)
69
- expect(provider).to receive(:setup_key)
70
- expect(provider).to receive(:setup_git_ssh)
71
- provider.deploy
72
- end
73
-
74
- example "does not need key" do
75
- allow(provider).to receive_messages(:needs_key? => false)
76
- provider.deploy
77
- end
78
- end
79
-
80
- describe "#cleanup" do
81
- example do
82
- expect(provider.context).to receive(:shell).with('mv .dpl ~/dpl')
83
- expect(provider.context).to receive(:shell).with('git stash --all')
84
- expect(provider.context).to receive(:shell).with('mv ~/dpl .dpl')
85
- provider.cleanup
86
- end
87
-
88
- example "skip cleanup" do
89
- expect(provider.options).to receive(:[]).with(:skip_cleanup).and_return("true")
90
- expect(provider.context).not_to receive(:shell)
91
- provider.cleanup
92
- end
93
- end
94
-
95
- describe "#uncleanup" do
96
- example do
97
- expect(provider.context).to receive(:shell).with('git stash pop')
98
- provider.uncleanup
99
- end
100
-
101
- example "skip cleanup" do
102
- expect(provider.options).to receive(:[]).with(:skip_cleanup).and_return("true")
103
- expect(provider.context).not_to receive(:shell)
104
- provider.uncleanup
105
- end
106
- end
107
-
108
- describe "#create_key" do
109
- example do
110
- expect(provider.context).to receive(:shell).with('ssh-keygen -t rsa -N "" -C foo -f thekey')
111
- provider.create_key('thekey')
112
- end
113
- end
114
-
115
- describe "#setup_git_ssh" do
116
- after { FileUtils.rm provider.context.env.delete('GIT_SSH') }
117
-
118
- example do
119
- provider.setup_git_ssh('foo', 'bar')
120
- expect(provider.context.env['GIT_SSH']).to eq(File.expand_path('foo'))
121
- end
122
- end
123
-
124
- describe "#detect_encoding?" do
125
- example do
126
- provider.options.update(:detect_encoding => true)
127
- expect(provider.detect_encoding?).to eq(true)
128
- end
129
- end
130
-
131
- describe "#encoding_for" do
132
- example do
133
- path = 'foo.js'
134
- expect(provider).to receive(:`).at_least(1).times.with("file '#{path}'").and_return("#{path}: gzip compressed")
135
- expect(provider.encoding_for(path)).to eq('gzip')
136
- end
137
-
138
- example do
139
- path = 'file with a space'
140
- expect(provider).to receive(:`).at_least(1).times.with("file '#{path}'").and_return("#{path}: empty")
141
- expect(provider.encoding_for(path)).to be_nil
142
- end
143
-
144
- example do
145
- path = 'foo.js'
146
- expect(provider).to receive(:`).at_least(1).times.with("file '#{path}'").and_return("#{path}: ASCII text, with very long line")
147
- expect(provider.encoding_for(path)).to eq('text')
148
- end
149
-
150
- example do
151
- path = 'foo.js'
152
- provider.options.update(:default_text_charset => 'UTF-8')
153
- expect(provider).to receive(:`).at_least(1).times.with("file '#{path}'").and_return("#{path}: ASCII text, with very long line")
154
- expect(provider.encoding_for(path)).to eq('text')
155
- end
156
- end
157
-
158
- describe "#log" do
159
- example do
160
- expect($stderr).to receive(:puts).with("foo")
161
- provider.log("foo")
162
- end
163
- end
164
-
165
- describe "#shell" do
166
- example do
167
- expect(example_provider).to receive(:system).with("command")
168
- example_provider.shell("command")
169
- end
170
- end
171
-
172
- describe "#npm_g" do
173
- example do
174
- expect(example_provider.context).to receive(:shell).with("npm install -g foo", retry: true)
175
- example_provider.npm_g("foo")
176
- end
177
- end
178
-
179
- describe "#run" do
180
- example do
181
- expect(provider).to receive(:error).with("running commands not supported")
182
- provider.run "blah"
183
- end
184
- end
185
-
186
- describe "#error" do
187
- example do
188
- expect { provider.error("Foo") }.to raise_error("Foo")
189
- end
190
- end
191
- end
data/spec/spec_helper.rb DELETED
@@ -1,20 +0,0 @@
1
- require 'json/pure'
2
- require 'dpl/error'
3
- require 'dpl/provider'
4
- require 'rspec/its'
5
- require 'coveralls'
6
-
7
- Coveralls.wear!
8
-
9
- class DummyContext
10
- def shell(command)
11
- end
12
-
13
- def fold(message)
14
- yield
15
- end
16
-
17
- def env
18
- @env ||= {}
19
- end
20
- end