#!/usr/bin/python3

# Bancal Samuel

# ENACdrives : Main Python File
# used for Windows, Linux & Mac OSX

import argparse
from enacdrives.cli import main_CLI
from enacdrives.gui import main_GUI
from enacdrives.utility import CONST, Output


if __name__ == '__main__':
    ui = "GUI"
    if CONST.OS_SYS == "Linux":
        parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter)
        parser.add_argument(
            "--version",
            action="store_true",
            help="Show ENACdrives version and exit\n ")

        parser.add_argument(
            "--username",
            action="store",
            help="set EPFL USERNAME")
        parser.add_argument(
            "-s", "--summary",
            action="store_true",
            help="show Summary (drives list, status and mountpoints)\n ")

        parser.add_argument(
            "-n", "--named",
            action="append",
            help="mount NAMED entry (unmount if -u)")
        parser.add_argument(
            "-a", "--all",
            action="store_true",
            help="mount All entries (unmount if -u)")
        parser.add_argument(
            "-b", "--bookmarked",
            action="store_true",
            help="mount Bookmarked entries (unmount if -u)")
        parser.add_argument(
            "-u", "--umount",
            action="store_true",
            help="Unmount instead of mount (applies to -n -a -b)\n ")

        parser.add_argument(
            "--add-bookmark",
            metavar="NAMED",
            action="append",
            help="bookmark NAMED entry")
        parser.add_argument(
            "--rm-bookmark",
            metavar="NAMED",
            action="append",
            help="unbookmark NAMED entry")
        parser.add_argument(
            "-v", "--verbose",
            action="count", default=0,
            help="increase Verbosity level (max is -vvv)")
        args = parser.parse_args()

        # print("args: {}".format(args))
        if (args.summary or args.umount or args.all or args.named is not None or
           args.bookmarked or args.add_bookmark is not None or args.rm_bookmark is not None or
           args.username is not None or args.version):
            ui = "CLI"
            args.verbose -= 1

        if args.verbose == -1:
            output_level = "cli"
        elif args.verbose == 0:
            output_level = "normal"
        elif args.verbose == 1:
            output_level = "verbose"
        else:
            output_level = "debug"
    else:
        output_level = "debug"
    with Output(level = output_level):
        if ui == "GUI":
            main_GUI()
        else:
            main_CLI(args)
