In order to use the gather module outside of pungi itself, you need
to pass it a valid config object. To make that easier, this patch
moves the config object definition from pungi into pypungi.
Signed-off-by: Mark McLoughlin <markmc(a)redhat.com>
Index: pungi/pungi
===================================================================
--- pungi.orig/pungi
+++ pungi/pungi
@@ -13,14 +13,13 @@
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
import os
+import pypungi.config
import pypungi.gather
import pypungi.pungi
import yum
import pykickstart.parser
import pykickstart.version
-from ConfigParser import SafeConfigParser
-
def main():
# You must be this high to ride.
@@ -28,54 +27,14 @@ def main():
print >> sys.stderr, "You must run pungi as root"
return 1
- # Set some default variables, can be overrided in config file
+ config = pypungi.config.Config()
- # Turn this into a dict someday, to iterate over when setting defaults
- osdir = "os"
- sourcedir = "source"
- debugdir = "debug"
- isodir = "iso"
- cdsize = "4608.0"
- relnotefilere = "eula.txt fedora.css GPL README-BURNING-ISOS-en_US.txt
RELEASE-NOTES-en_US.html ^RPM-GPG"
- relnotedirre = "images stylesheet-images"
- relnotepkgs = "fedora-release fedora-release-notes"
-
- (opts, args) = get_arguments()
+ (opts, args) = get_arguments(config)
# Set up the kickstart parser and pass in the kickstart file we were handed
ksparser = pykickstart.parser.KickstartParser(pykickstart.version.makeVersion())
ksparser.readKickstart(opts.config)
- config = SafeConfigParser()
- config.add_section('default')
-
- # add some sections here before setting stuff.
-
- # hard coded non-options
- config.set('default', 'osdir', osdir)
- config.set('default', 'sourcedir', sourcedir)
- config.set('default', 'debugdir', debugdir)
- config.set('default', 'isodir', isodir)
- config.set('default', 'relnotefilere', relnotefilere)
- config.set('default', 'relnotedirre', relnotedirre)
- config.set('default', 'relnotepkgs', relnotepkgs)
- config.set('default', 'product_path', 'Packages')
- config.set('default', 'cachedir', '/var/cache/pungi')
- config.set('default', 'arch', yum.rpmUtils.arch.getBaseArch())
-
- # set configs from cli options
- config.set('default', 'name', opts.name)
- config.set('default', 'version', opts.ver)
- config.set('default', 'flavor', opts.flavor)
- config.set('default', 'destdir', opts.destdir)
- config.set('default', 'cachedir', opts.cachedir)
- config.set('default', 'bugurl', opts.bugurl)
- config.set('default', 'discs', opts.discs)
-
- # set some other defaults
- config.set('default', 'iso_basename', config.get('default',
'name'))
-
- config.set('default', 'cdsize', cdsize)
for part in ksparser.handler.partition.partitions:
if part.mountpoint == 'iso':
config.set('default', 'cdsize', part.size)
@@ -148,27 +107,34 @@ def main():
if __name__ == '__main__':
from optparse import OptionParser
import sys
- import time
-
- today = time.strftime('%Y%m%d', time.localtime())
- def get_arguments():
+ def get_arguments(config):
parser = OptionParser(version="%prog 1.0.1")
+ def set_config(option, opt_str, value, parser, config):
+ config.set('default', option.dest, value)
+
# Pulled in from config file to be cli options as part of pykickstart conversion
- parser.add_option("--name", default="Fedora",
dest="name",
+ parser.add_option("--name", dest="name",
type="string",
+ action="callback", callback=set_config, callback_args=(config, ),
help='the name for your distribution (defaults to
"Fedora")')
- parser.add_option("--ver", default=today, dest="ver",
+ parser.add_option("--ver", dest="version",
type="string",
+ action="callback", callback=set_config, callback_args=(config, ),
help='the version of your distribution (defaults to datestamp)')
- parser.add_option("--flavor", default="",
dest="flavor",
+ parser.add_option("--flavor", dest="flavor",
type="string",
+ action="callback", callback=set_config, callback_args=(config, ),
help='the flavor of your distribution spin (optional)')
- parser.add_option("--destdir", default=".",
dest="destdir",
+ parser.add_option("--destdir", dest="destdir",
type="string",
+ action="callback", callback=set_config, callback_args=(config, ),
help='destination directory (defaults to current directory)')
- parser.add_option("--cachedir", default="/var/cache/pungi",
dest="cachedir",
+ parser.add_option("--cachedir", dest="cachedir",
type="string",
+ action="callback", callback=set_config, callback_args=(config, ),
help='package cache directory (defaults to /var/cache/pungi)')
- parser.add_option("--bugurl",
default="http://bugzilla.redhat.com", dest="bugurl",
+ parser.add_option("--bugurl", dest="bugurl",
type="string",
+ action="callback", callback=set_config, callback_args=(config, ),
help='the url for your bug system (defaults to
http://bugzilla.redhat.com)')
- parser.add_option("--discs", default='1',
dest="discs",
+ parser.add_option("--discs", dest="discs",
type="string",
+ action="callback", callback=set_config, callback_args=(config, ),
help='the number of discs you want to create (defaults to 1)')
parser.add_option("--nosource", action="store_true",
dest="nosource",
help='disable gathering of source packages (optional)')
Index: pungi/pypungi/config.py
===================================================================
--- /dev/null
+++ pungi/pypungi/config.py
@@ -0,0 +1,45 @@
+#!/usr/bin/python -tt
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Library General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+import time
+import yum
+
+from ConfigParser import SafeConfigParser
+
+class Config(SafeConfigParser):
+ def __init__(self):
+ SafeConfigParser.__init__(self)
+
+ self.add_section('default')
+
+ self.set('default', 'osdir', 'os')
+ self.set('default', 'sourcedir', 'source')
+ self.set('default', 'debugdir', 'debug')
+ self.set('default', 'isodir', 'iso')
+ self.set('default', 'relnotefilere',
+ 'eula.txt fedora.css GPL README-BURNING-ISOS-en_US.txt
RELEASE-NOTES-en_US.html ^RPM-GPG')
+ self.set('default', 'relnotedirre', 'images
stylesheet-images')
+ self.set('default', 'relnotepkgs', 'fedora-release
fedora-release-notes')
+ self.set('default', 'product_path', 'Packages')
+ self.set('default', 'cachedir', '/var/cache/pungi')
+ self.set('default', 'arch', yum.rpmUtils.arch.getBaseArch())
+ self.set('default', 'name', 'Fedora')
+ self.set('default', 'iso_basename', 'Fedora')
+ self.set('default', 'version', time.strftime('%Y%m%d',
time.localtime()))
+ self.set('default', 'flavor', '')
+ self.set('default', 'destdir', '.')
+ self.set('default', 'bugurl',
'http://bugzilla.redhat.com')
+ self.set('default', 'discs', '1')
+ self.set('default', 'cdsize', '4608.0')
+
--