#!/usr/bin/python
# -*- coding: utf-8 -*-

# python standard library
from os.path import basename

import pisi.config
import pisi.util
import pisi.ui
from pisi.build import PisiBuild, PisiBuildError

def usage(progname = "pisi-build"):
    print """
Usage:
%s [options] package-name.pspec
""" %(progname)

def doProgress(filename, percent, rate, symbol):
    out = '\r%-30.30s %3d%% %12.2f %s' % \
        (pd['filename'], pd['percent'], pd['rate'], pd['symbol'])
    pisi.ui.info(out)

def main():
    import sys
    import getopt
    
    # wrapper for usage(progname) function
    help = lambda: usage(sys.argv[0])

    # getopt magic
    try:
        opts, args = getopt.getopt(sys.argv[1:],"h",["help"])
    except getopt.GetoptError:
        help()
        sys.exit(1)

    for opt, arg in opts:
        if opt == "-h":
            help()
            sys.exit(1)

    # pspec(PISI Spec) to be used for package
    pspec = ""

    # TODO: We accept only one pspec file (at a time) currently,
    # but pisi-build may build many packages (pspecs given in order)
    # sequentially.
    if len(args) != 1:
        help()
        raise PisiBuildError, "pisi-build expects one (and only one) pspec file currently"
    else:
        pspec = args[0]

    # doing the real job.
    pb = PisiBuild(pspec)
    pisi.ui.info("Building PISI source package: %s\n" % pb.spec.sourceName)

    pisi.ui.info("Fetching source from: %s (be patient)\n" % pb.spec.archiveUri)
    pb.fetchArchive(doProgress)
    pisi.ui.info("Source archive is stored: %s/%s\n" %(pisi.config.archives_dir, pb.archiveName))
    # pb.unpackArchive()
    # pb.applyPatches()
    # pb.buildSource()
    # pb.installTarget()

    pb.buildPackages()
    

if __name__ == "__main__":
    main()
