dr 0.0.3 → 0.0.4
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.
- data/bin/dr +10 -17
- data/lib/dr/buildroot.rb +1 -1
- data/lib/dr/debpackage.rb +22 -6
- data/lib/dr/gitpackage.rb +0 -9
- data/lib/dr/package.rb +10 -0
- data/lib/dr/pkgversion.rb +1 -2
- data/lib/dr/repo.rb +30 -17
- data/lib/dr/version.rb +1 -1
- metadata +2 -2
data/bin/dr
CHANGED
@@ -107,36 +107,36 @@ class RepoCLI < ExtendedThor
|
|
107
107
|
:codenames => []
|
108
108
|
}
|
109
109
|
|
110
|
-
name = ask "
|
110
|
+
name = ask " Repository name "<< "[#{repo_conf[:name].fg("yellow")}]:"
|
111
111
|
repo_conf[:name] = name if name.length > 0
|
112
112
|
|
113
|
-
desc = ask "
|
113
|
+
desc = ask " Description [#{repo_conf[:desc]}]:"
|
114
114
|
repo_conf[:desc] = desc if desc.length > 0
|
115
115
|
|
116
|
-
arches = ask "
|
116
|
+
arches = ask " Architectures [#{repo_conf[:arches].join(" ").fg("yellow")}]:"
|
117
117
|
repo_conf[:arches] = arches.split /\s+/ if arches.length > 0
|
118
118
|
|
119
|
-
components = ask "
|
119
|
+
components = ask " Components [#{repo_conf[:components].join(" ").fg("yellow")}]:"
|
120
120
|
repo_conf[:components] = components.split /\s+/ if components.length > 0
|
121
121
|
|
122
122
|
repo_conf[:gpg_name] = ""
|
123
123
|
while repo_conf[:gpg_name].length == 0
|
124
|
-
repo_conf[:gpg_name] = ask "
|
124
|
+
repo_conf[:gpg_name] = ask " Cert owner name (#{"required".fg("red")}):"
|
125
125
|
repo_conf[:gpg_name].strip!
|
126
126
|
end
|
127
127
|
|
128
128
|
repo_conf[:gpg_mail] = ""
|
129
129
|
while repo_conf[:gpg_mail].length == 0
|
130
|
-
repo_conf[:gpg_mail] = ask "
|
130
|
+
repo_conf[:gpg_mail] = ask " Cert owner e-mail (#{"required".fg("red")}):"
|
131
131
|
repo_conf[:gpg_mail].strip!
|
132
132
|
end
|
133
133
|
|
134
|
-
print "
|
134
|
+
print " Passphrase (#{"optional".fg("green")}): "
|
135
135
|
repo_conf[:gpg_pass] = STDIN.noecho(&:gets).chomp
|
136
136
|
print "\n"
|
137
137
|
|
138
138
|
repo_conf[:suites].each do |s|
|
139
|
-
codename = ask "
|
139
|
+
codename = ask " Codename for '#{s.fg("yellow")}':"
|
140
140
|
repo_conf[:codenames].push codename
|
141
141
|
end
|
142
142
|
|
@@ -149,7 +149,7 @@ class RepoCLI < ExtendedThor
|
|
149
149
|
:desc => "Add source package managed in a git repo"
|
150
150
|
method_option :deb, :aliases => "-d",
|
151
151
|
:desc => "Add a prebuilt binary deb package only"
|
152
|
-
method_option :force, :aliases => "-f",
|
152
|
+
method_option :force, :aliases => "-f", :type => :boolean,
|
153
153
|
:desc => "Proceed even if the package already exists"
|
154
154
|
method_option :branch, :aliases => "-b",
|
155
155
|
:desc => "Set a default branch other than master (valid only with --git)"
|
@@ -163,18 +163,12 @@ class RepoCLI < ExtendedThor
|
|
163
163
|
|
164
164
|
Dr::GitPackage::setup repo, options["git"], branch
|
165
165
|
when options.has_key?("deb")
|
166
|
-
Dr::DebPackage::setup repo, options["deb"]
|
166
|
+
Dr::DebPackage::setup repo, options["deb"], options["force"]
|
167
167
|
else
|
168
168
|
raise ArgumentError, "Either --git or --deb must be specified"
|
169
169
|
end
|
170
170
|
end
|
171
171
|
|
172
|
-
# drepo build [pkg-name] --branch [topic-branch]
|
173
|
-
# drepo build [pkg-name] --branch [topic-branch] --push [suite] -f
|
174
|
-
#
|
175
|
-
# - The old script basically
|
176
|
-
# - Change versions to date stamps
|
177
|
-
# - Add support for scratch suite builds
|
178
172
|
desc "build [pkg-name]", "build a package from the sources"
|
179
173
|
method_option :branch, :aliases => "-b", :type => :string,
|
180
174
|
:desc => "build from a different branch"
|
@@ -203,7 +197,6 @@ class RepoCLI < ExtendedThor
|
|
203
197
|
end
|
204
198
|
end
|
205
199
|
|
206
|
-
# drepo push [pkg-name] -f --suite X --version Y
|
207
200
|
desc "push [pkg-name]", "push a built package to a specified suite"
|
208
201
|
method_option :suite, :aliases => "-s", :type => :string,
|
209
202
|
:desc => "the target suite (defaults to testing)"
|
data/lib/dr/buildroot.rb
CHANGED
data/lib/dr/debpackage.rb
CHANGED
@@ -2,17 +2,27 @@ require "dr/package"
|
|
2
2
|
|
3
3
|
module Dr
|
4
4
|
class DebPackage < Package
|
5
|
-
def self.setup(repo, deb_file)
|
6
|
-
|
7
|
-
src_name =
|
5
|
+
def self.setup(repo, deb_file, force=false)
|
6
|
+
dpkg = ShellCmd.new "dpkg-deb --field #{deb_file} Source", :tag => "dpkg"
|
7
|
+
src_name = dpkg.out.chomp
|
8
8
|
if src_name == ""
|
9
|
-
|
9
|
+
dpkg = ShellCmd.new "dpkg-deb --field #{deb_file} Package", :tag => "dpkg"
|
10
|
+
src_name = dpkg.out.chomp
|
10
11
|
end
|
11
|
-
puts "Source package: #{src_name}"
|
12
12
|
|
13
|
-
|
13
|
+
log :info, "Adding the #{File.basename(deb_file).fg("blue")} package"
|
14
|
+
|
15
|
+
dpkg = ShellCmd.new "dpkg-deb --field #{deb_file} Version", :tag => "dpkg"
|
16
|
+
version = dpkg.out.chomp
|
14
17
|
|
15
18
|
deb_dir = "#{repo.location}/packages/#{src_name}/builds/#{version}"
|
19
|
+
|
20
|
+
if File.exists?("#{deb_dir}/#{File.basename deb_file}") && !force
|
21
|
+
raise "This deb file is already in the repo"
|
22
|
+
end
|
23
|
+
|
24
|
+
log :info, "Adding a build to the #{src_name.fg "blue"} source package"
|
25
|
+
|
16
26
|
FileUtils.mkdir_p deb_dir
|
17
27
|
FileUtils.cp "#{deb_file}", "#{deb_dir}/"
|
18
28
|
end
|
@@ -20,5 +30,11 @@ module Dr
|
|
20
30
|
def initialize(name, repo)
|
21
31
|
super name, repo
|
22
32
|
end
|
33
|
+
|
34
|
+
def build(branch=nil, force=false)
|
35
|
+
log :warn, "The source of the #{@name.fg "blue"} package is not " +
|
36
|
+
"managed by #{"dr".bright}"
|
37
|
+
raise "Unable to build the package"
|
38
|
+
end
|
23
39
|
end
|
24
40
|
end
|
data/lib/dr/gitpackage.rb
CHANGED
@@ -174,15 +174,6 @@ EOS
|
|
174
174
|
version
|
175
175
|
end
|
176
176
|
|
177
|
-
def build_exists?(version)
|
178
|
-
File.directory? "#{@repo.location}/packages/#{@name}/builds/#{version}"
|
179
|
-
end
|
180
|
-
|
181
|
-
def remove_build(version)
|
182
|
-
raise "Build #{version.fg("blue")} not found" unless build_exists? version
|
183
|
-
FileUtils.rm_rf "#{@repo.location}/packages/#{@name}/builds/#{version}"
|
184
|
-
end
|
185
|
-
|
186
177
|
private
|
187
178
|
def update_from_origin(branch)
|
188
179
|
log :info, "Pulling changes from origin"
|
data/lib/dr/package.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "dr/logger"
|
2
|
+
require "dr/shellcmd"
|
2
3
|
|
3
4
|
module Dr
|
4
5
|
class Package
|
@@ -22,5 +23,14 @@ module Dr
|
|
22
23
|
|
23
24
|
versions.sort.reverse
|
24
25
|
end
|
26
|
+
|
27
|
+
def build_exists?(version)
|
28
|
+
File.directory? "#{@repo.location}/packages/#{@name}/builds/#{version}"
|
29
|
+
end
|
30
|
+
|
31
|
+
def remove_build(version)
|
32
|
+
raise "Build #{version.fg("blue")} not found" unless build_exists? version
|
33
|
+
FileUtils.rm_rf "#{@repo.location}/packages/#{@name}/builds/#{version}"
|
34
|
+
end
|
25
35
|
end
|
26
36
|
end
|
data/lib/dr/pkgversion.rb
CHANGED
data/lib/dr/repo.rb
CHANGED
@@ -46,7 +46,7 @@ module Dr
|
|
46
46
|
f.puts "Codename: #{conf[:codenames][i]}"
|
47
47
|
end
|
48
48
|
|
49
|
-
if conf[:name]
|
49
|
+
if conf[:name].length > 0
|
50
50
|
f.puts "Origin: #{conf[:name]} - #{s}"
|
51
51
|
f.puts "Label: #{conf[:name]} - #{s}"
|
52
52
|
end
|
@@ -150,7 +150,7 @@ module Dr
|
|
150
150
|
versions[suite] = {}
|
151
151
|
reprepro_cmd = "reprepro --basedir #{location}/archive " +
|
152
152
|
"--list-format '${package} ${version}\n' " +
|
153
|
-
"listfilter #{suite} 'Source (==
|
153
|
+
"listfilter #{suite} 'Source (== #{pkg_name})' " +
|
154
154
|
"2>/dev/null"
|
155
155
|
reprepro = ShellCmd.new reprepro_cmd, :tag => "reprepro"
|
156
156
|
reprepro.out.chomp.each_line do |line|
|
@@ -170,7 +170,7 @@ module Dr
|
|
170
170
|
end
|
171
171
|
else
|
172
172
|
if pkg.history.length == 0
|
173
|
-
log :err, "
|
173
|
+
log :err, "No built packages available for #{pkg_name}"
|
174
174
|
log :err, "Please, run a build first and the push."
|
175
175
|
raise "Push failed"
|
176
176
|
end
|
@@ -186,11 +186,19 @@ module Dr
|
|
186
186
|
suite = "testing"
|
187
187
|
end
|
188
188
|
|
189
|
-
|
190
|
-
|
191
|
-
|
189
|
+
debs = Dir["#{@location}/packages/#{pkg.name}/builds/#{version}/*"]
|
190
|
+
names = debs.map { |deb| File.basename(deb).split("_")[0] }
|
191
|
+
|
192
|
+
used_versions = get_subpackage_versions(pkg.name)[to_suite(suite)]
|
193
|
+
|
194
|
+
is_of_higher_version = true
|
195
|
+
names.each do |name|
|
196
|
+
if used_versions.has_key?(name) && version <= used_versions[name]
|
197
|
+
is_of_higher_version = false
|
198
|
+
end
|
199
|
+
end
|
192
200
|
|
193
|
-
|
201
|
+
unless is_of_higher_version
|
194
202
|
log :warn, "Version #{version.fg("blue")} already available in #{suite}"
|
195
203
|
if force
|
196
204
|
reprepro = "reprepro -b #{@location}/archive " +
|
@@ -204,7 +212,6 @@ module Dr
|
|
204
212
|
end
|
205
213
|
|
206
214
|
log :info, "Pushing #{pkg_name} version #{version} to #{suite}"
|
207
|
-
debs = Dir["#{@location}/packages/#{pkg.name}/builds/#{version}/*"]
|
208
215
|
reprepro = "reprepro -b #{@location}/archive " +
|
209
216
|
"--gnupghome #{location}/gnupg-keyring/ includedeb " +
|
210
217
|
"#{suite} #{debs.join " "}"
|
@@ -232,20 +239,18 @@ module Dr
|
|
232
239
|
pkg = get_package pkg_name
|
233
240
|
|
234
241
|
if is_used? pkg_name
|
235
|
-
log :warn, "
|
236
|
-
raise "
|
242
|
+
log :warn, "The #{pkg_name.fg "blue"} package is still used"
|
243
|
+
raise "Operation canceled, add -f to remove anyway" unless force
|
237
244
|
|
238
245
|
log :info, "Will be force-removed anyway"
|
239
|
-
|
240
|
-
|
241
|
-
unpush pkg_name, suite[
|
246
|
+
versions = get_subpackage_versions(pkg_name)
|
247
|
+
get_suites.each do |suite, codename|
|
248
|
+
unpush pkg_name, suite unless versions[suite].empty?
|
242
249
|
end
|
243
250
|
end
|
244
251
|
|
245
|
-
|
246
|
-
|
247
|
-
FileUtils.rm_rf "#{location}/packages/#{pkg_name}"
|
248
|
-
end
|
252
|
+
log :info, "Removing #{pkg_name} from the repository"
|
253
|
+
FileUtils.rm_rf "#{location}/packages/#{pkg_name}"
|
249
254
|
end
|
250
255
|
|
251
256
|
def remove_build(pkg_name, version, force=false)
|
@@ -296,5 +301,13 @@ module Dr
|
|
296
301
|
end
|
297
302
|
end
|
298
303
|
end
|
304
|
+
|
305
|
+
def to_suite(codename_or_suite)
|
306
|
+
get_suites.each do |suite, codename|
|
307
|
+
return suite if codename_or_suite == suite || codename_or_suite == codename
|
308
|
+
end
|
309
|
+
|
310
|
+
nil
|
311
|
+
end
|
299
312
|
end
|
300
313
|
end
|
data/lib/dr/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-03-
|
12
|
+
date: 2014-03-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|