#!/usr/bin/env python3
#
# (c) 2017 Fetal-Neonatal Neuroimaging & Developmental Science Center
#                   Boston Children's Hospital
#
#              http://childrenshospital.org/FNNDSC/
#                        dev@babyMRI.org
#

import  os
import  sys

sys.path.insert(1, os.path.join(os.path.dirname(__file__), '..'))

import  subprocess
import  pudb
from    argparse            import RawTextHelpFormatter
from    argparse            import ArgumentParser
from    pfmisc._colors      import Colors
from    pyimgconvert        import pyimgconvert

# sys.path.append(os.path.dirname(__file__))


str_version = "1.0.8"
str_desc = Colors.CYAN + """

             _                                               _   
            (_)                                             | |  
 _ __  _   _ _ _ __ ___   __ _  ___ ___  _ ____   _____ _ __| |_ 
| '_ \| | | | | '_ ` _ \ / _` |/ __/ _ \| '_ \ \ / / _ \ '__| __|
| |_) | |_| | | | | | | | (_| | (_| (_) | | | \ V /  __/ |  | |_ 
| .__/ \__, |_|_| |_| |_|\__, |\___\___/|_| |_|\_/ \___|_|   \__|
| |     __/ |             __/ |                                  
|_|    |___/             |___/                                   

Python wrapper around Linux CLI "convert" which works as an entrypoint around the Linux image processing 'ImageMagick'

-- version """ + \
    Colors.YELLOW + str_version + Colors.CYAN + """

""" + Colors.NO_COLOUR

def synopsis(ab_shortOnly = False):
    scriptName = os.path.basename(sys.argv[0])
    shortSynopsis =  '''
    NAME

	    mgz2imagetree 
        - process mgz files and create labelled directories in a similar tree structure in the output directory.

    SYNOPSIS

            pyimgconvert                                                \\
                [-I|--inputDir <inputDir>]                                  \\
                [-O|--outputDir <outputDir>]                                \\
                [-a|--args <convertArgsToPass>]                             \\
                [-x|--man]                                                  \\
                [-y|--synopsis]                                             \\
                [--version]                                                 \\
                [-v|--verbosity <level>]
    '''
    description =  '''
    DESCRIPTION

        Python wrapper around Linux CLI "convert" which works as 
        an entrypoint around the Linux image processing 'ImageMagick'.
    
    ARGS

        [-I|--inputDir <inputDir>]  
        Input directory that contains the image files to convert 

        [-i|--inputFile <inputFile>]
        Input file within the inputDir that needs to be converted  

        [-O|--outputDir <outputDir>]                            
        Output Directory that will store the required output  

        [-o|--outputFile <outputFile>]
        Name of the outputFile that should be used to store the resultant
        output in the outputDir

        [-a|--args <convertArgsToPass>]
        Arguments that are upposed to be passed to the "magick convert"

        [-x|--man]
        Show full help.

        [-y|--synopsis]
        Show brief help.

        [--version]
        If specified, print the version number and exit.

        [-v|--verbosity <level>]
        Set the app verbosity level. 
    
    EXAMPLES:
    
    pyimgconvert 
        --inputDir <inputDir>               \\
        --inputFile image.jpg               \\
        --outputDir <outputDir>             \\
        --outputFile image.png              \\

    '''
    if ab_shortOnly:
        return shortSynopsis
    else:
        return shortSynopsis + description


parser  = ArgumentParser(description = str_desc, formatter_class = RawTextHelpFormatter)

parser.add_argument("-I", "--inputDir",
                    help    = "input dir",
                    dest    = 'inputDir')
parser.add_argument("-i", "--inputFile",
                    help    = "input file",
                    dest    = 'inputFile')
parser.add_argument("-O", "--outputDir",
                    help    = "output image directory",
                    dest    = 'outputDir',
                    default = '')
parser.add_argument("-o", "--outputFile",
                    help    = "output file",
                    dest    = 'outputFile')
parser.add_argument("-a", "--args",
                    help    = "args to be passed to magick convert",
                    dest    = "args",
                    default = '')
parser.add_argument("-x", "--man",
                    help    = "man",
                    dest    = 'man',
                    action  = 'store_true',
                    default = False)
parser.add_argument("-y", "--synopsis",
                    help    = "short synopsis",
                    dest    = 'synopsis',
                    action  = 'store_true',
                    default = False)
parser.add_argument("-v", "--verbosity",
                    help    = "verbosity level for app",
                    dest    = 'verbosity',
                    default = "0")
parser.add_argument('--version',
                    help    = 'if specified, print version number',
                    dest    = 'b_version',
                    action  = 'store_true',
                    default = False)

args = parser.parse_args()

if args.man or args.synopsis:
    print(str_desc)
    if args.man:
        str_help     = synopsis(False)
    else:
        str_help     = synopsis(True)
    print(str_help)
    sys.exit(1)

if args.b_version:
    print("Version: %s" % str_version) 
    sys.exit(1)

pyimgconvert = pyimgconvert.pyimgconvert(
    inputDir        = args.inputDir,
    inputFile       = args.inputFile,
    outputDir       = args.outputDir,
    outputFile      = args.outputFile,
    args            = args.args,
    man             = args.man,
    synopsis        = args.synopsis,
    verbosity       = args.verbosity,
    version         = str_version   
)



returnType_pyimgconvert = pyimgconvert.img_convert()

sys.exit(0)