#!/usr/local/opt/python/bin/python3.6

import argparse
import os
from namanager.main import entry

parser = argparse.ArgumentParser()

parser.add_argument("--version",
                    action='store_true',
                    help="print the Namanager version number and exit.")

parser.add_argument("-s", "--settings",
                    default=os.path.join(os.getcwd(), 'settings.json'),
                    help="Default is ./settings.json. Import settings.json.")

parser.add_argument("--required",
                    action='store_true',
                    help="If namanager fails it will exit 1.")

parser.add_argument("--with-readable",
                    action='store_true',
                    help="Default. Generate as dict (python) format.")
parser.add_argument("--with-xml",
                    action='store_true',
                    help="Generate as xml format.")
parser.add_argument("--with-json",
                    action='store_true',
                    help="Generate as json format.")
parser.add_argument("--pretty-dump",
                    action='store_true',
                    help="Only works with --with-xml or --with-json options")


parser.add_argument("--rename",
                    action='store_true',
                    help="Automatically rename no matched files/directories.")
parser.add_argument("--rename-backup",
                    action='store_true',
                    help="""
                    Default. create backup file
                    which is used to revert the rename action.
                    """)
parser.add_argument("--rename-no-backup",
                    action='store_true',
                    help="""
                    Do not create backup file.
                    Warning: if you use mode,
                    you can NOT revert files/directories
                    which are renamed by --rename option.
                    """)
parser.add_argument("--rename-backup-dir",
                    default=os.getcwd(),
                    help="Save backup file into specify directory.")
parser.add_argument("--revert-rename",
                    default=None,
                    metavar="BACKUP_FILE",
                    help="""
                    Revert files/directories by giving file
                    (which is generated by --rename-backup option).
                    """)

args = parser.parse_args()

if __name__ == '__main__':
    if args.version:
        import namanager
        print(namanager.__version__)
        exit(0)

    kwargs = {
        'required': args.required,
        'fmt': (
            'xml' if args.with_xml else
            'json' if args.with_json else
            'dict' if args.with_json else
            'dict'
        ),
        'pretty_dump': args.pretty_dump,
        'rename': args.rename,
        'rename_backup': (
            False if args.rename_no_backup else
            True if args.rename_backup else
            True
        ),
        'rename_backup_dir': args.rename_backup_dir,
        'revert_file': args.revert_rename,
    }
    entry(args.settings, **kwargs)
