#!/usr/bin/python
#
# Initiates the bootloaders for a kickstart
#
# $Id: inject-kickstart 111090 2007-02-19 16:24:34Z jbowes $

RHN_ROOT = "/usr/share/rhn"

from optik import OptionParser, Option
import sys
if RHN_ROOT not in sys.path:
    sys.path.append(RHN_ROOT)

from kickstart_libs import kickstart

options_table = [
    Option("-v", "--verbose",       action="count", 
        help="Increase verbosity"),
    Option("-b", "--base",          action="store",
        help="Kickstart to this base operating system"),
    Option("--lilo-only",           action="store_true",
        help="Only update lilo"),
    Option("--grub-only",           action="store_true",
        help="Only update grub"),
    Option("--elilo_only",          action="store_true",
        help="Only update elilo"),
    Option("--lilo-conf",           action="store",
        help="Use this configuration file for lilo",
        default=kickstart.LILO_CONF),
    Option("--grub-conf",           action="store",
        help="Use this configuration file for grub",
        default=kickstart.GRUB_CONF),
    Option("--elilo-conf",          action="store",
        help="Use this configuration file for elilo",
        default=kickstart.ELILO_CONF),
    Option("--append",              action="store",
        help="Extra append arguments to use", 
        default=""),
    Option("--prefix",              action="store",
        help="Specify a different root prefix (experimental)",
        default=""),
]

def main():
    global options_table
    parser = OptionParser(option_list=options_table)

    (options, args) = parser.parse_args()

    if not options.base:
        sys.stderr.write("Required parameter --base not specified\n")
        return 1

    kickstart.LILO_CONF = options.lilo_conf
    kickstart.GRUB_CONF = options.grub_conf
    kickstart.ELILO_CONF = options.elilo_conf
    kickstart.PREFIX = options.prefix

    error_code, error_string, details = kickstart.initiate(options.base,
        extra_append=options.append, lilo_only=options.lilo_only,
        grub_only=options.grub_only, elilo_only=options.elilo_only)
    print error_code, error_string, details

if __name__ == '__main__':
    sys.exit(main() or None)
