packagecloud-ruby 0.2.23 → 1.0.1
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.
- 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
|
-

|
3
|
+

|
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:
|