zypper-upgraderepo 1.0.2 → 1.5.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/.github/FUNDING.yml +13 -0
- data/Gemfile.lock +19 -19
- data/README.md +7 -3
- data/lib/zypper/upgraderepo.rb +72 -24
- data/lib/zypper/upgraderepo/cli.rb +82 -15
- data/lib/zypper/upgraderepo/os_release.rb +5 -2
- data/lib/zypper/upgraderepo/repository.rb +119 -77
- data/lib/zypper/upgraderepo/request.rb +42 -0
- data/lib/zypper/upgraderepo/requests/http.rb +131 -0
- data/lib/zypper/upgraderepo/requests/local.rb +94 -0
- data/lib/zypper/upgraderepo/traversable.rb +93 -0
- data/lib/zypper/upgraderepo/utils.rb +78 -27
- data/lib/zypper/upgraderepo/version.rb +1 -1
- data/lib/zypper/upgraderepo/view.rb +249 -0
- data/zypper-upgraderepo.gemspec +19 -19
- metadata +16 -10
@@ -0,0 +1,249 @@
|
|
1
|
+
module Zypper
|
2
|
+
module Upgraderepo
|
3
|
+
|
4
|
+
module View
|
5
|
+
|
6
|
+
class Report
|
7
|
+
|
8
|
+
def self.available(num, repo, max_col)
|
9
|
+
puts " #{num.to_s.rjust(2).bold.green} | Status: #{'Ok'.bold.green}"
|
10
|
+
puts " #{' ' * 2} | Hint: Unversioned repository" if repo.unversioned? && repo.old_url
|
11
|
+
self.info(repo)
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.redirected(num, repo, max_col, redirected)
|
15
|
+
puts " #{num.to_s.rjust(2).bold.yellow} | Status: #{'Redirected'.bold.yellow}"
|
16
|
+
puts " #{' ' * 2} | #{'To:'.bold.yellow} #{redirected}"
|
17
|
+
self.info(repo)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.not_found(num, repo, max_col)
|
21
|
+
puts " #{num.to_s.rjust(2).bold.red} | Status: #{'Not Found'.bold.red}"
|
22
|
+
self.info(repo)
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.alternative(num, repo, max_col, alt)
|
26
|
+
puts " #{num.to_s.rjust(2).bold.red} | Status: #{'Not Found'.bold.red}"
|
27
|
+
puts " #{' ' * 2} | Hint: #{alt[:message].bold.yellow}"
|
28
|
+
puts " #{' ' * 2} | #{'Suggested:'.bold.yellow} #{alt[:url]}" unless alt[:url].to_s.empty?
|
29
|
+
self.info(repo)
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.timeout(num, repo, max_col)
|
33
|
+
puts " #{num.to_s.rjust(2).bold.yellow} | Status: #{'Server Timeout'.bold.yellow}"
|
34
|
+
self.info(repo)
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.upgraded(num, repo, max_col)
|
38
|
+
puts " #{num.to_s.rjust(2).bold.green} | #{'Upgraded'.bold.green}"
|
39
|
+
self.info(repo)
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.untouched(num, repo, max_col)
|
43
|
+
puts " #{num.to_s.rjust(2).bold.yellow} | #{'Untouched'.bold.yellow}"
|
44
|
+
self.info(repo)
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.separator
|
48
|
+
puts '-' * 90
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.header(max_col, upgrade = false)
|
52
|
+
puts " # | Report"
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.footer
|
56
|
+
self.separator
|
57
|
+
end
|
58
|
+
|
59
|
+
|
60
|
+
private
|
61
|
+
|
62
|
+
def self.info(repo)
|
63
|
+
puts " #{ ' ' * 2 } | Name: #{repo.name} #{repo.upgraded?(:name) ? '(' + repo.old_name.yellow + ')' : '' }"
|
64
|
+
puts " #{ ' ' * 2 } | Alias: #{repo.alias} #{repo.upgraded?(:alias) ? '(' + repo.old_alias.yellow + ')' : ''}"
|
65
|
+
puts " #{ ' ' * 2 } | Url: #{repo.url}"
|
66
|
+
puts " #{ ' ' * 2 } | (#{repo.old_url.yellow})" if repo.upgraded?
|
67
|
+
puts " #{ ' ' * 2 } | Priority: #{repo.priority}"
|
68
|
+
puts " #{ ' ' * 2 } | #{repo.enabled? ? 'Enabled: Yes' : 'Enabled: No'.yellow}"
|
69
|
+
puts " #{ ' ' * 2 } | Filename: #{repo.filename}"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
class Table
|
75
|
+
|
76
|
+
def self.available(num, repo, max_col)
|
77
|
+
if repo.unversioned? && repo.old_url
|
78
|
+
Messages.ok("| #{num.to_s.rjust(2)} | #{repo.name.ljust(max_col, ' ')} | #{repo.enabled? ? ' Y ' : ' N '.yellow} | Unversioned repository")
|
79
|
+
else
|
80
|
+
Messages.ok("| #{num.to_s.rjust(2)} | #{repo.name.ljust(max_col, ' ')} | #{repo.enabled? ? ' Y ' : ' N '.yellow} |")
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def self.redirected(num, repo, max_col, redirected)
|
85
|
+
Messages.warning("| #{num.to_s.rjust(2)} | #{repo.name.ljust(max_col, ' ')} | #{repo.enabled? ? ' Y ' : ' N '.yellow} | #{'Redirection'.bold.yellow} of #{repo.url} ")
|
86
|
+
puts " #{' ' * 3} | #{' ' * 2} | #{ ' ' * max_col} | #{ ' ' * 3 } | #{'To:'.bold.yellow} #{redirected}"
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.not_found(num, repo, max_col)
|
90
|
+
Messages.error("| #{num.to_s.rjust(2)} | #{repo.name.ljust(max_col, ' ')} | #{repo.enabled? ? ' Y ' : ' N '.yellow} |")
|
91
|
+
end
|
92
|
+
|
93
|
+
def self.alternative(num, repo, max_col, alt)
|
94
|
+
Messages.error("| #{num.to_s.rjust(2)} | #{repo.name.ljust(max_col, ' ')} | #{repo.enabled? ? ' Y ' : ' N '.yellow} | #{alt[:message].bold.yellow}")
|
95
|
+
puts " #{' ' * 3} | #{' ' * 2} | #{' ' * max_col} | #{' ' * 3} | #{alt[:url]}" unless alt[:url].to_s.empty?
|
96
|
+
end
|
97
|
+
|
98
|
+
def self.timeout(num, repo, max_col)
|
99
|
+
Messages.error("| #{num.to_s.rjust(2)} | #{repo.name.ljust(max_col, ' ')} | #{repo.enabled? ? ' Y ' : ' N '.yellow} | #{'Server Timeout'.bold.yellow}")
|
100
|
+
end
|
101
|
+
|
102
|
+
def self.upgraded(num, repo, max_col) #, old_data)
|
103
|
+
Messages.ok("| #{num.to_s.rjust(2)} | #{repo.name.ljust(max_col, ' ')} | #{repo.enabled? ? ' Y ' : ' N '.yellow} | #{'From:'.bold.green} #{repo.old_url}")
|
104
|
+
puts " #{' ' * 3} | #{' ' * 2} | #{' ' * max_col} | #{' ' * 3} | #{'To:'.bold.green} #{repo.url}"
|
105
|
+
end
|
106
|
+
|
107
|
+
def self.untouched(num, repo, max_col)
|
108
|
+
Messages.warning("| #{num.to_s.rjust(2)} | #{repo.name.ljust(max_col, ' ')} | #{repo.enabled? ? ' Y ' : ' N '.yellow} | #{'Untouched:'.bold.yellow} #{repo.old_url}")
|
109
|
+
end
|
110
|
+
|
111
|
+
def self.separator
|
112
|
+
puts '-' * 90
|
113
|
+
end
|
114
|
+
|
115
|
+
def self.header(max_col, upgrade = false)
|
116
|
+
puts " St. | # | #{'Name'.ljust(max_col, ' ')} | En. | #{upgrade ? 'Details' : 'Hint' }"
|
117
|
+
end
|
118
|
+
|
119
|
+
def self.footer
|
120
|
+
self.separator
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
|
125
|
+
class Quiet
|
126
|
+
|
127
|
+
def self.available(num, repo, max_col)
|
128
|
+
end
|
129
|
+
|
130
|
+
def self.redirected(num, repo, max_col, redirected)
|
131
|
+
end
|
132
|
+
|
133
|
+
def self.not_found(num, repo, max_col)
|
134
|
+
end
|
135
|
+
|
136
|
+
def self.alternative(num, repo, max_col, alt)
|
137
|
+
end
|
138
|
+
|
139
|
+
def self.timeout(num, repo, max_col)
|
140
|
+
end
|
141
|
+
|
142
|
+
def self.upgraded(num, repo, max_col) #, old_data)
|
143
|
+
end
|
144
|
+
|
145
|
+
def self.untouched(num, repo, max_col)
|
146
|
+
end
|
147
|
+
|
148
|
+
def self.separator
|
149
|
+
end
|
150
|
+
|
151
|
+
def self.header(max_col, upgrade = false)
|
152
|
+
end
|
153
|
+
|
154
|
+
def self.footer
|
155
|
+
end
|
156
|
+
|
157
|
+
end
|
158
|
+
|
159
|
+
|
160
|
+
class Ini
|
161
|
+
|
162
|
+
def self.available(num, repo, max_col)
|
163
|
+
self.info num, 'Ok', repo
|
164
|
+
end
|
165
|
+
|
166
|
+
def self.redirected(num, repo, max_col, redirected)
|
167
|
+
self.info num, 'Redirected', repo, false
|
168
|
+
puts "redirected_to=#{redirected}"
|
169
|
+
end
|
170
|
+
|
171
|
+
def self.not_found(num, repo, max_col)
|
172
|
+
self.info num, 'Not Found', repo, false
|
173
|
+
end
|
174
|
+
|
175
|
+
def self.alternative(num, repo, max_col, alt)
|
176
|
+
self.info num, 'Not Found', repo, false
|
177
|
+
puts "hint=#{alt[:message]}"
|
178
|
+
puts "suggested_url=#{alt[:url]}" unless alt[:url].to_s.empty?
|
179
|
+
end
|
180
|
+
|
181
|
+
def self.timeout(num, repo, max_col)
|
182
|
+
self.info num, 'Server Timeout', repo, false
|
183
|
+
end
|
184
|
+
|
185
|
+
def self.upgraded(num, repo, max_col)
|
186
|
+
self.info num, 'Upgraded', repo
|
187
|
+
end
|
188
|
+
|
189
|
+
def self.untouched(num, repo, max_col)
|
190
|
+
self.info num, 'Untouched', repo
|
191
|
+
end
|
192
|
+
|
193
|
+
def self.separator
|
194
|
+
puts ''
|
195
|
+
end
|
196
|
+
|
197
|
+
def self.header(max_col, upgrade = false)
|
198
|
+
end
|
199
|
+
|
200
|
+
def self.footer
|
201
|
+
end
|
202
|
+
|
203
|
+
|
204
|
+
private
|
205
|
+
|
206
|
+
def self.info(num, status, repo, valid = true)
|
207
|
+
@@number = num
|
208
|
+
puts "[repository_#{num}]"
|
209
|
+
puts "name=#{repo.name}"
|
210
|
+
puts "alias=#{repo.alias}"
|
211
|
+
puts "old_url=#{repo.old_url}" if repo.upgraded?
|
212
|
+
if valid
|
213
|
+
if repo.unversioned? && repo.old_url
|
214
|
+
puts <<-'HEADER'.gsub(/^ +/, '')
|
215
|
+
# The repository is unversioned: its packages should be perfectly
|
216
|
+
# working regardless the distribution version, that because all the
|
217
|
+
# required dependencies are included in the repository itself and
|
218
|
+
# automatically picked up.
|
219
|
+
HEADER
|
220
|
+
end
|
221
|
+
puts "url=#{repo.url}"
|
222
|
+
elsif repo.enabled?
|
223
|
+
puts <<-'HEADER'.gsub(/^ +/, '')
|
224
|
+
# The interpolated URL is invalid, try overriding with the one suggested
|
225
|
+
# in the fields below or find it manually starting from the old_url.
|
226
|
+
# The alternatives are:
|
227
|
+
# 1. Waiting for a repository upgrade;
|
228
|
+
# 2. Change the provider for the related installed packages;
|
229
|
+
# 3. Disable the repository putting the enabled status to 'No'.
|
230
|
+
#
|
231
|
+
url=
|
232
|
+
HEADER
|
233
|
+
else
|
234
|
+
puts <<-'HEADER'.gsub(/^ +/, '')
|
235
|
+
# The interpolated URL is invalid, but being the repository disabled you can
|
236
|
+
# keep the old_url in the field below, it will be ignored anyway during the
|
237
|
+
# normal update and upgrade process.
|
238
|
+
HEADER
|
239
|
+
puts "url=#{repo.old_url}"
|
240
|
+
end
|
241
|
+
puts "priority=#{repo.priority}"
|
242
|
+
puts "enabled=#{repo.enabled? ? 'Yes' : 'No'}"
|
243
|
+
puts "status=#{status}"
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
end
|
248
|
+
end
|
249
|
+
end
|
data/zypper-upgraderepo.gemspec
CHANGED
@@ -1,40 +1,40 @@
|
|
1
1
|
|
2
2
|
lib = File.expand_path("../lib", __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
4
|
+
require 'zypper/upgraderepo/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'zypper-upgraderepo'
|
8
8
|
spec.version = Zypper::Upgraderepo::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['Fabio Mucciante']
|
10
|
+
spec.email = ['fabio.mucciante@gmail.com']
|
11
11
|
|
12
12
|
spec.summary = %q{Zypper addon to check and upgrade local repositories.}
|
13
13
|
spec.description = %q{This is just a complement to zypper command which helps to upgrade the local repositories before executing zypper dup.}
|
14
|
-
spec.homepage =
|
15
|
-
spec.license =
|
14
|
+
spec.homepage = 'https://github.com/fabiomux/zypper-upgraderepo'
|
15
|
+
spec.license = 'GPL-3.0'
|
16
16
|
|
17
17
|
spec.metadata = {
|
18
|
-
"bug_tracker_uri" =>
|
19
|
-
|
18
|
+
"bug_tracker_uri" => 'https://github.com/fabiomux/zypper-upgraderepo/issues',
|
19
|
+
"changelog_uri" => 'https://freeaptitude.altervista.org/projects/zypper-upgraderepo.html#changelogs',
|
20
20
|
"documentation_uri" => "https://www.rubydoc.info/gems/zypper-upgraderepo/#{spec.version}",
|
21
|
-
"homepage_uri" =>
|
22
|
-
#"mailing_list_uri" =>
|
23
|
-
"source_code_uri" =>
|
24
|
-
"wiki_uri" =>
|
21
|
+
"homepage_uri" => 'https://freeaptitude.altervista.org/projects/zypper-upgraderepo.html',
|
22
|
+
#"mailing_list_uri" => '',
|
23
|
+
"source_code_uri" => 'https://github.com/fabiomux/zypper-upgraderepo',
|
24
|
+
"wiki_uri" => 'https://github.com/fabiomux/zypper-upgraderepo/wiki'
|
25
25
|
}
|
26
26
|
|
27
27
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
28
28
|
f.match(%r{^(test|spec|features)/})
|
29
29
|
end
|
30
|
-
spec.bindir =
|
30
|
+
spec.bindir = 'exe'
|
31
31
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
32
|
-
spec.require_paths = [
|
32
|
+
spec.require_paths = ['lib']
|
33
33
|
|
34
|
-
spec.add_development_dependency
|
35
|
-
spec.add_development_dependency
|
36
|
-
spec.add_development_dependency
|
34
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
35
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
36
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
37
37
|
|
38
|
-
spec.add_runtime_dependency
|
39
|
-
spec.add_runtime_dependency
|
38
|
+
spec.add_runtime_dependency 'iniparse'
|
39
|
+
spec.add_runtime_dependency 'minitar'
|
40
40
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zypper-upgraderepo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fabio Mucciante
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '2.0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '2.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -89,6 +89,7 @@ executables:
|
|
89
89
|
extensions: []
|
90
90
|
extra_rdoc_files: []
|
91
91
|
files:
|
92
|
+
- ".github/FUNDING.yml"
|
92
93
|
- ".gitignore"
|
93
94
|
- ".rspec"
|
94
95
|
- ".travis.yml"
|
@@ -105,16 +106,22 @@ files:
|
|
105
106
|
- lib/zypper/upgraderepo/cli.rb
|
106
107
|
- lib/zypper/upgraderepo/os_release.rb
|
107
108
|
- lib/zypper/upgraderepo/repository.rb
|
109
|
+
- lib/zypper/upgraderepo/request.rb
|
110
|
+
- lib/zypper/upgraderepo/requests/http.rb
|
111
|
+
- lib/zypper/upgraderepo/requests/local.rb
|
112
|
+
- lib/zypper/upgraderepo/traversable.rb
|
108
113
|
- lib/zypper/upgraderepo/utils.rb
|
109
114
|
- lib/zypper/upgraderepo/version.rb
|
115
|
+
- lib/zypper/upgraderepo/view.rb
|
110
116
|
- zypper-upgraderepo.gemspec
|
111
117
|
homepage: https://github.com/fabiomux/zypper-upgraderepo
|
112
118
|
licenses:
|
113
119
|
- GPL-3.0
|
114
120
|
metadata:
|
115
121
|
bug_tracker_uri: https://github.com/fabiomux/zypper-upgraderepo/issues
|
116
|
-
|
117
|
-
|
122
|
+
changelog_uri: https://freeaptitude.altervista.org/projects/zypper-upgraderepo.html#changelogs
|
123
|
+
documentation_uri: https://www.rubydoc.info/gems/zypper-upgraderepo/1.5.0
|
124
|
+
homepage_uri: https://freeaptitude.altervista.org/projects/zypper-upgraderepo.html
|
118
125
|
source_code_uri: https://github.com/fabiomux/zypper-upgraderepo
|
119
126
|
wiki_uri: https://github.com/fabiomux/zypper-upgraderepo/wiki
|
120
127
|
post_install_message:
|
@@ -132,8 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
132
139
|
- !ruby/object:Gem::Version
|
133
140
|
version: '0'
|
134
141
|
requirements: []
|
135
|
-
|
136
|
-
rubygems_version: 2.7.7
|
142
|
+
rubygems_version: 3.0.8
|
137
143
|
signing_key:
|
138
144
|
specification_version: 4
|
139
145
|
summary: Zypper addon to check and upgrade local repositories.
|