#!/usr/bin/env python

import json
import sys
from trp.trp2 import TDocumentSchema
from textractpagedimensions.t_pagedimensions import add_page_dimensions
from textractpagedimensions._version import __version__
import argparse
import logging

logger = logging.getLogger(__name__)

parser = argparse.ArgumentParser()
parser.add_argument(
    "--input-document",
    help=
    "s3 object (s3://) or file from local filesystem to get page dimensions",
    required=True,
    type=str)
parser.add_argument("--version",
                    action='version',
                    version='%(prog)s {version}'.format(version=__version__),
                    help="print version information")
show_logs = parser.add_mutually_exclusive_group(required=False)
show_logs.add_argument("-v",
                       dest='showinfo',
                       action='store_true',
                       help=">=INFO level logging output to stderr")
show_logs.set_defaults(showinfo=False)
show_logs.add_argument("-vv",
                       dest='showdebug',
                       action='store_true',
                       help=">=DEBUG level logging output to stderr")
show_logs.set_defaults(showdebug=False)

args = parser.parse_args()
showdebug = args.showdebug
showinfo = args.showinfo
input_document = args.input_document

if showinfo or showdebug:
    formatter = logging.Formatter(
        '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    handler = logging.StreamHandler()
    handler.setFormatter(formatter)
    handler.setLevel(logging.INFO)
    logger.setLevel(logging.INFO)
    logger.propagate = True
    logger.addHandler(handler)

    if showdebug:
        handler.setLevel(logging.DEBUG)
        logger.setLevel(logging.DEBUG)
        logger.debug("current log level: DEBUG")

import trp.t_pipeline as tp

doc_json = json.load(sys.stdin)
t_doc = TDocumentSchema().load(doc_json)
add_page_dimensions(t_document=t_doc, input_document=input_document)
print(TDocumentSchema().dumps(t_doc))
