#!/usr/bin/env python

#
# ddr-idexport
#

description = """Exports collection IDs to JSON for importing by idservice app."""

epilog = """
Run ddr-idexport on a machine that has access to collection repositories,
scp the .json files to the idservice machine, then run ddr-idimport on the
files there.

EXAMPLE

On local machine:

    $ ddr-idexport /PATH/TO/ddr-test-123 /tmp/ddr-test-123.json
    $ ddr-idexport /PATH/TO/ddr-test-123 /tmp/

On idservice machine:

    $ sudo su ddr
    $ cd /usr/local/src/ddr-idservice/idservice
    $ python manage.py idimport /tmp/ddr-test-123.json

---"""


import argparse
import json
import logging
import os
import sys

from DDR import config
from DDR import identifier
from DDR import util
from DDR import models

logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s %(levelname)-8s %(message)s',
    stream=sys.stdout,
)


def main():

    parser = argparse.ArgumentParser(
        description=description,
        epilog=epilog,
        formatter_class=argparse.RawDescriptionHelpFormatter
    )
    parser.add_argument('collection', help='Path to collection.')
    parser.add_argument('file', help='Path to dumpfile (or dir).')
    args = parser.parse_args()
    
    if os.path.isdir(args.file) and os.path.exists(args.collection):
        path = os.path.join(
            args.file,
            '%s.json' % os.path.basename(args.collection)
        )
    else:
        path = args.file
    
    ci = identifier.Identifier(args.collection)
    collection = ci.object()
    print(ci)
    print(collection)
    
    data = [
         i.id for i in collection.identifiers()
    ]
    
    with open(path, 'w') as f:
        f.write(json.dumps(data))
    
    print('Write %s IDs to %s' % (len(data), path))


if __name__ == '__main__':
    main()
