#!/usr/bin/python2
# vim:expandtab:autoindent:tabstop=4:shiftwidth=4:filetype=python:

# import arranged alphabetically
import getopt
import os
import rpmUtils
import shutil
import sys
import traceback
import types
import rpmUtils
import rpmUtils.transaction

sys.path.insert(0, os.path.join(os.path.dirname(sys.argv[0]), "lib"))

from decorator import decorator
import mebtrace

# levels:
#   0: Nothing
#   1: Basic
#   3: Detailed
#   9: ENTER/LEAVE

mebtrace.debug = {
    '__main__': 0,
    }

def main():
    directory = None
    verbose=0
    try:
        opts, args = getopt.getopt(sys.argv[1:], "d:v", ["directory=", "verbose",])
        for option, argument in opts:
            if option in ("-d", "--directory"):
                directory = argument
            if option in ("-v", "--verbose"):
                mebtrace.debug["__main__"] = mebtrace.debug["__main__"] + 1
                verbose=1

        if directory is None: raise getopt.GetoptError("no input dir", "no input dir")

        for (dirpath, dirnames, filenames) in os.walk(directory):
            for file in filenames:
                file = os.path.realpath(os.path.join(dirpath, file))
                ts = rpmUtils.transaction.initReadOnlyTransaction()
                try:
                    hdr = rpmUtils.miscutils.hdrFromPackage(ts, file)
                    sig = rpmUtils.miscutils.getSigInfo(hdr)
                    mebtrace.dprint("got hdr: %s\n" % repr(hdr), msgLevel=3)
                    mebtrace.dprint("%s\n" % str(rpmUtils.miscutils.getSigInfo(hdr)), msgLevel=1)
                    if sig[0] and not verbose:
                        # no ouput, just report if outputRepo not set
                        print "%s" % file
                except rpmUtils.RpmUtilsError, e:
                    mebtrace.dprint("could not open rpm: %s\n" % file, msgLevel=3)

    except (Exception), e:
        print str(e)
        sys.exit(2)

    except (getopt.GetoptError):
        print __doc__
        sys.exit(1)

    except:
        traceback.print_exc()
        sys.exit(2)

    sys.exit(0)

if __name__ == "__main__":
    main()
