aptly-api 0.3.0 → 0.4.0
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 +4 -4
- data/.rubocop.yml +3 -0
- data/aptly-api.gemspec +1 -1
- data/lib/aptly/connection.rb +1 -1
- data/lib/aptly/errors.rb +3 -0
- data/lib/aptly/publish.rb +14 -1
- data/lib/aptly/publishable.rb +26 -0
- data/lib/aptly/repository.rb +12 -25
- data/lib/aptly/snapshot.rb +3 -1
- data/lib/aptly/version.rb +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4780f4046bb039881a21ccaf84875a3a1ace1b13
|
4
|
+
data.tar.gz: 930424d21df245e34f9748995bba0b54422b924e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cbe5dc685508f22ec9bd6fbe4d9557ebd2fbcf4e12e43a7eb6c5cd04e85f80b7f62ef2194a1c2ece5507a6621dfa9179adeee9fcf034882dd6fdf59486d23298
|
7
|
+
data.tar.gz: ee604d080ccb11341dd95bac7b43cd9c25686d9bb640e80772e80e4442a3b1c1d02101090cdfba731b76d1ce3a0714e7d34508be6028d2bc9826dc44e853d02a
|
data/.rubocop.yml
ADDED
data/aptly-api.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_development_dependency 'rake', '~> 11.0'
|
26
26
|
spec.add_development_dependency 'rake-notes', '~> 0.2'
|
27
27
|
spec.add_development_dependency 'simplecov', '~> 0.11'
|
28
|
-
spec.add_development_dependency 'webmock', '~> 1
|
28
|
+
spec.add_development_dependency 'webmock', '~> 2.1'
|
29
29
|
spec.add_development_dependency 'yard', '~> 0.8'
|
30
30
|
|
31
31
|
spec.add_dependency 'faraday', '~> 0.9'
|
data/lib/aptly/connection.rb
CHANGED
@@ -26,7 +26,7 @@ module Aptly
|
|
26
26
|
@query = kwords.fetch(:query, DEFAULT_QUERY)
|
27
27
|
|
28
28
|
uri = ::Aptly.configuration.uri
|
29
|
-
@connection = Faraday.new(
|
29
|
+
@connection = Faraday.new(uri.to_s) do |c|
|
30
30
|
c.request :multipart
|
31
31
|
c.request :url_encoded
|
32
32
|
c.adapter :net_http
|
data/lib/aptly/errors.rb
CHANGED
@@ -19,6 +19,9 @@ module Aptly
|
|
19
19
|
# Raised when a request returns code 500.
|
20
20
|
class ServerError < HTTPError; end
|
21
21
|
|
22
|
+
# Raised when a Snapshot consists of a unknown source type
|
23
|
+
class UnknownSourceTypeError < StandardError; end
|
24
|
+
|
22
25
|
# Raised when a file operation had an error.
|
23
26
|
class RepositoryFileError < StandardError
|
24
27
|
# @!attribute [r] failures
|
data/lib/aptly/publish.rb
CHANGED
@@ -8,7 +8,7 @@ module Aptly
|
|
8
8
|
class PublishedRepository < Representation
|
9
9
|
def initialize(*args)
|
10
10
|
super(*args)
|
11
|
-
|
11
|
+
parse_sources
|
12
12
|
end
|
13
13
|
|
14
14
|
# Drops a published repository. This removes the published repository
|
@@ -51,5 +51,18 @@ module Aptly
|
|
51
51
|
def api_prefix
|
52
52
|
self.Prefix.tr('_', '__').tr('/', '_')
|
53
53
|
end
|
54
|
+
|
55
|
+
def parse_sources
|
56
|
+
self.Sources.collect! do |s|
|
57
|
+
case self.SourceKind
|
58
|
+
when 'local'
|
59
|
+
Repository.new(connection, s)
|
60
|
+
when 'snapshot'
|
61
|
+
Snapshot.new(connection, s)
|
62
|
+
else
|
63
|
+
raise Aptly::Errors::UnknownSourceTypeError
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
54
67
|
end
|
55
68
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Aptly
|
2
|
+
module Publishable
|
3
|
+
# Lists all PublishedRepositories self is published in. Namely self must
|
4
|
+
# be a source of the published repository in order for it to appear here.
|
5
|
+
# This method always returns an array of affected published repositories.
|
6
|
+
# If you use this method with a block it will additionally yield each
|
7
|
+
# published repository that would appear in the array, making it a shorthand
|
8
|
+
# for {Array#each}.
|
9
|
+
# @yieldparam pub [PublishedRepository]
|
10
|
+
# @return [Array<PublishedRepository>]
|
11
|
+
def published_in
|
12
|
+
Aptly::PublishedRepository.list(connection).select do |pub|
|
13
|
+
next false unless pub.Sources.any? do |src|
|
14
|
+
src.Name == self.Name
|
15
|
+
end
|
16
|
+
yield pub if block_given?
|
17
|
+
true
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# @return [Boolean]
|
22
|
+
def published?
|
23
|
+
!published_in.empty?
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/aptly/repository.rb
CHANGED
@@ -4,11 +4,14 @@ require 'tmpdir'
|
|
4
4
|
require_relative 'errors'
|
5
5
|
require_relative 'representation'
|
6
6
|
require_relative 'snapshot'
|
7
|
+
require_relative 'publishable'
|
7
8
|
|
8
9
|
module Aptly
|
9
10
|
# Aptly repository representation.
|
10
11
|
# @see http://www.aptly.info/doc/api/repos/
|
11
12
|
class Repository < Representation
|
13
|
+
include Publishable
|
14
|
+
|
12
15
|
# Delete this repository.
|
13
16
|
def delete(**kwords)
|
14
17
|
connection.send(:delete, "/repos/#{self.Name}", query: kwords)
|
@@ -78,29 +81,6 @@ module Aptly
|
|
78
81
|
Aptly.publish([{ Name: self.Name }], prefix, 'local', kwords)
|
79
82
|
end
|
80
83
|
|
81
|
-
# @return [Boolean]
|
82
|
-
def published?
|
83
|
-
!published_in.empty?
|
84
|
-
end
|
85
|
-
|
86
|
-
# Lists all PublishedRepositories self is published in. Namely self must
|
87
|
-
# be a source of the published repository in order for it to appear here.
|
88
|
-
# This method always returns an array of affected published repositories.
|
89
|
-
# If you use this method with a block it will additionally yield each
|
90
|
-
# published repository that would appear in the array, making it a shorthand
|
91
|
-
# for {Array#each}.
|
92
|
-
# @yieldparam pub [PublishedRepository]
|
93
|
-
# @return [Array<PublishedRepository>]
|
94
|
-
def published_in
|
95
|
-
Aptly::PublishedRepository.list(connection).select do |pub|
|
96
|
-
next false unless pub.Sources.any? do |src|
|
97
|
-
src.Name == self.Name
|
98
|
-
end
|
99
|
-
yield pub if block_given?
|
100
|
-
true
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
84
|
# Edit this repository's attributes as per the parameters.
|
105
85
|
# @note this possibly mutates the attributes depending on the HTTP response
|
106
86
|
# @return [self] if the instance data was mutated
|
@@ -116,9 +96,16 @@ module Aptly
|
|
116
96
|
end
|
117
97
|
|
118
98
|
# Creates a new {Snapshot}
|
99
|
+
# @param name [String] name of snapshot
|
119
100
|
# @return {Snapshot} newly created instance
|
120
|
-
def snapshot(**kwords)
|
121
|
-
|
101
|
+
def snapshot(name = nil, **kwords)
|
102
|
+
# TODO: 1.0
|
103
|
+
if name.nil? && !kwords.key?(:Name)
|
104
|
+
# backwards compatible handling allows name to be passed though
|
105
|
+
# kwords or the argument. Argument is preferred.
|
106
|
+
raise ArgumentError, 'wrong number of arguments (given 0, expected 1)'
|
107
|
+
end
|
108
|
+
kwords[:Name] = name unless name.nil?
|
122
109
|
response = connection.send(:post, "/repos/#{self.Name}/snapshots",
|
123
110
|
body: JSON.generate(kwords))
|
124
111
|
Aptly::Snapshot.new(::Aptly::Connection.new, JSON.parse(response.body))
|
data/lib/aptly/snapshot.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
require_relative 'representation'
|
2
|
+
require_relative 'publishable'
|
2
3
|
|
3
4
|
module Aptly
|
4
5
|
# Aptly snapshots representation.
|
5
6
|
# @see http://www.aptly.info/doc/api/snapshots/
|
6
7
|
class Snapshot < Representation
|
8
|
+
include Publishable
|
9
|
+
|
7
10
|
# Updates this snapshot
|
8
11
|
# @return [self] if the instance data was mutated
|
9
12
|
# @return [nil] if the instance data was not mutated
|
@@ -50,7 +53,6 @@ module Aptly
|
|
50
53
|
Aptly.publish([{ Name: self.Name }], prefix, 'snapshot', kwords)
|
51
54
|
end
|
52
55
|
|
53
|
-
|
54
56
|
class << self
|
55
57
|
# List all known snapshots.
|
56
58
|
# @param connection [Connection] connection to use for the instance
|
data/lib/aptly/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aptly-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Harald Sitter
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '1
|
103
|
+
version: '2.1'
|
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
|
-
version: '1
|
110
|
+
version: '2.1'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: yard
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -144,6 +144,7 @@ extensions: []
|
|
144
144
|
extra_rdoc_files: []
|
145
145
|
files:
|
146
146
|
- ".gitignore"
|
147
|
+
- ".rubocop.yml"
|
147
148
|
- ".travis.yml"
|
148
149
|
- CODE_OF_CONDUCT.md
|
149
150
|
- COPYING.lib
|
@@ -160,6 +161,7 @@ files:
|
|
160
161
|
- lib/aptly/errors.rb
|
161
162
|
- lib/aptly/files.rb
|
162
163
|
- lib/aptly/publish.rb
|
164
|
+
- lib/aptly/publishable.rb
|
163
165
|
- lib/aptly/repository.rb
|
164
166
|
- lib/aptly/representation.rb
|
165
167
|
- lib/aptly/snapshot.rb
|