package_cloud 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7e79efbf4dac6996cdcbb7f304c64689deb3a2f7
4
+ data.tar.gz: 87bad1bffe38bcaa287637ba3fdb34a88038ee8f
5
+ SHA512:
6
+ metadata.gz: 76efe9383a2845066a36f8dc6190872d92a8655d952440423718a198a5c0dd84c6acd624f7bcade5333e4e8dcdb41326f9f49d1549b2916edb97b9937a3c8a04
7
+ data.tar.gz: 68bed2c251717c0f73c9ec19dd10736ef7a15d001f8e59c837cb3beb55a37c999cdffd8b286d3abd1b34d6ef164b4e6783a82e7095e9b98f6bf0d44a608192c4
@@ -47,7 +47,7 @@ module PackageCloud
47
47
  end
48
48
 
49
49
  invalid_packages = package_files.select do |f|
50
- !["gem", "deb", "rpm"].include?(f.split(".").last)
50
+ !["gem", "deb", "rpm", "dsc"].include?(f.split(".").last)
51
51
  end
52
52
 
53
53
  if !options.has_key?("skip-file-ext-validation") && invalid_packages.any?
@@ -78,9 +78,18 @@ module PackageCloud
78
78
  print "Looking for repository at #{repo}... "
79
79
  repo = client.repository(repo)
80
80
  print "success!\n"
81
+
81
82
  package_files.each do |f|
83
+ files = nil
84
+ ext = f.split(".").last
85
+
86
+ if ext == "dsc"
87
+ print "Checking source package #{f}... "
88
+ files = parse_and_verify_dsc(repo, f, dist_id)
89
+ end
90
+
82
91
  print "Pushing #{f}... "
83
- repo.create_package(f, dist_id)
92
+ repo.create_package(f, dist_id, files, ext)
84
93
  end
85
94
  end
86
95
 
@@ -91,6 +100,31 @@ module PackageCloud
91
100
  end
92
101
 
93
102
  private
103
+ def parse_and_verify_dsc(repo, f, dist_id)
104
+ files = repo.parse_dsc(f, dist_id)
105
+ dirname = File.dirname(f)
106
+ find_and_verify(dirname, files)
107
+ end
108
+
109
+ def find_and_verify(dir, files)
110
+ file_paths = []
111
+ files.each do |f|
112
+ filepath = File.join(dir, f["filename"])
113
+ if !File.exists?(filepath)
114
+ print "Unable to find file name: #{f["filename"]} for source package: #{filepath}\n".red
115
+ abort("Aborting...".red)
116
+ end
117
+
118
+ disk_size = File.stat(filepath).size
119
+ if disk_size != f["size"]
120
+ print "File #{f["filename"]} has size: #{disk_size}, expected: #{f["size"]}\n".red
121
+ abort("Aborting...".red)
122
+ end
123
+ file_paths << filepath
124
+ end
125
+ file_paths
126
+ end
127
+
94
128
  def get_valid(prompt)
95
129
  selection = ""
96
130
  times = 0
@@ -23,6 +23,11 @@ module PackageCloud
23
23
  user, repo = name.split("/")
24
24
  begin
25
25
  attrs = JSON.parse(RestClient.get("#{base_url}/api/v1/repos/#{user}/#{repo}.json"))
26
+ if attrs["error"] == "not_found"
27
+ print "failed... Repository #{user}/#{repo} not found!\n".red
28
+ exit(127)
29
+ end
30
+
26
31
  Repository.new(attrs, @config)
27
32
  rescue RestClient::ResourceNotFound => e
28
33
  print "failed!\n".red
@@ -5,13 +5,65 @@ module PackageCloud
5
5
  @config = config
6
6
  end
7
7
 
8
- def create_package(file_path, dist_id)
8
+ def parse_dsc(dsc_path, dist_id)
9
+ file_data = File.new(dsc_path, 'rb')
10
+ base_url = @config.base_url
11
+ url = base_url + paths["package_contents"]
12
+ begin
13
+ resp = RestClient.post(url, :package => {:package_file => file_data,
14
+ :distro_version_id => dist_id})
15
+ resp = JSON.parse(resp)
16
+ print "success!\n"
17
+ resp["files"]
18
+ rescue RestClient::UnprocessableEntity => e
19
+ print "error:\n".red
20
+ json = JSON.parse(e.response)
21
+ json.each do |k,v|
22
+ puts "\n\t#{k}: #{v.join(", ")}\n"
23
+ end
24
+ puts ""
25
+ exit(1)
26
+ end
27
+ end
28
+
29
+ def create_dsc(dsc, files, dist_id)
30
+ file_data = File.new(dsc, 'rb')
31
+ base_url = @config.base_url
32
+ url = base_url + paths["create_package"]
33
+ begin
34
+ resp = RestClient.post(url, :package => {:package_file => file_data,
35
+ :source_files => file_ios,
36
+ :distro_version_id => dist_id})
37
+ files = JSON.parse(resp)
38
+ print "success!\n".green
39
+ files
40
+ rescue RestClient::UnprocessableEntity => e
41
+ print "error:\n".red
42
+ json = JSON.parse(e.response)
43
+ json.each do |k,v|
44
+ puts "\n\t#{k}: #{v.join(", ")}\n"
45
+ end
46
+ puts ""
47
+ exit(1)
48
+ end
49
+ end
50
+
51
+ def create_package(file_path, dist_id, files=nil, filetype=nil)
9
52
  file_data = File.new(file_path, 'rb')
10
- base_url = @config.base_url
53
+ base_url = @config.base_url
11
54
  url = base_url + paths["create_package"]
55
+ params = { :package_file => file_data,
56
+ :distro_version_id => dist_id }
57
+
58
+ if filetype == "dsc"
59
+ file_ios = files.inject([]) do |memo, f|
60
+ memo << File.new(f, 'rb')
61
+ end
62
+ params.merge!({:source_files => file_ios})
63
+ end
64
+
12
65
  begin
13
- RestClient.post(url, :package => {:package_file => file_data,
14
- :distro_version_id => dist_id})
66
+ RestClient.post(url, :package => params)
15
67
  print "success!\n".green
16
68
  rescue RestClient::UnprocessableEntity => e
17
69
  print "error:\n".red
@@ -1,7 +1,7 @@
1
1
  module PackageCloud
2
2
  MAJOR_VERSION = "0"
3
3
  MINOR_VERSION = "2"
4
- PATCH_VERSION = "5"
4
+ PATCH_VERSION = "6"
5
5
 
6
6
  VERSION = [MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION].join(".")
7
7
  end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: package_cloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
5
- prerelease:
4
+ version: 0.2.6
6
5
  platform: ruby
7
6
  authors:
8
7
  - James Golick
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-06-10 00:00:00.000000000 Z
11
+ date: 2014-06-26 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: thor
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - '='
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - '='
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: highline
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - '='
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - '='
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rest-client
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - '='
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - '='
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: json
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - '='
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - '='
76
67
  - !ruby/object:Gem::Version
@@ -78,7 +69,6 @@ dependencies:
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: colorize
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - '='
84
74
  - !ruby/object:Gem::Version
@@ -86,7 +76,6 @@ dependencies:
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - '='
92
81
  - !ruby/object:Gem::Version
@@ -94,7 +83,6 @@ dependencies:
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: bundler
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
87
  - - "~>"
100
88
  - !ruby/object:Gem::Version
@@ -102,7 +90,6 @@ dependencies:
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
94
  - - "~>"
108
95
  - !ruby/object:Gem::Version
@@ -110,7 +97,6 @@ dependencies:
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: rake
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
101
  - - ">="
116
102
  - !ruby/object:Gem::Version
@@ -118,7 +104,6 @@ dependencies:
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
108
  - - ">="
124
109
  - !ruby/object:Gem::Version
@@ -156,27 +141,25 @@ files:
156
141
  homepage: https://packagecloud.io
157
142
  licenses:
158
143
  - MIT
144
+ metadata: {}
159
145
  post_install_message:
160
146
  rdoc_options: []
161
147
  require_paths:
162
148
  - lib
163
149
  required_ruby_version: !ruby/object:Gem::Requirement
164
- none: false
165
150
  requirements:
166
151
  - - ">="
167
152
  - !ruby/object:Gem::Version
168
153
  version: '0'
169
154
  required_rubygems_version: !ruby/object:Gem::Requirement
170
- none: false
171
155
  requirements:
172
156
  - - ">="
173
157
  - !ruby/object:Gem::Version
174
158
  version: '0'
175
159
  requirements: []
176
160
  rubyforge_project:
177
- rubygems_version: 1.8.23
161
+ rubygems_version: 2.2.0
178
162
  signing_key:
179
- specification_version: 3
163
+ specification_version: 4
180
164
  summary: https://packagecloud.io
181
165
  test_files: []
182
- has_rdoc: