#!/usr/bin/env python3
import memtrace2npz
import sys
import getopt
import os

def usage(error=None):
    if error is not None:
        print("Error: {}".format(error))
    print("Usage: \n  {} < -i infile > [ -o outfile ] [ -h ] [ -f ]\n  Specify -f to bypass the warning about the outfile already existing.".format(sys.argv[0]))
    sys.exit()

try:
    opts, args, = getopt.getopt(sys.argv[1:], "hi:o:f", ["help", "infile", "outfile", "force"])
except getopt.GetoptError as err:
    print(err)
    usage()
    sys.exit(2)

infile  = None
outfile = None
force   = False

for o, a, in opts:
    if o in ("-h", "--help"):
        usage()
    elif o in ("-i", "--infile"):
        infile = a
    elif o in ("-o", "--outfile"):
        outfile = a
    elif o in ("-f", "--force"):
        force = True
    else:
        usage("Unhandled argument")

if infile is None:
    usage("Please specify a memory trace file")

if outfile is None:
    outfile = './{}.npz'.format(os.path.splitext(os.path.basename(infile))[0])

if os.path.exists(outfile):
    if not force:
        ow = None
        while ow not in ('y', 'n'):
            ow = input("Warning: {} already exists. Overwrite? [y/n]: ".format(outfile))
        if ow == 'n':
            print("Exiting.")
            sys.exit(0)

print("Reading from: {}".format(infile))
print("Writing to: {}".format(outfile))

memtrace2npz.file_to_npz(infile, outfile)

