aptly-api 0.9.1 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 380c5f11e70678a2475099bcd03210ec4181ad123d6094b7bdecc1f636e6b9af
4
- data.tar.gz: 810b109dcdae36be88317a858267b3d16b5f80e1fa1b4cff82e09f412e2e1a59
3
+ metadata.gz: 269fe5487b43c1f890f887f41d64112ed87fe5847b6de5f463be83ff46b3be8b
4
+ data.tar.gz: 1d15d78cdd86cb01865df47e3fec4f2de85a518e3773ac25d7794673bbb3afce
5
5
  SHA512:
6
- metadata.gz: 2883165cc34396cbc478fd096f0d1ee4a18b26f799aab81d6fd48fb0d3be79404f00d3b349e4545028549e46ebe21f824d182965469d6307d8a2447008a6f41e
7
- data.tar.gz: 036bd6f29fb8cd1eb2f6bfae2a610168d18a42bc573213bee6a073eeda71de284425d32e7cc1e1729eceefdf160f54cd3a91723f5419a9a4e433e9eeca626629
6
+ metadata.gz: ae1dc863c00addaacbb19586563ab84c60c33254a4b5c7eb0919c51977171812c5f1fc7d785dbb8a96d8877c3cf79e32a262d42b9b6a252a12ff7c10385843b4
7
+ data.tar.gz: acfb847b12356161c604e18a6bc69c38a34b408e6341eb4f334641474342803bbca8719e7e5fa3f18ff1cfebd73ef507ba68b493f6344a1d31d3cd867c51202d
data/.travis.yml CHANGED
@@ -1,9 +1,6 @@
1
1
  language: ruby
2
+ before_install: gem update bundler
2
3
  rvm:
3
- - 2.2.1
4
- - 2.3.0
5
- - 2.4.0
6
4
  - 2.5.0
7
- before_install:
8
- - gem update --system
9
- - gem install bundler -v 1.10.6
5
+ - 2.6.0
6
+ - 2.7.0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # Change Log
2
2
 
3
+ ## [0.11]
4
+
5
+ ### Added
6
+
7
+ - Faraday 2 support
8
+ - Ruby 3 support
9
+
10
+ ## [0.10.1]
11
+ ### Fixed
12
+ - Publishing endpoint escaping no longer creates invalid URIs when the Prefix
13
+ already contains underscores. Prefix=foo_bar is now correctly escaped to
14
+ foo__bar.
15
+ - excon 0.71 is now required as earlier versions had open security issues.
16
+
17
+ ## [0.10.0]
18
+ ### Added
19
+ - `PublishedRepository#from_repositories` publishes repository sources
20
+ into the same prefix.
21
+ - `Aptly.repo` is a new shorthand for `Aptly::Repository.get` to get
22
+ a repository by name when writing code interactively in IRB, or to
23
+ write slightly less verbose code.
24
+
25
+ ### Fixed
26
+ - Documentation fixes.
27
+ - `Connection.HTTP_ACTIONS` is now properly marked private.
28
+
3
29
  ## [0.9.1]
4
30
  ### Fixed
5
31
  - Hint at needing `noRemove: 1` as param when loop adding files (default
data/README.md CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  [![Inline docs](http://inch-ci.org/github/KDEJewellers/aptly-api.svg?branch=master)](http://inch-ci.org/github/KDEJewellers/aptly-api)
4
4
  [![Build Status](https://travis-ci.org/KDEJewellers/aptly-api.svg?branch=master)](https://travis-ci.org/KDEJewellers/aptly-api)
5
- [![Coverage Status](https://coveralls.io/repos/KDEJewellers/aptly-api/badge.svg?branch=master&service=github)](https://coveralls.io/github/KDEJewellers/aptly-api?branch=master)
6
- [![Dependency Status](https://gemnasium.com/KDEJewellers/aptly-api.svg)](https://gemnasium.com/KDEJewellers/aptly-api)
7
5
  [![Code Climate](https://codeclimate.com/github/KDEJewellers/aptly-api/badges/gpa.svg)](https://codeclimate.com/github/KDEJewellers/aptly-api)
8
6
 
9
7
  ## Installation
data/aptly-api.gemspec CHANGED
@@ -19,15 +19,16 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.add_development_dependency 'bundler', '~> 1.10'
23
- spec.add_development_dependency 'coveralls', '~> 0.8'
22
+ spec.add_development_dependency 'bundler', '~> 2.0'
24
23
  spec.add_development_dependency 'minitest', '~> 5.8'
25
- spec.add_development_dependency 'rake', '~> 12.0'
24
+ spec.add_development_dependency 'rake', '~> 13.0'
26
25
  spec.add_development_dependency 'rake-notes', '~> 0.2'
27
26
  spec.add_development_dependency 'simplecov', '~> 0.11'
28
27
  spec.add_development_dependency 'webmock', '~> 3.1'
29
28
  spec.add_development_dependency 'yard', '~> 0.8'
30
29
 
31
- spec.add_dependency 'faraday', '~> 0.9'
32
- spec.add_dependency 'excon', '~> 0.54'
30
+ spec.add_dependency 'faraday', '~> 2.0'
31
+ spec.add_dependency 'faraday-multipart', '~> 1.0'
32
+ spec.add_dependency 'faraday-excon', '~> 2.0'
33
+ spec.add_dependency 'excon'
33
34
  end
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2015-2017 Harald Sitter <sitter@kde.org>
1
+ # Copyright (C) 2015-2022 Harald Sitter <sitter@kde.org>
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -14,6 +14,8 @@
14
14
  # License along with this library. If not, see <http://www.gnu.org/licenses/>.
15
15
 
16
16
  require 'faraday'
17
+ require 'faraday/excon'
18
+ require 'faraday/multipart'
17
19
  require 'json'
18
20
  require 'uri'
19
21
 
@@ -31,9 +33,10 @@ module Aptly
31
33
  private_constant :GETISH_ACTIONS
32
34
  POSTISH_ACTIONS = %i[post put].freeze
33
35
  private_constant :POSTISH_ACTIONS
34
- HTTP_ACTIONS = GETISH_ACTIONS + POSTISH_ACTIONS
35
36
  WRITE_ACTIONS = (POSTISH_ACTIONS + %i[delete]).freeze
36
37
  private_constant :WRITE_ACTIONS
38
+ HTTP_ACTIONS = GETISH_ACTIONS + POSTISH_ACTIONS
39
+ private_constant :HTTP_ACTIONS
37
40
 
38
41
  CODE_ERRORS = {
39
42
  400 => Errors::ClientError,
data/lib/aptly/publish.rb CHANGED
@@ -42,6 +42,17 @@ module Aptly
42
42
  query: kwords)
43
43
  JSON.parse(response.body).collect { |h| new(connection, h) }
44
44
  end
45
+
46
+ # Publish an array of {Repository} to a prefix.
47
+ # @param repos [Array<Repository>] array of repositories to source
48
+ # @param prefix [String] the prefix to publish under (must be escaped see
49
+ # {.escape_prefix})
50
+ # @return [PublishedRepository] newly published repository
51
+ # @since 0.10.0
52
+ def from_repositories(repos, prefix, **kwords)
53
+ sources = repos.collect { |x| { Name: x.Name } }
54
+ Aptly.publish(sources, prefix, **kwords)
55
+ end
45
56
  end
46
57
 
47
58
  private
@@ -1,11 +1,13 @@
1
1
  module Aptly
2
+ # Abstract "type" of all publishable entities. Publishable entities
3
+ # are everything that can act as Source for a PublishedRepository.
2
4
  module Publishable
3
5
  # Lists all PublishedRepositories self is published in. Namely self must
4
6
  # be a source of the published repository in order for it to appear here.
5
7
  # This method always returns an array of affected published repositories.
6
8
  # If you use this method with a block it will additionally yield each
7
9
  # published repository that would appear in the array, making it a shorthand
8
- # for {Array#each}.
10
+ # for Array#each.
9
11
  # @yieldparam pub [PublishedRepository]
10
12
  # @return [Array<PublishedRepository>]
11
13
  def published_in
@@ -95,10 +95,12 @@ module Aptly
95
95
 
96
96
  # Convenience wrapper around {Aptly.publish}, publishing this repository
97
97
  # locally and as only source of prefix.
98
- # @param prefix [String] prefix to publish under (i.e. published repo name)
98
+ # @param prefix [String] prefix to publish under (i.e. published repo name).
99
+ # This must be escaped (see {Aptly.escape_prefix})
100
+ # @see Aptly.escape_prefix
99
101
  # @return [PublishedRepository] newly published repository
100
102
  def publish(prefix, **kwords)
101
- Aptly.publish([{ Name: self.Name }], prefix, 'local', kwords)
103
+ Aptly.publish([{ Name: self.Name }], prefix, 'local', **kwords)
102
104
  end
103
105
 
104
106
  # Edit this repository's attributes as per the parameters.
@@ -28,7 +28,7 @@ module Aptly
28
28
  end
29
29
 
30
30
  # Find differences between this and another snapshot
31
- # @param [Snapshot] to diff against
31
+ # @param other_snapshot [Snapshot] to diff against
32
32
  # @return [Array<Hash>] diff between the two snashots
33
33
  def diff(other_snapshot)
34
34
  endpoint = "/snapshots/#{self.Name}/diff/#{other_snapshot.Name}"
@@ -47,10 +47,12 @@ module Aptly
47
47
 
48
48
  # Convenience wrapper around {Aptly.publish}, publishing this snapshot
49
49
  # locally and as only source of prefix.
50
- # @param prefix [String] prefix to publish under (i.e. published snapshot name)
50
+ # @param prefix [String] prefix to publish under (i.e. published repo name).
51
+ # This must be escaped (see {Aptly.escape_prefix})
52
+ # @see Aptly.escape_prefix
51
53
  # @return [PublishedRepository] newly published repository
52
54
  def publish(prefix, **kwords)
53
- Aptly.publish([{ Name: self.Name }], prefix, 'snapshot', kwords)
55
+ Aptly.publish([{ Name: self.Name }], prefix, 'snapshot', **kwords)
54
56
  end
55
57
 
56
58
  class << self
data/lib/aptly/tmpname.rb CHANGED
@@ -18,6 +18,8 @@ require 'English'
18
18
  module Aptly
19
19
  # Helper to generate temporary names
20
20
  module TmpName
21
+ # Generate a random temporary directory name.
22
+ # @param prefix [String] arbitrary prefix string to start the name with
21
23
  # @return [String] temporary directory name (only safe characters)
22
24
  def self.dir(prefix)
23
25
  format('%<prefix>s-%<time>s-%<pid>s-%<tid>s-%<rand>s',
data/lib/aptly/version.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  # Aptly API
2
2
  module Aptly
3
- VERSION = '0.9.1'.freeze
3
+ # The loaded version of the gem.
4
+ VERSION = '0.11.0'.freeze
4
5
  end
data/lib/aptly.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2015 Harald Sitter <sitter@kde.org>
1
+ # Copyright (C) 2015-2020 Harald Sitter <sitter@kde.org>
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -26,18 +26,27 @@ require 'aptly/tmpname'
26
26
  # Aptly API
27
27
  module Aptly
28
28
  class << self
29
+ # Configures aptly in a block.
29
30
  def configure
30
31
  yield configuration
31
32
  end
32
33
 
34
+ # The global configuration instance.
33
35
  def configuration
34
36
  @configuration ||= Configuration.new
35
37
  end
36
38
 
39
+ # Convenience shorthand for {Repository#get}.
40
+ # @since 0.10.0
41
+ def repo(name, connection = Connection.new, **kwords)
42
+ Repository.get(name, connection, **kwords)
43
+ end
44
+
37
45
  # Publish 1 or more sources into a public repository prefix.
38
46
  # @param sources [Array<Repository>] array of repositories to source
39
- # @param prefix [String] the prefix to publish under (must be escaped see
40
- # {#escape_prefix})
47
+ # @param prefix [String] prefix to publish under (i.e. published repo name).
48
+ # This must be escaped (see {Aptly.escape_prefix})
49
+ # @see Aptly.escape_prefix
41
50
  # @param source_kind [String] the source kind (local or snapshot)
42
51
  # @return [PublishedRepository] newly published repository
43
52
  def publish(sources, prefix = '', source_kind = 'local',
@@ -60,7 +69,7 @@ module Aptly
60
69
  # @return [String] API-safe prefix notation
61
70
  # @since 0.7.0
62
71
  def escape_prefix(prefix_path)
63
- prefix_path.tr('_', '__').tr('/', '_')
72
+ prefix_path.gsub('_', '__').tr('/', '_')
64
73
  end
65
74
  end
66
75
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aptly-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harald Sitter
8
8
  - Rohan Garg
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2018-02-02 00:00:00.000000000 Z
12
+ date: 2022-05-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -17,28 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '1.10'
20
+ version: '2.0'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '1.10'
28
- - !ruby/object:Gem::Dependency
29
- name: coveralls
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - "~>"
33
- - !ruby/object:Gem::Version
34
- version: '0.8'
35
- type: :development
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - "~>"
40
- - !ruby/object:Gem::Version
41
- version: '0.8'
27
+ version: '2.0'
42
28
  - !ruby/object:Gem::Dependency
43
29
  name: minitest
44
30
  requirement: !ruby/object:Gem::Requirement
@@ -59,14 +45,14 @@ dependencies:
59
45
  requirements:
60
46
  - - "~>"
61
47
  - !ruby/object:Gem::Version
62
- version: '12.0'
48
+ version: '13.0'
63
49
  type: :development
64
50
  prerelease: false
65
51
  version_requirements: !ruby/object:Gem::Requirement
66
52
  requirements:
67
53
  - - "~>"
68
54
  - !ruby/object:Gem::Version
69
- version: '12.0'
55
+ version: '13.0'
70
56
  - !ruby/object:Gem::Dependency
71
57
  name: rake-notes
72
58
  requirement: !ruby/object:Gem::Requirement
@@ -129,28 +115,56 @@ dependencies:
129
115
  requirements:
130
116
  - - "~>"
131
117
  - !ruby/object:Gem::Version
132
- version: '0.9'
118
+ version: '2.0'
133
119
  type: :runtime
134
120
  prerelease: false
135
121
  version_requirements: !ruby/object:Gem::Requirement
136
122
  requirements:
137
123
  - - "~>"
138
124
  - !ruby/object:Gem::Version
139
- version: '0.9'
125
+ version: '2.0'
140
126
  - !ruby/object:Gem::Dependency
141
- name: excon
127
+ name: faraday-multipart
142
128
  requirement: !ruby/object:Gem::Requirement
143
129
  requirements:
144
130
  - - "~>"
145
131
  - !ruby/object:Gem::Version
146
- version: '0.54'
132
+ version: '1.0'
147
133
  type: :runtime
148
134
  prerelease: false
149
135
  version_requirements: !ruby/object:Gem::Requirement
150
136
  requirements:
151
137
  - - "~>"
152
138
  - !ruby/object:Gem::Version
153
- version: '0.54'
139
+ version: '1.0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: faraday-excon
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: '2.0'
147
+ type: :runtime
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: '2.0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: excon
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ type: :runtime
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
154
168
  description: REST client for the Aptly API
155
169
  email:
156
170
  - sitter@kde.org
@@ -186,7 +200,7 @@ homepage: https://github.com/KDEJewellers/aptly-api/
186
200
  licenses:
187
201
  - LGPL-3.0
188
202
  metadata: {}
189
- post_install_message:
203
+ post_install_message:
190
204
  rdoc_options: []
191
205
  require_paths:
192
206
  - lib
@@ -201,9 +215,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
201
215
  - !ruby/object:Gem::Version
202
216
  version: '0'
203
217
  requirements: []
204
- rubyforge_project:
205
- rubygems_version: 2.7.3
206
- signing_key:
218
+ rubygems_version: 3.3.13
219
+ signing_key:
207
220
  specification_version: 4
208
221
  summary: REST client for the Aptly API
209
222
  test_files: []