def main():

    input_file = 'Add.asm'

    # initiate parser
    arg_parser = argparse.ArgumentParser()
    arg_parser.add_argument("-d",
                            "--data",
                            help="print sample data",
                            action="store_true")
    arg_parser.add_argument("-c",
                            "--clean",
                            help="clear sample data",
                            action="store_true")
    arg_parser.add_argument("-n",
                            "--normal",
                            help="normalize sample data",
                            action="store_true")
    arg_parser.add_argument("-a",
                            "--assemble",
                            help="assemble sample data",
                            action="store_true")
    arg_parser.add_argument("-f",
                            "--file",
                            help="assemble from file",
                            type=str,
                            required=False)
    arg_parser.add_argument("-b",
                            "--write_bat_file",
                            help="write drag and drop .bat",
                            action="store_true")

    # read arguments from the command line
    args = arg_parser.parse_args()

    # check for --data or -d
    if args.data:
        asm_parser = Parser(input_file)
        asm_parser.print_data("d")

    # check for --clean or -c
    if args.clean:
        asm_parser = Parser(input_file)
        asm_parser.print_data("c")

    # check for --normal or -n
    if args.normal:
        asm_parser = Parser(input_file)
        asm_parser.print_data("n")

    # check for --assemble or -a
    if args.assemble:
        asm_parser = Parser(input_file)
        assembler = Assembler()
        assembler.print_assembler_data("a", asm_parser.normalize_data())

    # check for --file or -f
    if args.file:
        asm_parser = Parser(args.file)
        assembler = Assembler()
        assembler.write_to_file(args.file, asm_parser.normalize_data())
        return

    # check for --write_bat_file or -k
    if args.write_bat_file:
        if Path("Assembler.bat").is_file():
            print("File already exists")
            input()
        else:
            file_object = open("Assembler.bat", "w")
            file_object.write("python \"%~dp0/Main.py\" -f %1\n\nrem cmd /k")