enhancerepo 0.4.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.
Files changed (87) hide show
  1. data/CHANGELOG.rdoc +18 -0
  2. data/Manifest.txt +85 -0
  3. data/README +10 -0
  4. data/README.rdoc +15 -0
  5. data/Rakefile +48 -0
  6. data/TODO.rdoc +4 -0
  7. data/bin/enhancerepo +4 -0
  8. data/lib/enhance_repo.rb +36 -0
  9. data/lib/enhance_repo/cli.rb +150 -0
  10. data/lib/enhance_repo/config_opts.rb +98 -0
  11. data/lib/enhance_repo/logger.rb +67 -0
  12. data/lib/enhance_repo/other.rb +80 -0
  13. data/lib/enhance_repo/package_id.rb +81 -0
  14. data/lib/enhance_repo/product_id.rb +30 -0
  15. data/lib/enhance_repo/rpm_md.rb +27 -0
  16. data/lib/enhance_repo/rpm_md/data.rb +55 -0
  17. data/lib/enhance_repo/rpm_md/delta_info.rb +205 -0
  18. data/lib/enhance_repo/rpm_md/extra_primary_data.rb +45 -0
  19. data/lib/enhance_repo/rpm_md/file_lists.rb +81 -0
  20. data/lib/enhance_repo/rpm_md/index.rb +144 -0
  21. data/lib/enhance_repo/rpm_md/other.rb +69 -0
  22. data/lib/enhance_repo/rpm_md/primary.rb +123 -0
  23. data/lib/enhance_repo/rpm_md/products.rb +142 -0
  24. data/lib/enhance_repo/rpm_md/repo.rb +202 -0
  25. data/lib/enhance_repo/rpm_md/resource.rb +44 -0
  26. data/lib/enhance_repo/rpm_md/suse_data.rb +191 -0
  27. data/lib/enhance_repo/rpm_md/suse_info.rb +88 -0
  28. data/lib/enhance_repo/rpm_md/update.rb +141 -0
  29. data/lib/enhance_repo/rpm_md/update_info.rb +244 -0
  30. data/lib/enhance_repo/rpm_md/update_smart_fields.rb +127 -0
  31. data/lib/enhance_repo/xml_comparer.rb +117 -0
  32. data/lib/tempdir.rb +62 -0
  33. data/lib/tempdir/tempfile.rb +21 -0
  34. data/test/all_tests.rb +27 -0
  35. data/test/data/packages/a-1.0.spec +19 -0
  36. data/test/data/packages/a-2.0.spec +24 -0
  37. data/test/data/repodata/update-test-11.1/filelists.xml.gz +0 -0
  38. data/test/data/repodata/update-test-11.1/other.xml.gz +0 -0
  39. data/test/data/repodata/update-test-11.1/primary.xml.gz +0 -0
  40. data/test/data/repodata/update-test-11.1/repomd.xml +21 -0
  41. data/test/data/repomd.xml +21 -0
  42. data/test/data/rpms/repo-1/a-1.0-0.x86_64.rpm +0 -0
  43. data/test/data/rpms/repo-1/a-1.0_2.0-0_0.x86_64.delta.rpm +0 -0
  44. data/test/data/rpms/repo-1/a-2.0-0.x86_64.rpm +0 -0
  45. data/test/data/rpms/repo-1/repodata/deltainfo.xml.gz +0 -0
  46. data/test/data/rpms/repo-1/repodata/deltainfo.xml.gz.gz +0 -0
  47. data/test/data/rpms/repo-1/repodata/filelists.xml.gz +0 -0
  48. data/test/data/rpms/repo-1/repodata/other.xml.gz +0 -0
  49. data/test/data/rpms/repo-1/repodata/primary.xml.gz +0 -0
  50. data/test/data/rpms/repo-1/repodata/repomd.xml +45 -0
  51. data/test/data/rpms/repo-1/repodata/susedata.xml.gz +0 -0
  52. data/test/data/rpms/repo-1/repodata/updateinfo.xml.gz +0 -0
  53. data/test/data/rpms/repo-1/repoparts/update-a-1.xml +22 -0
  54. data/test/data/rpms/repo-with-product/a-1.0-0.x86_64.rpm +0 -0
  55. data/test/data/rpms/repo-with-product/openSUSE-release-11.2-1.6.i586.rpm +0 -0
  56. data/test/data/rpms/repo-with-product/openSUSE-release-dvd-11.2-1.6.i586.rpm +0 -0
  57. data/test/data/rpms/repo-with-product/repodata/filelists.xml.gz +0 -0
  58. data/test/data/rpms/repo-with-product/repodata/other.xml.gz +0 -0
  59. data/test/data/rpms/repo-with-product/repodata/primary.xml.gz +0 -0
  60. data/test/data/rpms/repo-with-product/repodata/products.xml.gz +0 -0
  61. data/test/data/rpms/repo-with-product/repodata/repomd.xml +27 -0
  62. data/test/data/rpms/update-test-11.1/update-test-affects-package-manager.rpm +0 -0
  63. data/test/data/rpms/update-test-11.1/update-test-interactive.rpm +0 -0
  64. data/test/data/rpms/update-test-11.1/update-test-optional.rpm +0 -0
  65. data/test/data/rpms/update-test-11.1/update-test-reboot-needed.rpm +0 -0
  66. data/test/data/rpms/update-test-11.1/update-test-security.rpm +0 -0
  67. data/test/data/rpms/update-test-11.1/update-test-trival.rpm +0 -0
  68. data/test/data/rpms/update-test-factory/update-test-affects-package-manager-0-9999.1.2.noarch.rpm +0 -0
  69. data/test/data/rpms/update-test-factory/update-test-interactive-0-9999.1.2.noarch.rpm +0 -0
  70. data/test/data/rpms/update-test-factory/update-test-optional-0-9999.1.2.noarch.rpm +0 -0
  71. data/test/data/rpms/update-test-factory/update-test-reboot-needed-0-9999.1.2.noarch.rpm +0 -0
  72. data/test/data/rpms/update-test-factory/update-test-relogin-suggested-0-9999.1.2.noarch.rpm +0 -0
  73. data/test/data/rpms/update-test-factory/update-test-security-0-9999.1.2.noarch.rpm +0 -0
  74. data/test/deltainfo_test.rb +50 -0
  75. data/test/extensions_test.rb +31 -0
  76. data/test/index_test.rb +51 -0
  77. data/test/primary_test.rb +51 -0
  78. data/test/products_test.rb +51 -0
  79. data/test/repo_test.rb +72 -0
  80. data/test/repomdindex_test.rb +58 -0
  81. data/test/rpmmd_test.rb +60 -0
  82. data/test/susedata_test.rb +53 -0
  83. data/test/tempdir_test.rb +62 -0
  84. data/test/test_helper.rb +53 -0
  85. data/test/update_test.rb +80 -0
  86. data/test/updateinfo_test.rb +59 -0
  87. metadata +267 -0
data/CHANGELOG.rdoc ADDED
@@ -0,0 +1,18 @@
1
+
2
+ == 0.4 (not released)
3
+
4
+ * improved logger support
5
+ * --split-updates, patch by Jordi Massaguer Pla
6
+ * primary data generation (EXPERIMENTAL)
7
+ * allows to generate metadata to a separate directory
8
+ * product metadata generation extracted from *-release rpm packages
9
+ * benchmark feature
10
+ * speed improvements
11
+
12
+ == 0.3.2
13
+
14
+ * patch generation support
15
+
16
+ == 0.3.1
17
+
18
+ * deltarpm support
data/Manifest.txt ADDED
@@ -0,0 +1,85 @@
1
+ lib/enhance_repo.rb
2
+ lib/tempdir/tempfile.rb
3
+ lib/enhance_repo/xml_comparer.rb
4
+ lib/enhance_repo/rpm_md.rb
5
+ lib/enhance_repo/package_id.rb
6
+ lib/enhance_repo/rpm_md/update.rb
7
+ lib/enhance_repo/rpm_md/suse_data.rb
8
+ lib/enhance_repo/rpm_md/primary.rb
9
+ lib/enhance_repo/rpm_md/resource.rb
10
+ lib/enhance_repo/rpm_md/data.rb
11
+ lib/enhance_repo/rpm_md/delta_info.rb
12
+ lib/enhance_repo/rpm_md/suse_info.rb
13
+ lib/enhance_repo/rpm_md/other.rb
14
+ lib/enhance_repo/rpm_md/index.rb
15
+ lib/enhance_repo/rpm_md/update_smart_fields.rb
16
+ lib/enhance_repo/rpm_md/update_info.rb
17
+ lib/enhance_repo/rpm_md/file_lists.rb
18
+ lib/enhance_repo/rpm_md/repo.rb
19
+ lib/enhance_repo/rpm_md/products.rb
20
+ lib/enhance_repo/rpm_md/extra_primary_data.rb
21
+ lib/enhance_repo/other.rb
22
+ lib/enhance_repo/cli.rb
23
+ lib/enhance_repo/product_id.rb
24
+ lib/enhance_repo/logger.rb
25
+ lib/enhance_repo/config_opts.rb
26
+ lib/tempdir.rb
27
+ test/repo_test.rb
28
+ test/susedata_test.rb
29
+ test/updateinfo_test.rb
30
+ test/tempdir_test.rb
31
+ test/products_test.rb
32
+ test/primary_test.rb
33
+ test/rpmmd_test.rb
34
+ test/test_helper.rb
35
+ test/repomdindex_test.rb
36
+ test/all_tests.rb
37
+ test/index_test.rb
38
+ test/deltainfo_test.rb
39
+ test/extensions_test.rb
40
+ test/update_test.rb
41
+ test/data/rpms/repo-1/repodata/susedata.xml.gz
42
+ test/data/rpms/repo-1/repodata/filelists.xml.gz
43
+ test/data/rpms/repo-1/repodata/deltainfo.xml.gz.gz
44
+ test/data/rpms/repo-1/repodata/deltainfo.xml.gz
45
+ test/data/rpms/repo-1/repodata/other.xml.gz
46
+ test/data/rpms/repo-1/repodata/updateinfo.xml.gz
47
+ test/data/rpms/repo-1/repodata/repomd.xml
48
+ test/data/rpms/repo-1/repodata/primary.xml.gz
49
+ test/data/rpms/repo-1/a-1.0-0.x86_64.rpm
50
+ test/data/rpms/repo-1/a-2.0-0.x86_64.rpm
51
+ test/data/rpms/repo-1/a-1.0_2.0-0_0.x86_64.delta.rpm
52
+ test/data/rpms/repo-1/repoparts/update-a-1.xml
53
+ test/data/rpms/repo-with-product/repodata/filelists.xml.gz
54
+ test/data/rpms/repo-with-product/repodata/products.xml.gz
55
+ test/data/rpms/repo-with-product/repodata/other.xml.gz
56
+ test/data/rpms/repo-with-product/repodata/repomd.xml
57
+ test/data/rpms/repo-with-product/repodata/primary.xml.gz
58
+ test/data/rpms/repo-with-product/a-1.0-0.x86_64.rpm
59
+ test/data/rpms/repo-with-product/openSUSE-release-11.2-1.6.i586.rpm
60
+ test/data/rpms/repo-with-product/openSUSE-release-dvd-11.2-1.6.i586.rpm
61
+ test/data/rpms/update-test-factory/update-test-reboot-needed-0-9999.1.2.noarch.rpm
62
+ test/data/rpms/update-test-factory/update-test-security-0-9999.1.2.noarch.rpm
63
+ test/data/rpms/update-test-factory/update-test-affects-package-manager-0-9999.1.2.noarch.rpm
64
+ test/data/rpms/update-test-factory/update-test-interactive-0-9999.1.2.noarch.rpm
65
+ test/data/rpms/update-test-factory/update-test-relogin-suggested-0-9999.1.2.noarch.rpm
66
+ test/data/rpms/update-test-factory/update-test-optional-0-9999.1.2.noarch.rpm
67
+ test/data/rpms/update-test-11.1/update-test-trival.rpm
68
+ test/data/rpms/update-test-11.1/update-test-optional.rpm
69
+ test/data/rpms/update-test-11.1/update-test-security.rpm
70
+ test/data/rpms/update-test-11.1/update-test-reboot-needed.rpm
71
+ test/data/rpms/update-test-11.1/update-test-affects-package-manager.rpm
72
+ test/data/rpms/update-test-11.1/update-test-interactive.rpm
73
+ test/data/repodata/update-test-11.1/filelists.xml.gz
74
+ test/data/repodata/update-test-11.1/other.xml.gz
75
+ test/data/repodata/update-test-11.1/repomd.xml
76
+ test/data/repodata/update-test-11.1/primary.xml.gz
77
+ test/data/packages/a-2.0.spec
78
+ test/data/packages/a-1.0.spec
79
+ test/data/repomd.xml
80
+ Rakefile
81
+ README
82
+ README.rdoc
83
+ CHANGELOG.rdoc
84
+ bin/enhancerepo
85
+ Manifest.txt
data/README ADDED
@@ -0,0 +1,10 @@
1
+
2
+ enhancerepo
3
+
4
+ Author: Duncan Mac-Vicar P. <dmacvicar@suse.de>
5
+
6
+ Reference implementation for future rpmmd extensions
7
+
8
+ For more visit: http://en.opensuse.org/Enhancerepo
9
+
10
+ requires ruby-rpm.
data/README.rdoc ADDED
@@ -0,0 +1,15 @@
1
+
2
+ = enhancerepo
3
+
4
+ * http://en.opensuse.org/Enhancerepo
5
+
6
+ == Introduction
7
+
8
+ Reference implementation for future rpmmd extensions
9
+
10
+ requires ruby-rpm.
11
+
12
+ == Authors
13
+
14
+ * Duncan Mac-Vicar P. <dmacvicar@suse.de>
15
+
data/Rakefile ADDED
@@ -0,0 +1,48 @@
1
+ $: << File.join(File.dirname(__FILE__), "test")
2
+ require 'rubygems'
3
+ gem 'hoe', '>= 2.1.0'
4
+ require 'hoe'
5
+
6
+ task :default => [:docs, :test]
7
+
8
+ Hoe.plugin :yard
9
+
10
+ HOE = Hoe.spec 'enhancerepo' do
11
+ developer('Duncan Mac-Vicar P.', 'dmacvicar@suse.de')
12
+ # s.homepage = "http://en.opensuse.org/Enhancerepo"
13
+ self.summary = "Adds additional information to repomd repositories"
14
+ self.description = "enhancerepo adds additional metadata to repommd repositories and
15
+ servers as the testbed for the specification"
16
+ self.readme_file = ['README', ENV['HLANG'], 'rdoc'].compact.join('.')
17
+ self.history_file = ['CHANGELOG', ENV['HLANG'], 'rdoc'].compact.join('.')
18
+ self.extra_rdoc_files = FileList['*.rdoc']
19
+
20
+ self.extra_deps << ['trollop', '>= 1.0.5']
21
+ self.extra_deps << ['log4r', '>= 1.0.5']
22
+ self.extra_deps << ['nokogiri', '>= 1.4']
23
+ self.extra_deps << ['activesupport', '>= 2.3']
24
+
25
+ self.extra_dev_deps << ['shoulda', '>= 0']
26
+ self.extra_dev_deps << ['mocha', '>= 0']
27
+ self.extra_dev_deps << ['yard', '>= 0']
28
+ end
29
+
30
+ desc "Insert GPL into all source files"
31
+ task :GPL do
32
+ gpl = File.readlines('GPL_header.txt')
33
+ FileList['**/*.rb'].each do |filename|
34
+ File.open(filename, 'r+') do |file|
35
+ lines = file.readlines
36
+ # Skip shebang line
37
+ i = (lines[0].index('#!') == 0) ? 1 : 0
38
+ # Already have header?
39
+ next if lines[i].index('#--') == 0
40
+
41
+ puts "Liberating #{filename}"
42
+
43
+ file.pos = 0
44
+ file.print lines.insert(i, gpl).flatten
45
+ file.truncate(file.pos)
46
+ end
47
+ end
48
+ end
data/TODO.rdoc ADDED
@@ -0,0 +1,4 @@
1
+
2
+ * replace accessors and initialization with ActiveSupport's
3
+ attr_accessor_with_default
4
+
data/bin/enhancerepo ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ $: << '../lib'
3
+ $: << 'lib'
4
+ require 'enhance_repo/cli.rb'
@@ -0,0 +1,36 @@
1
+ #--
2
+ #
3
+ # enhancerepo is a rpm-md repository metadata tool.
4
+ # Copyright (C) 2008, 2009 Novell Inc.
5
+ # Author: Duncan Mac-Vicar P. <dmacvicar@suse.de>
6
+ #
7
+ # This program is free software; you can redistribute it and/or modify
8
+ # it under the terms of the GNU General Public License as published by
9
+ # the Free Software Foundation; either version 2 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with this program; if not, write to the Free Software
19
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20
+ # MA 02110-1301, USA. A copy of the GNU General Public License is
21
+ # also available at http://www.gnu.org/copyleft/gpl.html.
22
+ #
23
+ #++
24
+ #
25
+ module EnhanceRepo
26
+ VERSION = "0.4.1"
27
+ end
28
+
29
+ lib = File.dirname(__FILE__)
30
+
31
+ require File.join(lib, 'enhance_repo', 'logger.rb')
32
+ require File.join(lib, 'enhance_repo', 'config_opts.rb')
33
+ require File.join(lib, 'enhance_repo', 'rpm_md.rb')
34
+
35
+
36
+
@@ -0,0 +1,150 @@
1
+ #--
2
+ #
3
+ # enhancerepo is a rpm-md repository metadata tool.
4
+ # Copyright (C) 2008, 2009 Novell Inc.
5
+ # Author: Duncan Mac-Vicar P. <dmacvicar@suse.de>
6
+ #
7
+ # This program is free software; you can redistribute it and/or modify
8
+ # it under the terms of the GNU General Public License as published by
9
+ # the Free Software Foundation; either version 2 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with this program; if not, write to the Free Software
19
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20
+ # MA 02110-1301, USA. A copy of the GNU General Public License is
21
+ # also available at http://www.gnu.org/copyleft/gpl.html.
22
+ #
23
+ #++
24
+ #
25
+ require 'rubygems'
26
+ require 'trollop'
27
+ require 'enhance_repo'
28
+ require 'pathname'
29
+ require 'benchmark'
30
+ require 'fileutils'
31
+
32
+ EnhanceRepo::enable_logger
33
+
34
+ opts = Trollop::options do
35
+ version "enhancerepo #{EnhanceRepo::VERSION}"
36
+ banner <<-EOS
37
+ enhancerepo is a rpm-md metadata tool
38
+
39
+ Usage:
40
+ enhancerepo [options] DIR
41
+
42
+ DIR: The repo base directory ( where repodata/ directory is located )
43
+ EOS
44
+ opt :help, 'Show help'
45
+ opt :outputdir, 'Generate metadata to a different directory', :short => :o
46
+ opt :index, "Reindex the metadata and regenerates repomd.xml, even if nothing was changed using enhancerepo. Use this if you did manual changes to the metadata", :short => :x
47
+ opt :benchmark, 'Show benchmark statistics at the end'
48
+
49
+ opt :primary, 'Add data from rpm files and generate primary.xml (EXPERIMENTAL)', :short => :p
50
+ opt :sign, 'Generates signature for the repository using key keyid', :short => :s, :type => :string
51
+ opt :updates, 'Add updates from *.updates files and generate updateinfo.xml', :short => :u
52
+ opt :generate_update, 'Generates an update from the given package list comparing package\'s last version changes', :type => :strings
53
+ opt :updates_base_dir, 'Looks for package also in <dir> Useful if you keep old packages in a different repos and updates in this one.', :type => :string
54
+ opt :split_updates, 'Splits current updateinfo.xml into update parts files in repoparts/'
55
+ opt :indent, 'Generate indented xml. Default: no', :short => :i
56
+
57
+ opt :expire, 'Set repository expiration hint (Can be used to detect dead mirrors)', :type => :date, :short => :e
58
+ opt :repo_product, 'Adds product compatibility information', :type => :strings
59
+ opt :repo_keyword, 'Tags repository with keyword', :type => :strings
60
+
61
+ # === SUSE specific package data (susedata.xml)
62
+
63
+ opt :eulas, 'Reads packagename.eula files and add the information to susedata.xml', :short => :l
64
+ opt :keywords, 'Reads packagename.keywords files and add keyword metadata to susedata.xml', :short => :k
65
+ opt :disk_usage, 'Reads rpm packages, generates disk usage information on susedata.xml', :short => :d
66
+
67
+ # Note: your .eula or .keywords file will be added to
68
+ # a package if it matches its name. If you want to add
69
+ # the attributes to a specific package, name the file
70
+ # name-version, name-version-release or
71
+ # name-version-release.arch
72
+
73
+ # === Package deltas support
74
+ opt :'create-deltas',
75
+ 'Create [num] deltas for different versions of a package. If there is foo-1.rpm, foo-2.rpm, foo-3.rpm, foo-4.rpm num=1 will create a delta to go from version 3 to 4, while num=2 will create one from 2 to 4 too. This does not index the deltas. Use --deltas for that.', :default => 1
76
+ opt :deltas, 'Reads all *.delta.rpm files and add the information to deltainfo.xml. This indexes existing deltas, but won\'t create them. See --create-deltas for deltas creation.'
77
+
78
+ # === Product information support
79
+
80
+ opt :products, 'Reads release packages and generating product information in products.xml based on the information contained in the .prod files included in the packages.'
81
+
82
+ # other
83
+ opt :debug, 'Show debug information'
84
+ end
85
+
86
+ config = EnhanceRepo::ConfigOpts.new(opts)
87
+ dir = ARGV.shift
88
+ config.dir = Pathname.new(dir) if not dir.nil?
89
+
90
+ # Check if dir is given
91
+ if config.dir.nil?
92
+ EnhanceRepo.logger.fatal "Missing dir argument (try --help)"
93
+ exit 0
94
+ end
95
+
96
+ repomd = EnhanceRepo::RpmMd::Repo.new(config)
97
+
98
+ # perform the operations in a rescue block
99
+
100
+ time = Benchmark.measure do
101
+ begin
102
+ if config.primary
103
+ repomd.primary.read_packages
104
+ repomd.filelists.read
105
+ repomd.other.read
106
+ end
107
+
108
+ # merge keywords and products to suseinfo
109
+ repomd.suseinfo.products.merge(config.repoproducts)
110
+ repomd.suseinfo.keywords.merge(config.repokeywords)
111
+
112
+ repomd.susedata.add_eulas if config.eulas
113
+ repomd.susedata.add_keywords if config.keywords
114
+ repomd.susedata.add_disk_usage if config.diskusage
115
+
116
+ if not config.generate_update.nil?
117
+ repomd.updateinfo.generate_update(config.generate_update, File.join(config.outputdir, 'repoparts') )
118
+ end
119
+
120
+ repomd.updateinfo.read_repoparts if config.updates
121
+ repomd.updateinfo.split_updates(File.join(config.outputdir, 'repoparts')) if config.split_updates
122
+
123
+ repomd.deltainfo.create_deltas(:outputdir => config.outputdir, :n => config.create_deltas) if config.create_deltas
124
+ repomd.deltainfo.add_deltas if config.deltas
125
+
126
+ repomd.products.read_packages if config.products
127
+
128
+ # add expiration date
129
+ repomd.suseinfo.expire = config.expire if not config.expire.nil?
130
+
131
+ # index if requested
132
+ repomd.index if config.index
133
+
134
+ # write the repository out
135
+ repomd.write
136
+
137
+ # perform signature of the repository
138
+ repomd.sign(config.signkey) if not config.signkey.nil?
139
+ rescue Exception => excp
140
+ EnhanceRepo.logger.fatal excp.message
141
+ if EnhanceRepo::enable_debug
142
+ EnhanceRepo.logger.fatal excp.class
143
+ EnhanceRepo.logger.fatal(excp.backtrace.join("\n"))
144
+ else
145
+ EnhanceRepo.logger.info "Pass --debug for more information..."
146
+ end
147
+ end
148
+
149
+ end
150
+ EnhanceRepo.logger.info(time) if config.benchmark
@@ -0,0 +1,98 @@
1
+ #--
2
+ #
3
+ # enhancerepo is a rpm-md repository metadata tool.
4
+ # Copyright (C) 2008, 2009 Novell Inc.
5
+ # Author: Duncan Mac-Vicar P. <dmacvicar@suse.de>
6
+ #
7
+ # This program is free software; you can redistribute it and/or modify
8
+ # it under the terms of the GNU General Public License as published by
9
+ # the Free Software Foundation; either version 2 of the License, or
10
+ # (at your option) any later version.
11
+ #
12
+ # This program is distributed in the hope that it will be useful,
13
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ # GNU General Public License for more details.
16
+ #
17
+ # You should have received a copy of the GNU General Public License
18
+ # along with this program; if not, write to the Free Software
19
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20
+ # MA 02110-1301, USA. A copy of the GNU General Public License is
21
+ # also available at http://www.gnu.org/copyleft/gpl.html.
22
+ #
23
+ #++
24
+ #
25
+ require 'set'
26
+
27
+ module EnhanceRepo
28
+
29
+ # Configuration class to hold the options
30
+ # passed from the command line to the
31
+ # components doing the work
32
+ #
33
+
34
+ class ConfigOpts
35
+ attr_accessor :index
36
+ attr_accessor :indent
37
+ attr_accessor :repoproducts
38
+ attr_accessor :repokeywords
39
+ attr_accessor :dir
40
+ # output dir, if specified, if not
41
+ # we use dir
42
+ attr_writer :outputdir
43
+ attr_accessor :signkey
44
+ attr_accessor :expire
45
+ attr_accessor :primary
46
+ attr_accessor :updates
47
+ attr_accessor :generate_update
48
+ attr_accessor :split_updates
49
+ attr_accessor :updatesbasedir
50
+ attr_accessor :eulas
51
+ attr_accessor :keywords
52
+ attr_accessor :diskusage
53
+ # wether to create delta rpm files
54
+ # and how many
55
+ attr_accessor :create_deltas
56
+ # whether to index delta rpms
57
+ attr_accessor :deltas
58
+
59
+ attr_accessor :products
60
+
61
+ attr_accessor :benchmark
62
+
63
+ def outputdir
64
+ return @dir if @outputdir.nil?
65
+ return @outputdir
66
+
67
+ end
68
+
69
+ def initialize(opts)
70
+ @repoproducts = Set.new
71
+ @repokeywords = Set.new
72
+ read_opts(opts)
73
+ end
74
+
75
+ def read_opts(opts)
76
+ @index = opts[:index]
77
+ @expire = opts[:expire]
78
+ @primary = opts[:primary]
79
+ @repoproducts = @repoproducts.merge([*opts[:repo_products]])
80
+ @repokeywords = @repokeywords.merge([*opts[:repo_keywords]])
81
+ @signkey = opts[:sign]
82
+ @updates = opts[:updates]
83
+ @split_updates = opts[:split_updates]
84
+ @generate_update = opts[:generate_update]
85
+ @eulas = opts[:eulas]
86
+ @keywords = opts[:keywords]
87
+ @diskusage = opts[:disk_usage]
88
+ @deltas = opts[:deltas]
89
+ @create_deltas = opts[:create_deltas]
90
+ @products = opts[:products]
91
+ @benchmark = opts[:benchmark]
92
+ @updatesbasedir = Pathname.new(opts[:updates_base_dir]) if opts[:updates_base_dir]
93
+ @outputdir = Pathname.new(opts[:outputdir]) if opts[:outputdir]
94
+ @dir = Pathname.new(opts[:dir]) if opts[:dir]
95
+ end
96
+
97
+ end
98
+ end