#!/usr/bin/python
#
# Copyright 2009 Dell, Inc.
#   by Matt Domsch <Matt_Domsch@dell.com>
# MIT/X11 license

import pkg_resources
pkg_resources.require("TurboGears")

from sqlobject import *
import sys
import turbogears
from mirrormanager.model import *
from optparse import OptionParser

from turbogears.database import PackageHub
hub = __connection__ = None

repos = {'fedora-%s':'rawhide', 'fedora-debug-%s':'rawhide-debug', 'fedora-source-%s':'rawhide-source', 
         'updates-released-f%s':'rawhide', 'updates-released-debug-f%s':'rawhide-debug', 'updates-released-source-f%s':'rawhide-source',
         'updates-testing-f%s':'rawhide', 'updates-testing-debug-f%s':'rawhide-debug', 'updates-testing-source-f%s':'rawhide-source' }


def remove_version_redirect_to_rawhide(version):
    for fromRepo,toRepo in repos.iteritems():
        try:
            r = RepositoryRedirect.selectBy(fromRepo=fromRepo % (version), toRepo=toRepo)[0]
            r.destroySelf()
        except:
            pass

def hide_unhide_versions(newversion):
    
    newversion.display=True
    newversion.sync()

    for v in Version.selectBy(product=newversion.product, isTest=True):
        v.display = False
        v.sync()

def doit(options, args):
    try:
        p = Product.byName(options.product)
    except SQLObjectNotFound:
        print "Invalid Product %s" % options.product
        sys.exit(1)

    try:
        newversion = Version.selectBy(product=p, name=options.version)[0]
    except:
        print "Invalid Version %s" % options.version
        sys.exit(1)

    remove_version_redirect_to_rawhide(options.version)
    hide_unhide_versions(newversion)
    

def main():
    parser = OptionParser(usage=sys.argv[0] + " [options]")
    parser.add_option("-c", "--config",
                      dest="config", default='/etc/mirrormanager/prod.cfg',
                      help="TurboGears config file to use")

    parser.add_option("-p", "--product",
                      dest="product", default='Fedora',
                      help="Product name, default='Fedora'")
    parser.add_option("-v", "--version",
                      dest="version", default=None,
                      help="Version of Product being released (required)")

    (options, args) = parser.parse_args()
    if options.version is None:
        parser.print_help()
        sys.exit(1)

    turbogears.update_config(configfile=options.config,
                             modulename="mirrormanager.config")
    global hub
    global __connection__
    hub = PackageHub("mirrormanager")
    __connection__ = hub
    
    doit(options, args)



if __name__ == "__main__":
    sys.exit(main())
        
