packagecloud-ruby 0.2.23 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +13 -5
- data/README.md +10 -12
- data/lib/packagecloud/client.rb +13 -22
- data/lib/packagecloud/package.rb +19 -11
- data/lib/packagecloud/version.rb +3 -3
- data/spec/fixtures/distros.json +1 -0
- data/spec/package_spec.rb +46 -0
- data/spec/packagecloud_server.rb +1 -1
- data/spec/packagecloud_spec.rb +33 -35
- metadata +34 -31
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
NjcwOGRkNWM5YjU5OTM4ZGYxZDAxYWE3NTA0MDI2NWJjZGZlNzYzYg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ODNiZWMwMDRiOGY0MmJmNDUxMTIwNGI5ZmQyOGFiOGI2YzQzNmUzNA==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MDVlOWM3MDViMTJmNTZiMTRlMjg5NDc4NjUzYTVkN2VmMWIxYWNkZDVlYWEw
|
10
|
+
NWYzNTJmZWU0YzQ2MGI3YTc1MTgzNGZmOGYzYjExMTdjMDM5ZWJhNmI2MmMy
|
11
|
+
MWNhN2JjYjllYWY0NjNmNWYxNmYzNjVkYTg2OWJkZmVmZTI4Y2M=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZTVkMzQzYTVjMGY0YWM1ODMzMTRhNTNlMDcyNTFlMTUyYTJhZWMxYWY2NGE3
|
14
|
+
Y2VmNjEyNTUxNzdkMThiZWFlY2IxZDIwMjk5ZDlkYzA0YzI3M2RlMjMwZTY2
|
15
|
+
NDYzOTRiOWEwZWYwZDFhMTc2NGRjMTQ2MGU2YmRhYWRmZmNlYWM=
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
## packagecloud-ruby
|
2
2
|
|
3
|
-
![Build Status](https://travis-ci.org/computology/packagecloud-ruby.svg "Build Status")
|
3
|
+
![Build Status](https://travis-ci.org/computology/packagecloud-ruby.svg?branch=master "Build Status")
|
4
4
|
|
5
5
|
|
6
6
|
Ruby library for communicating with the [packagecloud.io](https://packagecloud.io) API.
|
@@ -90,7 +90,7 @@ go to your [Account Settings](https://packagecloud.io/api_token) to see your API
|
|
90
90
|
|
91
91
|
```
|
92
92
|
|
93
|
-
When
|
93
|
+
When specifying your repository name, you should use just the name and not
|
94
94
|
the fully qualified name (fqname).
|
95
95
|
|
96
96
|
For example:
|
@@ -103,27 +103,25 @@ go to your [Account Settings](https://packagecloud.io/api_token) to see your API
|
|
103
103
|
### Packages
|
104
104
|
|
105
105
|
```ruby
|
106
|
-
# Create RPM Packages (
|
107
|
-
|
108
|
-
rpm_package = Packagecloud::Package.new(open("libcurl-0.1.2.rpm"), distro_id)
|
106
|
+
# Create RPM Packages (can take File, IO, or path argument)
|
107
|
+
rpm_package = Packagecloud::Package.new(:file => "libcurl-0.1.2.rpm")
|
109
108
|
|
110
|
-
# Creating gem Packages (
|
111
|
-
gem_package = Packagecloud::Package.new(
|
109
|
+
# Creating gem Packages using IO (needs :filename passed in)
|
110
|
+
gem_package = Packagecloud::Package.new(:file => io_object, :filename => "rails-4.0.0.gem")
|
112
111
|
|
113
112
|
# Creating source Packages
|
114
|
-
distro_id = @client.find_distribution_id("ubuntu/trusty")
|
115
113
|
source_files = { "jake_1.0.orig.tar.bz2" => open("/path/jake_1.0.orig.tar.bz2"),
|
116
114
|
"jake_1.0-7.debian.tar.gz" => open("/path/jake_1.0-7.debian.tar.gz") }
|
117
|
-
dsc_package = Packagecloud::Package.new(
|
115
|
+
dsc_package = Packagecloud::Package.new(:file => "jake_1.0-7.dsc", :source_files => source_files)
|
118
116
|
|
119
117
|
# Upload Packages
|
120
118
|
@client.put_package("test_repo", gem_package)
|
121
|
-
@client.put_package("test_repo", rpm_package)
|
122
|
-
@client.put_package("test_repo", dsc_package)
|
119
|
+
@client.put_package("test_repo", rpm_package, "el/6")
|
120
|
+
@client.put_package("test_repo", dsc_package, "ubuntu/trusty")
|
123
121
|
```
|
124
122
|
|
125
123
|
## Copyright
|
126
124
|
|
127
|
-
Copyright (c) 2014-
|
125
|
+
Copyright (c) 2014-2016 Computology, LLC
|
128
126
|
|
129
127
|
See LICENSE.txt for details.
|
data/lib/packagecloud/client.rb
CHANGED
@@ -6,7 +6,7 @@ require 'packagecloud/connection'
|
|
6
6
|
require 'packagecloud/version'
|
7
7
|
|
8
8
|
module Packagecloud
|
9
|
-
SUPPORTED_EXTENSIONS = ["deb", "
|
9
|
+
SUPPORTED_EXTENSIONS = ["deb", "dsc", "gem", "rpm", "whl", "zip", "egg", "egg-info", "tar", "bz2", "Z", "gz"]
|
10
10
|
|
11
11
|
class UnauthenticatedException < StandardError
|
12
12
|
attr_reader :object
|
@@ -44,7 +44,7 @@ module Packagecloud
|
|
44
44
|
attr_reader :connection
|
45
45
|
attr_reader :credentials
|
46
46
|
|
47
|
-
def initialize(credentials, user_agent="
|
47
|
+
def initialize(credentials, user_agent="packagecloud-ruby #{Packagecloud::VERSION}", connection=Connection.new)
|
48
48
|
@credentials = credentials
|
49
49
|
@connection = connection
|
50
50
|
@user_agent = user_agent
|
@@ -56,7 +56,6 @@ module Packagecloud
|
|
56
56
|
|
57
57
|
@excon = Excon.new("#{scheme}://#{token}@#{host}:#{port}")
|
58
58
|
assert_valid_credentials
|
59
|
-
assert_compatible_version
|
60
59
|
end
|
61
60
|
|
62
61
|
def distributions
|
@@ -116,15 +115,21 @@ module Packagecloud
|
|
116
115
|
parsed_json_result(response)
|
117
116
|
end
|
118
117
|
|
119
|
-
def put_package(repo, package)
|
118
|
+
def put_package(repo, package, distro_version_id)
|
120
119
|
assert_valid_repo_name(repo)
|
121
120
|
|
122
121
|
url = "/api/v1/repos/#{username}/#{repo}/packages.json"
|
123
122
|
|
124
123
|
mixed_msg = MIME::Multipart::FormData.new
|
125
124
|
|
126
|
-
if
|
127
|
-
|
125
|
+
if distro_version_id != nil
|
126
|
+
if distro_version_id.is_a? String
|
127
|
+
distro_version = find_distribution_id(distro_version_id)
|
128
|
+
raise "Cannot find distribution: #{distro_version_id}" if distro_version.nil?
|
129
|
+
mixed_msg.add(MIME::Text.new(distro_version), "package[distro_version_id]")
|
130
|
+
else
|
131
|
+
mixed_msg.add(MIME::Text.new(distro_version_id), "package[distro_version_id]")
|
132
|
+
end
|
128
133
|
end
|
129
134
|
|
130
135
|
pkg_data = MIME::Application.new(package.file.read)
|
@@ -147,7 +152,8 @@ module Packagecloud
|
|
147
152
|
if distros.succeeded
|
148
153
|
deb_distros = distro_map distros.response["deb"]
|
149
154
|
rpm_distros = distro_map distros.response["rpm"]
|
150
|
-
|
155
|
+
py_distros = distro_map distros.response["py"]
|
156
|
+
all_distros = deb_distros.merge(rpm_distros).merge(py_distros)
|
151
157
|
result = all_distros.select { |distro, id| distro.include?(distro_query) }
|
152
158
|
if result.size > 1
|
153
159
|
keys = result.map { |x| x.first }.join(' ')
|
@@ -178,21 +184,6 @@ module Packagecloud
|
|
178
184
|
end
|
179
185
|
end
|
180
186
|
|
181
|
-
def assert_compatible_version
|
182
|
-
result = gem_version
|
183
|
-
if result.succeeded
|
184
|
-
if result.response["minor"] != MINOR_VERSION
|
185
|
-
raise GemOutOfDateException.new("This library is out of date, please update it!")
|
186
|
-
elsif result.response["patch"].to_i > PATCH_VERSION.to_i
|
187
|
-
puts "[WARNING] There's a newer version of the packagecloud-ruby library. Update as soon as possible!"
|
188
|
-
end
|
189
|
-
elsif result.response.downcase.include?('unauthenticated')
|
190
|
-
raise UnauthenticatedException.new
|
191
|
-
else
|
192
|
-
raise "Unable to get gem version from API: #{result.response}"
|
193
|
-
end
|
194
|
-
end
|
195
|
-
|
196
187
|
def assert_valid_credentials
|
197
188
|
result = distributions
|
198
189
|
if result.succeeded == false && result.response.downcase.include?('unauthenticated')
|
data/lib/packagecloud/package.rb
CHANGED
@@ -2,21 +2,29 @@ module Packagecloud
|
|
2
2
|
class Package
|
3
3
|
|
4
4
|
attr_reader :file
|
5
|
-
attr_reader :distro_version_id
|
6
5
|
attr_accessor :source_files
|
7
6
|
attr_reader :filename
|
7
|
+
attr_reader :client
|
8
8
|
|
9
|
-
def initialize(
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
def initialize(options = {})
|
10
|
+
if options[:file].nil?
|
11
|
+
raise ArgumentError, 'file cannot be nil' if file.nil?
|
12
|
+
end
|
13
|
+
if options[:file].is_a? String
|
14
|
+
options[:file] = File.open(options[:file])
|
15
|
+
end
|
16
|
+
if options[:file].is_a? File
|
17
|
+
options[:filename] = File.basename(options[:file].path)
|
18
|
+
end
|
19
|
+
if options[:filename].nil?
|
20
|
+
raise ArgumentError, 'filename cannot be nil' if file.nil?
|
21
|
+
end
|
13
22
|
|
14
|
-
|
15
|
-
@
|
16
|
-
@
|
17
|
-
@
|
18
|
-
@source_files = source_files
|
23
|
+
@file = options[:file]
|
24
|
+
@filename = options[:filename]
|
25
|
+
@source_files = options[:source_files] || {}
|
26
|
+
@client = options[:client]
|
19
27
|
end
|
20
28
|
|
21
29
|
end
|
22
|
-
end
|
30
|
+
end
|
data/lib/packagecloud/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
{"deb":[{"display_name":"Ubuntu","index_name":"ubuntu","versions":[{"id":1,"display_name":"4.10 Warty Warthog","index_name":"warty","version_number":"4.10"},{"id":2,"display_name":"5.04 Hoary Hedgehog","index_name":"hoary","version_number":"5.04"},{"id":3,"display_name":"5.10 Breezy Badger","index_name":"breezy","version_number":"5.10"},{"id":4,"display_name":"6.06 LTS Dapper Drake","index_name":"dapper","version_number":"6.06"},{"id":5,"display_name":"6.10 Edgy Eft","index_name":"edgy","version_number":"6.10"},{"id":6,"display_name":"7.04 Feisty Fawn","index_name":"feisty","version_number":"7.04"},{"id":7,"display_name":"7.10 Gutsy Gibbon","index_name":"gutsy","version_number":"7.10"},{"id":8,"display_name":"8.04 LTS Hardy Heron","index_name":"hardy","version_number":"8.04"},{"id":9,"display_name":"8.10 Intrepid Ibex","index_name":"intrepid","version_number":"8.10"},{"id":10,"display_name":"9.04 Jaunty Jackalope","index_name":"jaunty","version_number":"9.04"},{"id":11,"display_name":"9.10 Karmic Koala","index_name":"karmic","version_number":"9.10"},{"id":12,"display_name":"10.04 LTS Lucid Lynx","index_name":"lucid","version_number":"10.04"},{"id":13,"display_name":"10.10 Maverick Meerkat","index_name":"maverick","version_number":"10.10"},{"id":14,"display_name":"11.04 Natty Narwhal","index_name":"natty","version_number":"11.04"},{"id":15,"display_name":"11.10 Oneiric Ocelot","index_name":"oneiric","version_number":"11.10"},{"id":16,"display_name":"12.04 LTS Precise Pangolin","index_name":"precise","version_number":"12.04"},{"id":17,"display_name":"12.10 Quantal Quetzal","index_name":"quantal","version_number":"12.10"},{"id":18,"display_name":"13.04 Raring Ringtail","index_name":"raring","version_number":"13.04"},{"id":19,"display_name":"13.10 Saucy Salamander","index_name":"saucy","version_number":"13.10"},{"id":20,"display_name":"14.04 LTS Trusty Tahr","index_name":"trusty","version_number":"14.04"},{"id":142,"display_name":"14.10 Utopic Unicorn","index_name":"utopic","version_number":"14.10"},{"id":148,"display_name":"15.04 Vivid Vervet","index_name":"vivid","version_number":"15.04"},{"id":152,"display_name":"15.10 Wily Werewolf","index_name":"wily","version_number":"15.10"},{"id":165,"display_name":"16.04 LTS Xenial Xerus","index_name":"xenial","version_number":"16.04"}]},{"display_name":"Debian","index_name":"debian","versions":[{"id":21,"display_name":"4.0 etch","index_name":"etch","version_number":"4.0"},{"id":22,"display_name":"5.0 lenny","index_name":"lenny","version_number":"5.0"},{"id":23,"display_name":"6.0 squeeze","index_name":"squeeze","version_number":"6.0"},{"id":24,"display_name":"7 wheezy","index_name":"wheezy","version_number":"7.0"},{"id":25,"display_name":"8 jessie","index_name":"jessie","version_number":"8.0"},{"id":149,"display_name":"9 stretch","index_name":"stretch","version_number":"9.0"},{"id":150,"display_name":"10 buster","index_name":"buster","version_number":"10.0"}]},{"display_name":"Any deb-based distribution.","index_name":"any","versions":[{"id":35,"display_name":"Any version.","index_name":"any","version_number":null}]},{"display_name":"LinuxMint","index_name":"linuxmint","versions":[{"id":157,"display_name":"16 petra","index_name":"petra","version_number":"16"},{"id":158,"display_name":"17 qiana","index_name":"qiana","version_number":"17"},{"id":159,"display_name":"17.1 rebecca","index_name":"rebecca","version_number":"17.1"},{"id":160,"display_name":"17.2 rafaela","index_name":"rafaela","version_number":"17.2"},{"id":161,"display_name":"17.3 rosa","index_name":"rosa","version_number":"17.3"}]},{"display_name":"Raspbian","index_name":"raspbian","versions":[{"id":153,"display_name":"7 wheezy","index_name":"wheezy","version_number":"7.0"},{"id":154,"display_name":"8 jessie","index_name":"jessie","version_number":"8.0"},{"id":155,"display_name":"9 stretch","index_name":"stretch","version_number":"9.0"},{"id":156,"display_name":"10 buster","index_name":"buster","version_number":"10.0"}]},{"display_name":"elementary OS","index_name":"elementaryos","versions":[{"id":162,"display_name":"0.1 jupiter","index_name":"jupiter","version_number":"0.1"},{"id":163,"display_name":"0.2 luna","index_name":"luna","version_number":"0.2"},{"id":164,"display_name":"0.3 freya","index_name":"freya","version_number":"0.3"}]}],"rpm":[{"display_name":"Enterprise Linux","index_name":"el","versions":[{"id":26,"display_name":"Enterprise Linux 5.0","index_name":"5","version_number":"5.0"},{"id":27,"display_name":"Enterprise Linux 6.0","index_name":"6","version_number":"6.0"},{"id":140,"display_name":"Enterprise Linux 7.0","index_name":"7","version_number":"7.0"}]},{"display_name":"Fedora","index_name":"fedora","versions":[{"id":28,"display_name":"14 Laughlin","index_name":"14","version_number":"14.0"},{"id":29,"display_name":"15 Lovelock","index_name":"15","version_number":"15.0"},{"id":30,"display_name":"16 Verne","index_name":"16","version_number":"16.0"},{"id":31,"display_name":"17 Beefy Miracle","index_name":"17","version_number":"17.0"},{"id":32,"display_name":"18 Spherical Cow","index_name":"18","version_number":"18.0"},{"id":33,"display_name":"19 Schrödinger's Cat","index_name":"19","version_number":"19.0"},{"id":34,"display_name":"20 Heisenbug","index_name":"20","version_number":"20.0"},{"id":143,"display_name":"21 Fedora 21","index_name":"21","version_number":"21.0"},{"id":147,"display_name":"22 Fedora 22","index_name":"22","version_number":"22.0"},{"id":151,"display_name":"23 Fedora 23","index_name":"23","version_number":"23.0"}]},{"display_name":"Scientific Linux","index_name":"scientific","versions":[{"id":138,"display_name":"Scientific Linux 5.0","index_name":"5","version_number":"5.0"},{"id":139,"display_name":"Scientific Linux 6.0","index_name":"6","version_number":"6.0"},{"id":141,"display_name":"Scientific Linux 7.0","index_name":"7","version_number":"7.0"}]},{"display_name":"Oracle Linux","index_name":"ol","versions":[{"id":144,"display_name":"Oracle Linux 5.0","index_name":"5","version_number":"5.0"},{"id":145,"display_name":"Oracle Linux 6.0","index_name":"6","version_number":"6.0"},{"id":146,"display_name":"Oracle Linux 7.0","index_name":"7","version_number":"7.0"}]}],"py":[{"display_name":"Python","index_name":"python","versions":[{"id":166,"display_name":"Python"}]}],"dsc":[{"display_name":"Ubuntu","index_name":"ubuntu","versions":[{"id":1,"display_name":"4.10 Warty Warthog","index_name":"warty","version_number":"4.10"},{"id":2,"display_name":"5.04 Hoary Hedgehog","index_name":"hoary","version_number":"5.04"},{"id":3,"display_name":"5.10 Breezy Badger","index_name":"breezy","version_number":"5.10"},{"id":4,"display_name":"6.06 LTS Dapper Drake","index_name":"dapper","version_number":"6.06"},{"id":5,"display_name":"6.10 Edgy Eft","index_name":"edgy","version_number":"6.10"},{"id":6,"display_name":"7.04 Feisty Fawn","index_name":"feisty","version_number":"7.04"},{"id":7,"display_name":"7.10 Gutsy Gibbon","index_name":"gutsy","version_number":"7.10"},{"id":8,"display_name":"8.04 LTS Hardy Heron","index_name":"hardy","version_number":"8.04"},{"id":9,"display_name":"8.10 Intrepid Ibex","index_name":"intrepid","version_number":"8.10"},{"id":10,"display_name":"9.04 Jaunty Jackalope","index_name":"jaunty","version_number":"9.04"},{"id":11,"display_name":"9.10 Karmic Koala","index_name":"karmic","version_number":"9.10"},{"id":12,"display_name":"10.04 LTS Lucid Lynx","index_name":"lucid","version_number":"10.04"},{"id":13,"display_name":"10.10 Maverick Meerkat","index_name":"maverick","version_number":"10.10"},{"id":14,"display_name":"11.04 Natty Narwhal","index_name":"natty","version_number":"11.04"},{"id":15,"display_name":"11.10 Oneiric Ocelot","index_name":"oneiric","version_number":"11.10"},{"id":16,"display_name":"12.04 LTS Precise Pangolin","index_name":"precise","version_number":"12.04"},{"id":17,"display_name":"12.10 Quantal Quetzal","index_name":"quantal","version_number":"12.10"},{"id":18,"display_name":"13.04 Raring Ringtail","index_name":"raring","version_number":"13.04"},{"id":19,"display_name":"13.10 Saucy Salamander","index_name":"saucy","version_number":"13.10"},{"id":20,"display_name":"14.04 LTS Trusty Tahr","index_name":"trusty","version_number":"14.04"},{"id":142,"display_name":"14.10 Utopic Unicorn","index_name":"utopic","version_number":"14.10"},{"id":148,"display_name":"15.04 Vivid Vervet","index_name":"vivid","version_number":"15.04"},{"id":152,"display_name":"15.10 Wily Werewolf","index_name":"wily","version_number":"15.10"},{"id":165,"display_name":"16.04 LTS Xenial Xerus","index_name":"xenial","version_number":"16.04"}]},{"display_name":"Debian","index_name":"debian","versions":[{"id":21,"display_name":"4.0 etch","index_name":"etch","version_number":"4.0"},{"id":22,"display_name":"5.0 lenny","index_name":"lenny","version_number":"5.0"},{"id":23,"display_name":"6.0 squeeze","index_name":"squeeze","version_number":"6.0"},{"id":24,"display_name":"7 wheezy","index_name":"wheezy","version_number":"7.0"},{"id":25,"display_name":"8 jessie","index_name":"jessie","version_number":"8.0"},{"id":149,"display_name":"9 stretch","index_name":"stretch","version_number":"9.0"},{"id":150,"display_name":"10 buster","index_name":"buster","version_number":"10.0"}]},{"display_name":"Any deb-based distribution.","index_name":"any","versions":[{"id":35,"display_name":"Any version.","index_name":"any","version_number":null}]},{"display_name":"LinuxMint","index_name":"linuxmint","versions":[{"id":157,"display_name":"16 petra","index_name":"petra","version_number":"16"},{"id":158,"display_name":"17 qiana","index_name":"qiana","version_number":"17"},{"id":159,"display_name":"17.1 rebecca","index_name":"rebecca","version_number":"17.1"},{"id":160,"display_name":"17.2 rafaela","index_name":"rafaela","version_number":"17.2"},{"id":161,"display_name":"17.3 rosa","index_name":"rosa","version_number":"17.3"}]},{"display_name":"Raspbian","index_name":"raspbian","versions":[{"id":153,"display_name":"7 wheezy","index_name":"wheezy","version_number":"7.0"},{"id":154,"display_name":"8 jessie","index_name":"jessie","version_number":"8.0"},{"id":155,"display_name":"9 stretch","index_name":"stretch","version_number":"9.0"},{"id":156,"display_name":"10 buster","index_name":"buster","version_number":"10.0"}]},{"display_name":"elementary OS","index_name":"elementaryos","versions":[{"id":162,"display_name":"0.1 jupiter","index_name":"jupiter","version_number":"0.1"},{"id":163,"display_name":"0.2 luna","index_name":"luna","version_number":"0.2"},{"id":164,"display_name":"0.3 freya","index_name":"freya","version_number":"0.3"}]}]}
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'packagecloud'
|
3
|
+
|
4
|
+
describe Package do
|
5
|
+
it "should raise for nil file" do
|
6
|
+
expect { Package.new }.to raise_error("file cannot be nil")
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should raise for file that doesn't exist" do
|
10
|
+
expect { Package.new(:file => "hi") }.to raise_error
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should be able to open String file paths" do
|
14
|
+
pkg = Package.new(:file => "spec/fixtures/chewbacca-1.0.0.gem")
|
15
|
+
expect(pkg.filename).to eql("chewbacca-1.0.0.gem")
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should be able to open File objects" do
|
19
|
+
pkg = Package.new(:file => File.open("spec/fixtures/chewbacca-1.0.0.gem"))
|
20
|
+
expect(pkg.filename).to eql("chewbacca-1.0.0.gem")
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should raise if IO object is passed without filename" do
|
24
|
+
fd = IO.sysopen("spec/fixtures/chewbacca-1.0.0.gem", "r")
|
25
|
+
io = IO.new(fd)
|
26
|
+
expect { Package.new(:file => io) }.to raise_error("filename cannot be nil")
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should handle IO object if passed with filename" do
|
30
|
+
fd = IO.sysopen("spec/fixtures/chewbacca-1.0.0.gem", "r")
|
31
|
+
io = IO.new(fd)
|
32
|
+
pkg = Package.new(:file => io, :filename => "chewbacca-1.0.0.gem")
|
33
|
+
expect(pkg.filename).to eql("chewbacca-1.0.0.gem")
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should handle source_files options" do
|
37
|
+
pkg = Package.new(:file => "spec/fixtures/natty_dsc/jake_1.0-7.dsc", :source_files => {"foo" => "bar"})
|
38
|
+
expect(pkg.source_files).to eql({"foo" => "bar"})
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should always have a {} as default for source files" do
|
42
|
+
pkg = Package.new(:file => "spec/fixtures/natty_dsc/jake_1.0-7.dsc", :source_files => nil)
|
43
|
+
expect(pkg.source_files).to be_empty
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
data/spec/packagecloud_server.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
require 'webrick'
|
3
3
|
|
4
4
|
class PackagecloudServer < WEBrick::HTTPServlet::AbstractServlet
|
5
|
-
DISTRIBUTIONS =
|
5
|
+
DISTRIBUTIONS = File.read("spec/fixtures/distros.json")
|
6
6
|
PACKAGE_CONTENTS = "{\"files\":[{\"filename\":\"jake_1.0.orig.tar.bz2\",\"size\":1108,\"md5sum\":\"a7a309b55424198ee98abcb8092d7be0\"},{\"filename\":\"jake_1.0-7.debian.tar.gz\",\"size\":1571,\"md5sum\":\"0fa5395e95ddf846b419e96575ce8044\"}]}"
|
7
7
|
GEM_VERSION = "{\"major\":\"0\",\"minor\":\"2\",\"patch\":\"1\"}"
|
8
8
|
REPO = '{"name": "test_repo","created_at": "2014-08-30T03:51:37.000Z","url": "https://packagecloud.io/joedamato/test_repo","last_push_human": "about 2 months ago","package_count_human": "4 packages","private": true,"fqname": "joedamato/test_repo"}'
|
data/spec/packagecloud_spec.rb
CHANGED
@@ -25,7 +25,7 @@ describe Packagecloud do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should have a VERSION constant" do
|
28
|
-
subject.const_get('VERSION').
|
28
|
+
expect(subject.const_get('VERSION')).to_not be_empty
|
29
29
|
end
|
30
30
|
|
31
31
|
it "GET api/v1/distributions.json" do
|
@@ -42,11 +42,30 @@ describe Packagecloud do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
it "POST debian package /api/v1/repos/joedamato/test_repo/packages.json" do
|
45
|
-
|
46
|
-
size = File.size(
|
47
|
-
package = Package.new(
|
45
|
+
path = "spec/fixtures/libampsharp2.0-cil_2.0.4-1_all.deb"
|
46
|
+
size = File.size(path)
|
47
|
+
package = Package.new(:file => path)
|
48
48
|
|
49
|
-
result = @client.put_package("test_repo", package)
|
49
|
+
result = @client.put_package("test_repo", package, 22)
|
50
|
+
expect(result.succeeded).to be_truthy
|
51
|
+
|
52
|
+
#assert content type is set correctly
|
53
|
+
expect($request.content_type).to include("boundary=")
|
54
|
+
expect($request.content_type).to include("multipart/form-data")
|
55
|
+
|
56
|
+
# assert body is at least bigger than fixture file
|
57
|
+
expect($request.content_length > size).to be_truthy
|
58
|
+
end
|
59
|
+
|
60
|
+
it "POST debian package /api/v1/repos/joedamato/test_repo/packages.json with string distro_version_id" do
|
61
|
+
allow(@client).to receive(:find_distribution_id).and_return(3)
|
62
|
+
path = "spec/fixtures/libampsharp2.0-cil_2.0.4-1_all.deb"
|
63
|
+
size = File.size(path)
|
64
|
+
package = Package.new(:file => path)
|
65
|
+
|
66
|
+
result = @client.put_package("test_repo", package, "ubuntu/breezy")
|
67
|
+
|
68
|
+
expect(@client).to have_received(:find_distribution_id)
|
50
69
|
expect(result.succeeded).to be_truthy
|
51
70
|
|
52
71
|
#assert content type is set correctly
|
@@ -70,10 +89,9 @@ describe Packagecloud do
|
|
70
89
|
jake_debian_size = File.size(jake_debian)
|
71
90
|
combined_size = dsc_size + jake_orig_size + jake_debian_size
|
72
91
|
|
73
|
-
|
74
|
-
package = Package.new(open(dsc), 22, source_packages)
|
92
|
+
package = Package.new(:file => dsc, :source_files => source_packages)
|
75
93
|
|
76
|
-
result = @client.put_package("test_repo", package)
|
94
|
+
result = @client.put_package("test_repo", package, 22)
|
77
95
|
expect(result.succeeded).to be_truthy
|
78
96
|
|
79
97
|
#assert content type is set correctly
|
@@ -85,9 +103,9 @@ describe Packagecloud do
|
|
85
103
|
end
|
86
104
|
|
87
105
|
it "POST /api/v1/repos/joedamato/test_repo/packages/contents.json" do
|
88
|
-
dsc =
|
106
|
+
dsc = 'spec/fixtures/natty_dsc/jake_1.0-7.dsc'
|
89
107
|
size = File.size(dsc)
|
90
|
-
package = Package.new(
|
108
|
+
package = Package.new(:file => dsc)
|
91
109
|
|
92
110
|
result = @client.package_contents("test_repo", package)
|
93
111
|
expect(result.succeeded).to be_truthy
|
@@ -155,31 +173,6 @@ describe Packagecloud do
|
|
155
173
|
end.to raise_error(InvalidUsernameException)
|
156
174
|
end
|
157
175
|
|
158
|
-
it "should raise if api has advanced too far" do
|
159
|
-
current = Packagecloud::MINOR_VERSION
|
160
|
-
Packagecloud::MINOR_VERSION = "1"
|
161
|
-
credentials = Credentials.new("joedamato", "test_token")
|
162
|
-
connection = Connection.new("http", "localhost", 8000)
|
163
|
-
|
164
|
-
expect {
|
165
|
-
Client.new(credentials, "test_client", connection)
|
166
|
-
}.to raise_error(GemOutOfDateException)
|
167
|
-
# Set this back to current
|
168
|
-
Packagecloud::MINOR_VERSION = current
|
169
|
-
end
|
170
|
-
|
171
|
-
it "should suggest upgrading if patch version is higher" do
|
172
|
-
current = Packagecloud::PATCH_VERSION
|
173
|
-
Packagecloud::PATCH_VERSION = "0"
|
174
|
-
credentials = Credentials.new("joedamato", "test_token")
|
175
|
-
connection = Connection.new("http", "localhost", 8000)
|
176
|
-
$stdout.should_receive(:write).with("[WARNING] There's a newer version of the packagecloud-ruby library. Update as soon as possible!")
|
177
|
-
$stdout.should_receive(:write).with("\n")
|
178
|
-
Client.new(credentials, "test_client", connection)
|
179
|
-
# Set this back to current
|
180
|
-
Packagecloud::PATCH_VERSION = current
|
181
|
-
end
|
182
|
-
|
183
176
|
it "invalid credentials should raise unauthenticated exception" do
|
184
177
|
credentials = Credentials.new("joedamato", "test_tafdfasoken")
|
185
178
|
connection = Connection.new("http", "localhost", 8000)
|
@@ -199,6 +192,11 @@ describe Packagecloud do
|
|
199
192
|
expect(id).to be(3)
|
200
193
|
end
|
201
194
|
|
195
|
+
it "should find python" do
|
196
|
+
id = @client.find_distribution_id("python")
|
197
|
+
expect(id).to be(166)
|
198
|
+
end
|
199
|
+
|
202
200
|
it "should return nil for invalid distro" do
|
203
201
|
id = @client.find_distribution_id("ubuasdalsdntu/breezy")
|
204
202
|
expect(id).to be_nil
|
metadata
CHANGED
@@ -1,153 +1,153 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: packagecloud-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joe Damato
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: excon
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0.40'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0.40'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: multi_json
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: json_pure
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '1'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: mime
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0.4'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0.4'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '1.0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '1.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0.8'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ~>
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0.8'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rspec
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ~>
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '2.4'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ~>
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '2.4'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: simplecov
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - ~>
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '0.9'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - ~>
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0.9'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: rubygems-tasks
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - ~>
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: '0.2'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- -
|
136
|
+
- - ~>
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0.2'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: yard
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- -
|
143
|
+
- - ~>
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: '0.8'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- -
|
150
|
+
- - ~>
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0.8'
|
153
153
|
description: library for interacting with packagecloud.io
|
@@ -156,11 +156,11 @@ executables: []
|
|
156
156
|
extensions: []
|
157
157
|
extra_rdoc_files: []
|
158
158
|
files:
|
159
|
-
-
|
160
|
-
-
|
161
|
-
-
|
162
|
-
-
|
163
|
-
-
|
159
|
+
- .document
|
160
|
+
- .gitignore
|
161
|
+
- .rspec
|
162
|
+
- .travis.yml
|
163
|
+
- .yardopts
|
164
164
|
- Gemfile
|
165
165
|
- LICENSE.txt
|
166
166
|
- README.md
|
@@ -174,10 +174,12 @@ files:
|
|
174
174
|
- lib/packagecloud/version.rb
|
175
175
|
- packagecloud-ruby.gemspec
|
176
176
|
- spec/fixtures/chewbacca-1.0.0.gem
|
177
|
+
- spec/fixtures/distros.json
|
177
178
|
- spec/fixtures/libampsharp2.0-cil_2.0.4-1_all.deb
|
178
179
|
- spec/fixtures/natty_dsc/jake_1.0-7.debian.tar.gz
|
179
180
|
- spec/fixtures/natty_dsc/jake_1.0-7.dsc
|
180
181
|
- spec/fixtures/natty_dsc/jake_1.0.orig.tar.bz2
|
182
|
+
- spec/package_spec.rb
|
181
183
|
- spec/packagecloud_server.rb
|
182
184
|
- spec/packagecloud_spec.rb
|
183
185
|
- spec/spec_helper.rb
|
@@ -191,27 +193,28 @@ require_paths:
|
|
191
193
|
- lib
|
192
194
|
required_ruby_version: !ruby/object:Gem::Requirement
|
193
195
|
requirements:
|
194
|
-
- -
|
196
|
+
- - ! '>='
|
195
197
|
- !ruby/object:Gem::Version
|
196
198
|
version: '0'
|
197
199
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
198
200
|
requirements:
|
199
|
-
- -
|
201
|
+
- - ! '>='
|
200
202
|
- !ruby/object:Gem::Version
|
201
203
|
version: '0'
|
202
204
|
requirements: []
|
203
205
|
rubyforge_project:
|
204
|
-
rubygems_version: 2.4.
|
206
|
+
rubygems_version: 2.4.8
|
205
207
|
signing_key:
|
206
208
|
specification_version: 4
|
207
209
|
summary: library for interacting with packagecloud.io
|
208
210
|
test_files:
|
209
211
|
- spec/fixtures/chewbacca-1.0.0.gem
|
212
|
+
- spec/fixtures/distros.json
|
210
213
|
- spec/fixtures/libampsharp2.0-cil_2.0.4-1_all.deb
|
211
214
|
- spec/fixtures/natty_dsc/jake_1.0-7.debian.tar.gz
|
212
215
|
- spec/fixtures/natty_dsc/jake_1.0-7.dsc
|
213
216
|
- spec/fixtures/natty_dsc/jake_1.0.orig.tar.bz2
|
217
|
+
- spec/package_spec.rb
|
214
218
|
- spec/packagecloud_server.rb
|
215
219
|
- spec/packagecloud_spec.rb
|
216
220
|
- spec/spec_helper.rb
|
217
|
-
has_rdoc:
|