#
#
#
import argparse
import logging
from shutil import copyfile
from libs.toolbox import Toolbox
from libs.jpg_proc import JpgProc

printall    = False
printmeta   = False
printimage  = False
write_picseal = False

def main():
  parseArgs()


# hash the image binary data only (not metadata)
# create new pub keys, sign hash
# export signature & public key to a new image file
def processImage(image_fn):
  jpg = JpgProc()
  jpg.process(image_fn)
  jpg.hash()
  if (write_picseal):
    print("Writing PicSeal JPG files...")
    jpg.writePicSealJpg()

  printImageInfo(jpg)

#
def printImageInfo(jpg_bin):
  if (printall):
    print( str(jpg_bin) )

  if (printimage):
    print( jpg_bin.printMarkerImg())

  if (printmeta):
    print( jpg_bin.printMarkerMeta())


def parseArgs():
  print("***** ***** ***** *****")
  print("  **  Pic * Seal  **   ")
  print("***** ***** ***** *****\n")
  parser = argparse.ArgumentParser()
  parser.add_argument('-f', '--file', required=False, help="source image file")
  parser.add_argument('-v', '--verbose', action='store_true', help="will set logging level to INFO")
  parser.add_argument('-vv', '--vverbose', action='store_true', help="will set logging level to DEBUG")
  parser.add_argument('-l', '--logging', action='store_true', help="will supercede the -v option and send all logging to a file, logging.DEBUG")
  parser.add_argument('-pm', '--printmeta', action='store_true', help="print the metadata markers")
  parser.add_argument('-pi', '--printimage', action='store_true', help="print the image markers")
  parser.add_argument('-pa', '--printall', action='store_true', help="print all markers")  
  parser.add_argument('-w', '--write', action='store_true', help="write picseal files")  
  args = parser.parse_args()

  if (args.logging):
    logging.basicConfig(filename='dbfp.log', level=logging.DEBUG)

  if (args.verbose):
    logging.basicConfig(level=logging.INFO)
  elif (args.vverbose):
    logging.basicConfig(level=logging.DEBUG)
  else:
    logging.basicConfig(level=logging.CRITICAL)

  if (args.printall):
    global printall
    printall = True

  if (args.printmeta):
    global printmeta
    printmeta = True

  if (args.printimage):
    global printimage
    printimage = True

  if (args.write):
    global write_picseal
    write_picseal = True

  if (args.file):
    processImage(args.file)
  else:
    print('Create PicSeal images')
    print('  picseal.py  -i <image_file>')
    print('\n***** ***** ***** *****\n')
    parser.print_help()



if __name__ == "__main__":
  main()
  print
