#!/usr/bin/env python

import sys
import argparse
import symstore


def parse_args():
    parser = argparse.ArgumentParser(description="publish PDB files")

    parser.add_argument("store_path", metavar="STORE_PATH",
                        type=str,
                        help="root directory of the symbol store")
    parser.add_argument("files", metavar="FILE", type=str, nargs="+",
                        help="PDB or PE file(s) to publish")

    parser.add_argument("-p", "--product-name", default="",
                        help="name of the product")

    parser.add_argument("-r", "--product-version", default="",
                        help="version of the product")

    parser.add_argument("--version",
                        action="version",
                        version="symstore %s" % symstore.VERSION,
                        help="show program's version number and exit")

    return parser.parse_args()


args = parse_args()

sym_store = symstore.Store(args.store_path)

try:
    # create new add transaction, add all specified files
    transaction = sym_store.new_transaction(args.product_name,
                                            args.product_version)
    for file in args.files:
        transaction.add_file(file)

    # commit the transaction to the store
    sym_store.commit(transaction)
except symstore.FileFormatError as e:
    sys.stderr.write("%s: invalid %s file: %s\n" % (file, e.format_name, e))
    sys.exit(1)
