def candidate(args):
    """deploy to release candidate

    ./bin/deploy candidate PACKAGENAME VERSIONNUMBER

    - set version
    - commit setup.py
    - create rc branch if not exist
    - export rc sources
    - commit rc sources
    """
    package, newversion = args.package[0], args.version[0]
    deploymentpackage = DeploymentPackage(config, package)
    deploymentpackage.check_env("rc")
    log.info("Complete deployment of release candidate %s with version %s" %
             (package, newversion))
    try:
        changed = _set_version(package, newversion)
        if not changed:
            log.warn(
                "Version {0} was already set, version change skipped.".format(
                    newversion
                )
            )
        else:
            deploymentpackage.commit('setup.py', 'Version Change')
        deploymentpackage.creatercbranch()
        deploymentpackage.export_rc()
        deploymentpackage.commit_rc_source()
    except DeploymentError, e:
        log.error("Candidate deployment failed: %s" % e)
def candidate(args):
    """deploy to release candidate

    ./bin/deploy candidate PACKAGENAME VERSIONNUMBER

    - set version
    - commit setup.py
    - create rc branch if not exist
    - export rc sources
    - commit rc sources
    """
    package, newversion = args.package[0], args.version[0]
    deploymentpackage = DeploymentPackage(config, package)
    deploymentpackage.check_env("rc")
    log.info("Complete deployment of release candidate %s with version %s" %
             (package, newversion))
    try:
        changed = _set_version(package, newversion)
        if not changed:
            log.warn(
                "Version {0} was already set, version change skipped.".format(
                    newversion))
        else:
            deploymentpackage.commit('setup.py', 'Version Change')
        deploymentpackage.creatercbranch()
        deploymentpackage.export_rc()
        deploymentpackage.commit_rc_source()
    except DeploymentError, e:
        log.error("Candidate deployment failed: %s" % e)
def exportliveversion(args):
    log.info("Export live version")
    deploymentpackage = DeploymentPackage(config, args.package[0])
    deploymentpackage.check_env(config.env)
    try:
        deploymentpackage.export_version()
    except DeploymentError, e:
        log.error("Exporting failed: %s" % e)
        return
def release(cargs):
    log.info("Release package")
    deploymentpackage = DeploymentPackage(config, cargs.package[0])
    deploymentpackage.check_env(config.env)
    try:
        deploymentpackage.release()
    except DeploymentError, e:
        log.error("Releasing failed: %s" % e)
        return
def tag(args):
    log.info("Tag package")
    deploymentpackage = DeploymentPackage(config, args.package[0])
    deploymentpackage.check_env(config.env)
    try:
        deploymentpackage.tag()
    except DeploymentError, e:
        log.error("Tagging failed: %s" % e)
        return
def exportliveversion(args):
    log.info("Export live version")
    deploymentpackage = DeploymentPackage(config, args.package[0])
    deploymentpackage.check_env(config.env)
    try:
        deploymentpackage.export_version()
    except DeploymentError, e:
        log.error("Exporting failed: %s" % e)
        return
def release(cargs):
    log.info("Release package")
    deploymentpackage = DeploymentPackage(config, cargs.package[0])
    deploymentpackage.check_env(config.env)
    try:
        deploymentpackage.release()
    except DeploymentError, e:
        log.error("Releasing failed: %s" % e)
        return
def tag(args):
    log.info("Tag package")
    deploymentpackage = DeploymentPackage(config, args.package[0])
    deploymentpackage.check_env(config.env)
    try:
        deploymentpackage.tag()
    except DeploymentError, e:
        log.error("Tagging failed: %s" % e)
        return
def _creatercbranch(all, packages):
    if all:
        packages = config.as_dict('packages').keys()
    for package in packages:
        deploymentpackage = DeploymentPackage(config, package)
        deploymentpackage.check_env("rc")
        try:
            deploymentpackage.creatercbranch()
        except DeploymentError, e:
            log.error("Creating RC branch failed: %s" % e)
            continue
        except Exception, e:
            log.error("An error occured: %s" % e)
def _creatercbranch(all, packages):
    if all:
        packages = config.as_dict('packages').keys()
    for package in packages:
        deploymentpackage = DeploymentPackage(config, package)
        deploymentpackage.check_env("rc")
        try:
            deploymentpackage.creatercbranch()
        except DeploymentError, e:
            log.error("Creating RC branch failed: %s" % e)
            continue
        except Exception, e:
            log.error("An error occured: %s" % e)
def fullrelease(args):
    """deploy to release on package index

    ./bin/deploy release [packagename]

    - tag version
    - export live version
    - release to package index server
    - commit live versions
    """
    package = args.package[0]
    deploymentpackage = DeploymentPackage(config, package)
    deploymentpackage.check_env(config.env)
    log.info("Complete deployment of final package %s" % package)
    try:
        deploymentpackage.tag()
    except DeploymentError, e:
        log.error("Tagging failed: %s" % e)
        return
def fullrelease(args):
    """deploy to release on package index

    ./bin/deploy release [packagename]

    - tag version
    - export live version
    - release to package index server
    - commit live versions
    """
    package = args.package[0]
    deploymentpackage = DeploymentPackage(config, package)
    deploymentpackage.check_env(config.env)
    log.info("Complete deployment of final package %s" % package)
    try:
        deploymentpackage.tag()
    except DeploymentError, e:
        log.error("Tagging failed: %s" % e)
        return