#!/usr/bin/python
import argparse
import sys

from simplestreams import objectstores
from simplestreams import mirrors


def main():
    parser = argparse.ArgumentParser()

    parser.add_argument('--keep', action='store_true', default=False,
                        help='keep items in target up to MAX items '
                             'even after they have fallen out of the source')
    parser.add_argument('--max', type=int, default=None,
                        help='store at most MAX items in the target')
    parser.add_argument('--no-item-download', action='store_true', default=False,
                        help='do not download items with a "path"')
    parser.add_argument('--mirror', action='append', default=[],
                        dest="mirrors",
                        help='additional mirrors to find referenced files')

    parser.add_argument('source_mirror')
    parser.add_argument('output_d')
    parser.add_argument('path', nargs='?', default="streams/v1/index.sjs")
    args = parser.parse_args()

    mirror_config = {'max_items': args.max, 'keep_items': args.keep,
                     'item_download': not args.no_item_download}

    smirror = mirrors.UrlMirrorReader(args.source_mirror, mirrors=args.mirrors)
    tstore = objectstores.FileStore(args.output_d)
    tmirror = mirrors.ObjectStoreMirrorWriter(config=mirror_config,
                                              objectstore=tstore)

    tmirror.sync(smirror.reader, args.path)


if __name__ == '__main__':
    main()

# vi: ts=4 expandtab syntax=python
