dpl 1.8.12.travis.1286.4 → 1.8.12.travis.1291.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YzczNTJiNjRkOWY0OTE0MTk5YTJjNTBmMzMyN2YyZmYyYzg2NzM0YQ==
4
+ Y2NhMzg0NmUyYjI1OGY4Y2E5MTAwMGMxMjNlMzNlMDkwNGIxNDRmZA==
5
5
  data.tar.gz: !binary |-
6
- OTYyNjZkNTdjM2M5MjY1MTUxMDNjMThmZjJiMzNlZDc4NWRjMDQzMQ==
6
+ ZTFlMDdjZmIwMDZmNDdiZTZiNDI5NjgyN2ExNTUwNTA1NGM2YWRhNg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YWI1MWYxOTA4NTRjOTA3N2QyY2JmNzFhOTRkODVjZjIzN2E4M2IwZTVhOTUw
10
- YjIxOTQ4MDY1Y2MyYmFmNDNiMWZkZGU5YjFlOTkwNGJkZTBkNGZjNjMxNWZh
11
- MDkxNTJmNmFlOGE5ZTlmYmU1ZWI0NmM5MDFjMjkwOWFiNTU3M2U=
9
+ ZTQ3ZTg2OTRmMTgzMWJjZTQ5ZjJhMDQ0MTYyNmQ2N2E5NTYyMzQ4YWY4YjVm
10
+ NzY5YTYwYjkyMTdiNTk1ZDRiMzhlNDcwMGQ1OWM1MjliZjJiMmQ2NjQ5NGM2
11
+ MTA2NjViODgyODY4NGQ4ZGNiOGZhNjk0ZDVmNmM2NzA3NjBmMzI=
12
12
  data.tar.gz: !binary |-
13
- MzhjZjdjMWY2ZGMwNzRiZDYwNjA3Mzg0N2VlYzBmNmI1OTkwYjA2ZTBkMjA4
14
- OGFhYzZiNGY2N2NjN2U3YTE4ODg1ZDYyODdkMTljNTVhYjAzNGI0YjJkZWRi
15
- YjFkZTJlMmI2Mzc5Y2NjYzg2OGQzYzdkN2Y2N2U1MDQzMjY1NmM=
13
+ YmU5NGNiNjkwMTVlMzFlNWFlMDgyMDIxNWQwY2E5YmZkNGU3NjA1YmEyMTg2
14
+ OTBlZDQ2OWMwMmZmZGFhOWI3YzczYmMzNTVhMjdmMzBhZGE2NzJhZGQ4MTcz
15
+ ODlkZDZhNjk1MDYwZTM1MzczMzAzODA5NmRmNWRkYWNkYzI3MTM=
data/README.md CHANGED
@@ -526,6 +526,7 @@ You first need to create an [Atlas account](https://atlas.hashicorp.com/account/
526
526
  * **repo**: GitHub Repo. Defaults to git repo's name.
527
527
  * **file**: File to upload to GitHub Release.
528
528
  * **file_glob**: If files should be interpreted as globs (\* and \*\* wildcards). Defaults to false.
529
+ * **overwrite**: If files with the same name should be overwritten. Defaults to false.
529
530
  * **release-number**: Overide automatic release detection, set a release manually.
530
531
 
531
532
  Additionally, options can be passed to [Octokit](https://github.com/octokit/octokit.rb) client.
@@ -100,27 +100,35 @@ module DPL
100
100
  end
101
101
 
102
102
  files.each do |file|
103
- already_exists = false
103
+ existing_url = nil
104
104
  filename = Pathname.new(file).basename.to_s
105
105
  api.release(release_url).rels[:assets].get.data.each do |existing_file|
106
106
  if existing_file.name == filename
107
- already_exists = true
107
+ existing_url = existing_file.url
108
108
  end
109
109
  end
110
- if already_exists
111
- log "#{filename} already exists, skipping."
110
+ if !existing_url
111
+ upload_file(file, filename, release_url)
112
+ elsif existing_url && options[:overwrite]
113
+ log "#{filename} already exists, overwriting."
114
+ api.delete_release_asset(existing_url)
115
+ upload_file(file, filename, release_url)
112
116
  else
113
- content_type = MIME::Types.type_for(file).first.to_s
114
- if content_type.empty?
115
- # Specify the default content type, as it is required by GitHub
116
- content_type = "application/octet-stream"
117
- end
118
- api.upload_asset(release_url, file, {:name => filename, :content_type => content_type})
117
+ log "#{filename} already exists, skipping."
119
118
  end
120
119
  end
121
120
 
122
121
  api.update_release(release_url, {:draft => false}.merge(options))
123
122
  end
123
+
124
+ def upload_file(file, filename, release_url)
125
+ content_type = MIME::Types.type_for(file).first.to_s
126
+ if content_type.empty?
127
+ # Specify the default content type, as it is required by GitHub
128
+ content_type = "application/octet-stream"
129
+ end
130
+ api.upload_asset(release_url, file, {:name => filename, :content_type => content_type})
131
+ end
124
132
  end
125
133
  end
126
134
  end
@@ -196,7 +196,7 @@ describe DPL::Provider::Releases do
196
196
  allow(provider.api).to receive(:release)
197
197
  allow(provider.api.release).to receive(:rels).and_return({:assets => nil})
198
198
  allow(provider.api.release.rels[:assets]).to receive(:get).and_return({:data => [""]})
199
- allow(provider.api.release.rels[:assets].get).to receive(:data).and_return([double(:name => "foo.bar"), double(:name => "foo.foo")])
199
+ allow(provider.api.release.rels[:assets].get).to receive(:data).and_return([double(:name => "foo.bar", :url => 'foo-bar-url'), double(:name => "foo.foo", :url => 'foo-foo-url')])
200
200
 
201
201
  expect(provider.api).to receive(:upload_asset).with(anything, "bar.txt", {:name=>"bar.txt", :content_type=>"text/plain"})
202
202
  expect(provider).to receive(:log).with("foo.bar already exists, skipping.")
@@ -205,6 +205,33 @@ describe DPL::Provider::Releases do
205
205
  provider.push_app
206
206
  end
207
207
 
208
+ example "When Release Exists and has Files but overwrite flag is true" do
209
+ allow_message_expectations_on_nil
210
+
211
+ provider.options.update(:file => ["exists.txt"])
212
+ provider.options.update(:overwrite => true)
213
+
214
+ allow(provider).to receive(:releases).and_return([""])
215
+ allow(provider).to receive(:get_tag).and_return("v0.0.0")
216
+
217
+ provider.releases.map do |release|
218
+ allow(release).to receive(:tag_name).and_return("v0.0.0")
219
+ allow(release).to receive(:rels).and_return({:self => nil})
220
+ allow(release.rels[:self]).to receive(:href)
221
+ end
222
+
223
+ allow(provider.api).to receive(:release)
224
+ allow(provider.api.release).to receive(:rels).and_return({:assets => nil})
225
+ allow(provider.api.release.rels[:assets]).to receive(:get).and_return({:data => [""]})
226
+ allow(provider.api.release.rels[:assets].get).to receive(:data).and_return([double(:name => "exists.txt", :url => "release-url")])
227
+
228
+ expect(provider.api).to receive(:delete_release_asset).with("release-url").and_return(true)
229
+ expect(provider.api).to receive(:upload_asset).with(anything, "exists.txt", {:name=>"exists.txt", :content_type=>"text/plain"})
230
+ expect(provider.api).to receive(:update_release).with(anything, hash_including(:draft => false))
231
+
232
+ provider.push_app
233
+ end
234
+
208
235
  example "When Release Doesn't Exist" do
209
236
  allow_message_expectations_on_nil
210
237
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dpl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.12.travis.1286.4
4
+ version: 1.8.12.travis.1291.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Haase