repomate 0.1.0 → 0.1.1
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/repomate +1 -1
- data/lib/repomate/base.rb +6 -170
- data/lib/repomate/checkpoint.rb +108 -0
- data/lib/repomate/cli.rb +6 -5
- data/lib/repomate/configuration.rb +1 -1
- data/lib/repomate/link.rb +98 -0
- data/lib/repomate.rb +2 -0
- metadata +30 -31
- data/etc/config.yml +0 -18
data/bin/repomate
CHANGED
data/lib/repomate/base.rb
CHANGED
@@ -14,7 +14,9 @@ module RepoMate
|
|
14
14
|
FileUtils.mkdir_p(Cfg.rootdir)
|
15
15
|
|
16
16
|
@repository = Repository.new
|
17
|
+
@checkpoint = Checkpoint.new
|
17
18
|
@metafile = Metafile.new
|
19
|
+
@link = Link.new
|
18
20
|
@cpdbfile = File.join(Cfg.rootdir, "checkpoints.db")
|
19
21
|
@cpdb = Database.new(@cpdbfile)
|
20
22
|
|
@@ -23,9 +25,6 @@ module RepoMate
|
|
23
25
|
puts "\tPlease run \"repomate setup\" first!".hl(:red)
|
24
26
|
puts
|
25
27
|
end
|
26
|
-
|
27
|
-
create_checkpoints_table
|
28
|
-
|
29
28
|
end
|
30
29
|
|
31
30
|
# Add's a package to the staging area
|
@@ -85,7 +84,7 @@ module RepoMate
|
|
85
84
|
end
|
86
85
|
workload = newworkload
|
87
86
|
|
88
|
-
|
87
|
+
@checkpoint.create
|
89
88
|
check_versions(workload)
|
90
89
|
end
|
91
90
|
|
@@ -128,141 +127,12 @@ module RepoMate
|
|
128
127
|
:newbasename => source_package.newbasename
|
129
128
|
}
|
130
129
|
end
|
131
|
-
|
132
|
-
|
133
|
-
link(link_workload)
|
134
|
-
end
|
135
|
-
|
136
|
-
# links the workload
|
137
|
-
def link(workload)
|
138
|
-
action = false
|
139
|
-
|
140
|
-
workload.each do |entry|
|
141
|
-
@repository.create(entry[:suitename], entry[:component], entry[:architecture])
|
142
|
-
unless File.exists?(entry[:destination_fullname])
|
143
|
-
package = Package.new(entry[:source_fullname], entry[:suitename], entry[:component])
|
144
|
-
package.create_checksums
|
145
|
-
|
146
|
-
File.symlink(entry[:source_fullname], entry[:destination_fullname])
|
147
|
-
puts "Package: #{package.newbasename} linked to production => #{entry[:suitename]}/#{entry[:component]}"
|
148
|
-
action = true
|
149
|
-
end
|
150
|
-
end
|
151
|
-
|
152
|
-
if action
|
153
|
-
@metafile.create
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
# unlinks workload
|
158
|
-
def unlink(workload)
|
159
|
-
action = false
|
160
|
-
|
161
|
-
workload.each do |entry|
|
162
|
-
package = Package.new(entry[:destination_fullname], entry[:suitename], entry[:component])
|
163
|
-
package.delete_checksums
|
164
|
-
|
165
|
-
File.unlink(entry[:destination_fullname])
|
166
|
-
puts "Package: #{package.newbasename} unlinked"
|
167
|
-
action = true
|
168
|
-
end
|
169
|
-
|
170
|
-
if action
|
171
|
-
cleandirs
|
172
|
-
@metafile.create
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
# Create the checkpoint table
|
177
|
-
def create_checkpoints_table
|
178
|
-
sql = "create table if not exists checkpoints (
|
179
|
-
date varchar(25),
|
180
|
-
suitename varchar(10),
|
181
|
-
component varchar(10),
|
182
|
-
architecture varchar(10),
|
183
|
-
basename varchar(70)
|
184
|
-
)"
|
185
|
-
@cpdb.query(sql)
|
186
|
-
end
|
187
|
-
|
188
|
-
# Saves a checkpoint
|
189
|
-
def save_checkpoint
|
190
|
-
datetime = DateTime.now
|
191
|
-
source_category = "dists"
|
192
|
-
|
193
|
-
Architecture.dataset(source_category).each do |entry|
|
194
|
-
source = Architecture.new(entry[:architecture], entry[:component], entry[:suitename], source_category)
|
195
|
-
source.files.each do |fullname|
|
196
|
-
basename = File.basename(fullname)
|
197
|
-
@cpdb.query("insert into checkpoints values ( '#{datetime}', '#{entry[:suitename]}', '#{entry[:component]}', '#{entry[:architecture]}', '#{basename}' )")
|
198
|
-
end
|
199
|
-
end
|
200
|
-
|
201
|
-
puts "Checkpoint (#{datetime.strftime("%F %T")}) saved"
|
202
|
-
end
|
203
|
-
|
204
|
-
# Loads a checkpoint
|
205
|
-
def load_checkpoint(number)
|
206
|
-
list = get_checkpoints
|
207
|
-
link_workload = []
|
208
|
-
unlink_workload = []
|
209
|
-
source_category = "dists"
|
210
|
-
|
211
|
-
Architecture.dataset(source_category).each do |entry|
|
212
|
-
destination = Architecture.new(entry[:architecture], entry[:component], entry[:suitename], source_category)
|
213
|
-
destination.files.each do |fullname|
|
214
|
-
unlink_workload << {
|
215
|
-
:destination_fullname => fullname,
|
216
|
-
:component => entry[:component],
|
217
|
-
:suitename => entry[:suitename],
|
218
|
-
:architecture => entry[:architecture]
|
219
|
-
}
|
220
|
-
end
|
221
|
-
end
|
222
|
-
|
223
|
-
@cpdb.query("select date, suitename, component, architecture, basename from checkpoints").each do |row|
|
224
|
-
if row[0] == list[number]
|
225
|
-
suitename = row[1]
|
226
|
-
component = row[2]
|
227
|
-
architecture = row[3]
|
228
|
-
basename = row[4]
|
229
|
-
source = Architecture.new(architecture, component, suitename, "pool")
|
230
|
-
destination = Architecture.new(architecture, component, suitename, "dists")
|
231
|
-
|
232
|
-
link_workload << {
|
233
|
-
:source_fullname => File.join(source.directory, basename),
|
234
|
-
:destination_fullname => File.join(destination.directory, basename),
|
235
|
-
:component => component,
|
236
|
-
:suitename => suitename,
|
237
|
-
:architecture => architecture
|
238
|
-
}
|
239
|
-
end
|
240
|
-
end
|
241
|
-
|
242
|
-
unlink(unlink_workload)
|
243
|
-
link(link_workload)
|
244
|
-
end
|
245
|
-
|
246
|
-
# Returns a list of checkpoints for the cli
|
247
|
-
def get_checkpoints
|
248
|
-
order = 0
|
249
|
-
dates = []
|
250
|
-
list = {}
|
251
|
-
|
252
|
-
@cpdb.query("select date from checkpoints group by date order by date asc").each do |row|
|
253
|
-
dates << row.first
|
254
|
-
end
|
255
|
-
|
256
|
-
dates.each do |date|
|
257
|
-
order += 1
|
258
|
-
list[order] = date
|
259
|
-
end
|
260
|
-
|
261
|
-
list
|
130
|
+
@link.destroy(unlink_workload)
|
131
|
+
@link.create(link_workload)
|
262
132
|
end
|
263
133
|
|
264
134
|
# Returns a list of packages
|
265
|
-
def
|
135
|
+
def list_packages(category)
|
266
136
|
packages = []
|
267
137
|
if category.eql?("stage")
|
268
138
|
Component.dataset(category).each do |entry|
|
@@ -296,40 +166,6 @@ module RepoMate
|
|
296
166
|
end
|
297
167
|
packages
|
298
168
|
end
|
299
|
-
|
300
|
-
# cleans up unused directories
|
301
|
-
def cleandirs
|
302
|
-
action = false
|
303
|
-
|
304
|
-
@repository.categories.each do |category|
|
305
|
-
next if category.eql?("stage")
|
306
|
-
Architecture.dataset(category).each do |entry|
|
307
|
-
directory = Architecture.new(entry[:architecture], entry[:component], entry[:suitename], category)
|
308
|
-
if directory.is_unused?(entry[:fullpath])
|
309
|
-
action = true
|
310
|
-
directory.destroy
|
311
|
-
end
|
312
|
-
end
|
313
|
-
Component.dataset(category).each do |entry|
|
314
|
-
directory = Component.new(entry[:component], entry[:suitename], category)
|
315
|
-
if directory.is_unused?(entry[:fullpath])
|
316
|
-
action = true
|
317
|
-
directory.destroy
|
318
|
-
end
|
319
|
-
end
|
320
|
-
Suite.dataset(category).each do |entry|
|
321
|
-
directory = Suite.new(entry[:suitename], category)
|
322
|
-
if directory.is_unused?(entry[:fullpath])
|
323
|
-
action = true
|
324
|
-
directory.destroy
|
325
|
-
end
|
326
|
-
end
|
327
|
-
end
|
328
|
-
if action
|
329
|
-
puts "Cleaning structure"
|
330
|
-
@metafile.create
|
331
|
-
end
|
332
|
-
end
|
333
169
|
end
|
334
170
|
end
|
335
171
|
|
@@ -0,0 +1,108 @@
|
|
1
|
+
require 'repomate'
|
2
|
+
require 'date'
|
3
|
+
require 'time'
|
4
|
+
|
5
|
+
# RepoMate module
|
6
|
+
module RepoMate
|
7
|
+
|
8
|
+
# Class containing the main logic
|
9
|
+
class Checkpoint
|
10
|
+
|
11
|
+
# Init
|
12
|
+
def initialize
|
13
|
+
@link = Link.new
|
14
|
+
@cpdbfile = File.join(Cfg.rootdir, "checkpoints.db")
|
15
|
+
@cpdb = Database.new(@cpdbfile)
|
16
|
+
|
17
|
+
create_table
|
18
|
+
end
|
19
|
+
|
20
|
+
# Create the checkpoint table
|
21
|
+
def create_table
|
22
|
+
sql = "create table if not exists checkpoints (
|
23
|
+
date varchar(25),
|
24
|
+
suitename varchar(10),
|
25
|
+
component varchar(10),
|
26
|
+
architecture varchar(10),
|
27
|
+
basename varchar(70)
|
28
|
+
)"
|
29
|
+
@cpdb.query(sql)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Saves a checkpoint
|
33
|
+
def create
|
34
|
+
datetime = DateTime.now
|
35
|
+
source_category = "dists"
|
36
|
+
|
37
|
+
Architecture.dataset(source_category).each do |entry|
|
38
|
+
source = Architecture.new(entry[:architecture], entry[:component], entry[:suitename], source_category)
|
39
|
+
source.files.each do |fullname|
|
40
|
+
basename = File.basename(fullname)
|
41
|
+
@cpdb.query("insert into checkpoints values ( '#{datetime}', '#{entry[:suitename]}', '#{entry[:component]}', '#{entry[:architecture]}', '#{basename}' )")
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
puts "Checkpoint (#{datetime.strftime("%F %T")}) saved"
|
46
|
+
end
|
47
|
+
|
48
|
+
# Loads a checkpoint
|
49
|
+
def load(number)
|
50
|
+
cplist = list
|
51
|
+
link_workload = []
|
52
|
+
unlink_workload = []
|
53
|
+
source_category = "dists"
|
54
|
+
|
55
|
+
Architecture.dataset(source_category).each do |entry|
|
56
|
+
destination = Architecture.new(entry[:architecture], entry[:component], entry[:suitename], source_category)
|
57
|
+
destination.files.each do |fullname|
|
58
|
+
unlink_workload << {
|
59
|
+
:destination_fullname => fullname,
|
60
|
+
:component => entry[:component],
|
61
|
+
:suitename => entry[:suitename],
|
62
|
+
:architecture => entry[:architecture]
|
63
|
+
}
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
@cpdb.query("select date, suitename, component, architecture, basename from checkpoints").each do |row|
|
68
|
+
if row[0] == cplist[number]
|
69
|
+
suitename = row[1]
|
70
|
+
component = row[2]
|
71
|
+
architecture = row[3]
|
72
|
+
basename = row[4]
|
73
|
+
source = Architecture.new(architecture, component, suitename, "pool")
|
74
|
+
destination = Architecture.new(architecture, component, suitename, "dists")
|
75
|
+
|
76
|
+
link_workload << {
|
77
|
+
:source_fullname => File.join(source.directory, basename),
|
78
|
+
:destination_fullname => File.join(destination.directory, basename),
|
79
|
+
:component => component,
|
80
|
+
:suitename => suitename,
|
81
|
+
:architecture => architecture
|
82
|
+
}
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
@link.destroy(unlink_workload)
|
87
|
+
@link.create(link_workload)
|
88
|
+
end
|
89
|
+
|
90
|
+
# Returns a list of checkpoints for the cli
|
91
|
+
def list
|
92
|
+
order = 0
|
93
|
+
dates = []
|
94
|
+
list = {}
|
95
|
+
|
96
|
+
@cpdb.query("select date from checkpoints group by date order by date asc").each do |row|
|
97
|
+
dates << row.first
|
98
|
+
end
|
99
|
+
|
100
|
+
dates.each do |date|
|
101
|
+
order += 1
|
102
|
+
list[order] = date
|
103
|
+
end
|
104
|
+
|
105
|
+
list
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
data/lib/repomate/cli.rb
CHANGED
@@ -11,6 +11,7 @@ module RepoMate
|
|
11
11
|
def initialize
|
12
12
|
@repomate = Base.new
|
13
13
|
@repository = Repository.new
|
14
|
+
@checkpoint = Checkpoint.new
|
14
15
|
end
|
15
16
|
|
16
17
|
# Sets up the base directory structure by calling the repository class
|
@@ -67,15 +68,15 @@ module RepoMate
|
|
67
68
|
# Save a checkpoint
|
68
69
|
def save_checkpoint
|
69
70
|
# Add verification and some output here
|
70
|
-
@
|
71
|
+
@checkpoint.create
|
71
72
|
end
|
72
73
|
|
73
74
|
# List all packages, see cli output
|
74
|
-
def
|
75
|
+
def list_packages(options)
|
75
76
|
if options.repodir?
|
76
77
|
architecture = "unknown"
|
77
78
|
|
78
|
-
packages = @repomate.
|
79
|
+
packages = @repomate.list_packages(options[:repodir])
|
79
80
|
packages.each do |package|
|
80
81
|
architecture = package[:architecture] if package[:architecture]
|
81
82
|
printf "%-50s%-20s%s\n", package[:controlfile]['Package'], package[:controlfile]['Version'], "#{package[:suitename]}/#{package[:component]}/#{architecture}"
|
@@ -88,7 +89,7 @@ module RepoMate
|
|
88
89
|
|
89
90
|
# Choose a checkpoint to restore.
|
90
91
|
def choose_checkpoint
|
91
|
-
list = @
|
92
|
+
list = @checkpoint.list
|
92
93
|
|
93
94
|
if list.empty?
|
94
95
|
STDERR.puts "We can't restore because we don't have checkpoints"
|
@@ -115,7 +116,7 @@ Everything between the last two \"publish (-P) commands\" will be lost if you pr
|
|
115
116
|
STDERR.puts "Invalid number"
|
116
117
|
exit 1
|
117
118
|
else
|
118
|
-
@
|
119
|
+
@checkpoint.load(number)
|
119
120
|
end
|
120
121
|
end
|
121
122
|
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
require 'repomate'
|
2
|
+
|
3
|
+
# RepoMate module
|
4
|
+
module RepoMate
|
5
|
+
|
6
|
+
# Class containing the main logic
|
7
|
+
class Link
|
8
|
+
|
9
|
+
# Init
|
10
|
+
def initialize
|
11
|
+
@repository = Repository.new
|
12
|
+
@metafile = Metafile.new
|
13
|
+
end
|
14
|
+
|
15
|
+
def exist?(fullname)
|
16
|
+
File.exists?(fullname)
|
17
|
+
end
|
18
|
+
|
19
|
+
# links the workload
|
20
|
+
def create(workload)
|
21
|
+
action = false
|
22
|
+
|
23
|
+
workload.each do |entry|
|
24
|
+
@repository.create(entry[:suitename], entry[:component], entry[:architecture])
|
25
|
+
|
26
|
+
unless File.exists?(entry[:destination_fullname])
|
27
|
+
package = Package.new(entry[:source_fullname], entry[:suitename], entry[:component])
|
28
|
+
package.create_checksums
|
29
|
+
|
30
|
+
File.symlink(entry[:source_fullname], entry[:destination_fullname])
|
31
|
+
puts "Package: #{package.newbasename} linked to production => #{entry[:suitename]}/#{entry[:component]}"
|
32
|
+
action = true
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
if action
|
37
|
+
@metafile.create
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# unlinks workload
|
42
|
+
def destroy(workload)
|
43
|
+
action = false
|
44
|
+
|
45
|
+
workload.each do |entry|
|
46
|
+
package = Package.new(entry[:destination_fullname], entry[:suitename], entry[:component])
|
47
|
+
package.delete_checksums
|
48
|
+
|
49
|
+
if File.exists?(entry[:destination_fullname])
|
50
|
+
File.unlink(entry[:destination_fullname])
|
51
|
+
puts "Package: #{package.newbasename} unlinked"
|
52
|
+
action = true
|
53
|
+
else
|
54
|
+
puts "Package: #{package.newbasename} was not linked"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
if action
|
59
|
+
cleanup
|
60
|
+
@metafile.create
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# cleans up unused directories
|
65
|
+
def cleanup
|
66
|
+
action = false
|
67
|
+
|
68
|
+
@repository.categories.each do |category|
|
69
|
+
next if category.eql?("stage")
|
70
|
+
Architecture.dataset(category).each do |entry|
|
71
|
+
directory = Architecture.new(entry[:architecture], entry[:component], entry[:suitename], category)
|
72
|
+
if directory.is_unused?(entry[:fullpath])
|
73
|
+
action = true
|
74
|
+
directory.destroy
|
75
|
+
end
|
76
|
+
end
|
77
|
+
Component.dataset(category).each do |entry|
|
78
|
+
directory = Component.new(entry[:component], entry[:suitename], category)
|
79
|
+
if directory.is_unused?(entry[:fullpath])
|
80
|
+
action = true
|
81
|
+
directory.destroy
|
82
|
+
end
|
83
|
+
end
|
84
|
+
Suite.dataset(category).each do |entry|
|
85
|
+
directory = Suite.new(entry[:suitename], category)
|
86
|
+
if directory.is_unused?(entry[:fullpath])
|
87
|
+
action = true
|
88
|
+
directory.destroy
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
if action
|
93
|
+
puts "Cleaning structure"
|
94
|
+
@metafile.create
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
data/lib/repomate.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: repomate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-05-
|
13
|
+
date: 2012-05-12 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: slop
|
17
|
-
requirement: &
|
17
|
+
requirement: &70123941015720 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 3.0.4
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70123941015720
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: gpgme
|
28
|
-
requirement: &
|
28
|
+
requirement: &70123941014540 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 2.0.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70123941014540
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: sqlite3
|
39
|
-
requirement: &
|
39
|
+
requirement: &70123941012640 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 1.3.6
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70123941012640
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: colors
|
50
|
-
requirement: &
|
50
|
+
requirement: &70123941010240 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
@@ -55,7 +55,7 @@ dependencies:
|
|
55
55
|
version: 0.0.6
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70123941010240
|
59
59
|
description: ! "# RepoMate\n\nTool to manage debian repositories.\n\n## This project
|
60
60
|
is really new and not completely tested. Use it at your own risk.\n\n\n## The idea\n\nThe
|
61
61
|
idea was to create a small, leightweight and easy to use debian repository management
|
@@ -71,34 +71,32 @@ description: ! "# RepoMate\n\nTool to manage debian repositories.\n\n## This pro
|
|
71
71
|
to have all what apt needs in just one directory.\n\nnewpackage -> (add) -> stage
|
72
72
|
-> (publish) -> production\n\n\n## Features\n\n### Checkpoints\n\nCheckpoints may
|
73
73
|
help if you accidently published a bunch of packages to the wrong suite (lenny,
|
74
|
-
squeeze,…) or component (main, contrib, non-free,…).\n\nIf you did:\n\n
|
74
|
+
squeeze,…) or component (main, contrib, non-free,…).\n\nIf you did:\n\n repomate
|
75
75
|
load\n\nChoose the last checkpoint and be happy again.\n\nNote that checkpoints
|
76
76
|
will be auto-saved before each publish sequence.\n\n## Installation\n\n### Repository
|
77
77
|
server\n\ndpkg is used to compare package versions. I tried to do it on my own,
|
78
78
|
but debian uses very annoying version strings with a couple of variants.\n\nPlease
|
79
79
|
make sure you have the following packages installed:\n\n* ruby\n* dpkg\n* libsqlite3-dev\n\n####
|
80
|
-
Get RepoMate\n \n
|
81
|
-
\ \n gem install bundler\n bundle install\n \n#### Configure RepoMate\n\nGPG
|
80
|
+
Get RepoMate\n \n gem install repomate\n \n#### Configure RepoMate\n\nGPG
|
82
81
|
ist enabled by default. If you don't want it, just set the value of gpg_enable to
|
83
82
|
\"no\" otherwise generate a gpg key and add the needed values to the configfile.\n\nCreate
|
84
|
-
the config file if you don't want the default configuration.\n \n vi ~/.repomate
|
83
|
+
the config file if you don't want the default configuration.\n \n vi ~/.repomate\n
|
85
84
|
\ \nSample config:\n \n ---\n :rootdir: /var/lib/repomate/repository\n
|
86
|
-
\ :logdir: /var/log/repomate\n :
|
87
|
-
\
|
88
|
-
\
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
\ repomate
|
100
|
-
|
101
|
-
\ repomate listpackages -r stage\n"
|
85
|
+
\ :logdir: /var/log/repomate\n :dpkg: /usr/bin/dpkg\n :suites:\n -
|
86
|
+
lenny\n - squeeze\n :components:\n - main\n - contrib\n
|
87
|
+
\ :architectures:\n - all\n - amd64\n :origin: Repository\n :label:
|
88
|
+
Repository\n :gpg_enable: yes\n :gpg_email: someone@example.net\n :gpg_password:
|
89
|
+
secret\n \n \n#### Configure webserver\n\nConfigure your favorite webserver by
|
90
|
+
adding RepoMate's rootdirectory to a site or vhost.\n\n#### Adding packages\n\n
|
91
|
+
\ repomate add -s squeeze package.deb\n repomate publish\n\n\n### Client\n\nAdd
|
92
|
+
something like this to your machines /etc/apt/sources.list:\n \n deb [arch=all,amd64]
|
93
|
+
http://server/repository squeeze main \n \n\n### Examples\n\nSetup base directory
|
94
|
+
structure (optional):\n\n repomate setup -s squeeze [ -c main ]\n\nAdd a package
|
95
|
+
to the staging area:\n\n repomate add -s squeeze <path_to_packagefile>\n\nPublish
|
96
|
+
all packages from the staging area. That means they will be linked to production:\n\n
|
97
|
+
\ repomate publish\n\nLoad a checkpoint:\n\n repomate load\n\nSave a checkpoint:\n\n
|
98
|
+
\ repomate save\n\nList all packages in pool:\n\n repomate listpackages -r
|
99
|
+
pool\n\nList all packages in stage:\n\n repomate listpackages -r stage\n"
|
102
100
|
email:
|
103
101
|
- flo@doobie.cc
|
104
102
|
- michael.ehrenreich@me.com
|
@@ -108,14 +106,15 @@ extensions: []
|
|
108
106
|
extra_rdoc_files: []
|
109
107
|
files:
|
110
108
|
- bin/repomate
|
111
|
-
- etc/config.yml
|
112
109
|
- lib/repomate/architecture.rb
|
113
110
|
- lib/repomate/base.rb
|
114
111
|
- lib/repomate/category.rb
|
112
|
+
- lib/repomate/checkpoint.rb
|
115
113
|
- lib/repomate/cli.rb
|
116
114
|
- lib/repomate/component.rb
|
117
115
|
- lib/repomate/configuration.rb
|
118
116
|
- lib/repomate/database.rb
|
117
|
+
- lib/repomate/link.rb
|
119
118
|
- lib/repomate/metafile.rb
|
120
119
|
- lib/repomate/package.rb
|
121
120
|
- lib/repomate/repository.rb
|
data/etc/config.yml
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
---
|
2
|
-
:rootdir: /var/lib/repomate/repository
|
3
|
-
:logdir: /var/log/repomate
|
4
|
-
:dpkg: /usr/bin/dpkg
|
5
|
-
:suites:
|
6
|
-
- lenny
|
7
|
-
- squeeze
|
8
|
-
:components:
|
9
|
-
- main
|
10
|
-
- contrib
|
11
|
-
:architectures:
|
12
|
-
- all
|
13
|
-
- amd64
|
14
|
-
:origin: Repository
|
15
|
-
:label: Repository
|
16
|
-
:gpg_enable: yes
|
17
|
-
:gpg_email: someone@example.net
|
18
|
-
:gpg_password: secret
|