repomate 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/bin/repomate CHANGED
@@ -57,7 +57,7 @@ elsif ARGV.include?("save")
57
57
  elsif ARGV.include?("load")
58
58
  cli.choose_checkpoint
59
59
  elsif ARGV.include?("listpackages")
60
- cli.list_packagelist(options)
60
+ cli.list_packages(options)
61
61
  elsif ARGV.include?("setup")
62
62
  cli.setup(options)
63
63
  else
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
- save_checkpoint
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
- unlink(unlink_workload)
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 get_packagelist(category)
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
- @repomate.save_checkpoint
71
+ @checkpoint.create
71
72
  end
72
73
 
73
74
  # List all packages, see cli output
74
- def list_packagelist(options)
75
+ def list_packages(options)
75
76
  if options.repodir?
76
77
  architecture = "unknown"
77
78
 
78
- packages = @repomate.get_packagelist(options[:repodir])
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 = @repomate.get_checkpoints
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
- @repomate.load_checkpoint(number)
119
+ @checkpoint.load(number)
119
120
  end
120
121
  end
121
122
  end
@@ -35,7 +35,7 @@ module RepoMate
35
35
  :architectures => [ "all", "amd64" ],
36
36
  :origin => 'Repository',
37
37
  :label => 'Repository',
38
- :gpg_enable => 'yes',
38
+ :gpg_enable => 'no',
39
39
  :gpg_email => 'someone@example.net',
40
40
  :gpg_password => 'secret',
41
41
  }
@@ -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
@@ -11,4 +11,6 @@ require 'repomate/metafile'
11
11
  require 'repomate/package'
12
12
  require 'repomate/repository'
13
13
  require 'repomate/suite'
14
+ require 'repomate/link'
15
+ require 'repomate/checkpoint'
14
16
 
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.0
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-11 00:00:00.000000000Z
13
+ date: 2012-05-12 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: slop
17
- requirement: &70364475911480 !ruby/object:Gem::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: *70364475911480
25
+ version_requirements: *70123941015720
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: gpgme
28
- requirement: &70364475910880 !ruby/object:Gem::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: *70364475910880
36
+ version_requirements: *70123941014540
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: sqlite3
39
- requirement: &70364475910280 !ruby/object:Gem::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: *70364475910280
47
+ version_requirements: *70123941012640
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: colors
50
- requirement: &70364475909740 !ruby/object:Gem::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: *70364475909740
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 sbin/repomate
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 cd /opt\n git clone git@github.com:floriansp/repomate.git\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.yml\n
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 :redolog: redo.log\n :database: repomate.db\n
87
- \ :dpkg: /usr/bin/dpkg\n :suites:\n - lenny\n - squeeze\n :components:\n
88
- \ - main\n - contrib\n :architectures:\n - all\n -
89
- amd64\n :origin: Repository\n :label: Repository\n :gpg_enable: yes\n :gpg_email:
90
- someone@example.net\n :gpg_password: secret\n \n \n#### Configure webserver\n\nConfigure
91
- your favorite webserver by adding RepoMate's rootdirectory to a site or vhost.\n\n####
92
- Adding packages\n\n sbin/repomate add -s squeeze package.deb\n sbin/repomate
93
- publish\n\n\n### Client\n\nAdd something like this to your machines /etc/apt/sources.list:\n
94
- \ \n deb [arch=all,amd64] http://server/repository squeeze main \n \n\n###
95
- Examples\n\nSetup base directory structure (optional):\n\n repomate setup -s
96
- squeeze [ -c main ]\n\nAdd a package to the staging area:\n\n repomate add -s
97
- squeeze <path_to_packagefile>\n\nPublish all packages from the staging area. That
98
- means they will be linked to production:\n\n repomate publish\n\nLoad a checkpoint:\n\n
99
- \ repomate load\n\nSave a checkpoint:\n\n repomate save\n\nList all packages
100
- in pool:\n\n repomate listpackages -r pool\n\nList all packages in stage:\n\n
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