import subprocess
import shutil
import os
import argparse
from pathlib import Path

parser = argparse.ArgumentParser()

parser.add_argument(
    "-y", "--yes", help="use assumed node bin directory.", action="store_true"
)


def runcmd(cmd):
    if os.name == "nt":
        return subprocess.check_output(cmd, shell=True)
    proc = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
    return proc.communicate()


local_path = Path(__file__).resolve().parent
out = runcmd("npm bin")

try:
    node_bin = Path(out[0].decode("utf-8").rstrip())
except:
    node_bin = Path(out.decode("utf-8").rstrip())

args = parser.parse_args()

if not args.yes:
    print(f'assuming npm bin directory "{node_bin}". Is this correct?')
    if input("[yY/nN]: ").lower() == "n":
        node_bin = local_path.parent / "node_modules" / ".bin"
        print(f'this? "{node_bin}"')
        if input("[yY/nN]: ").lower() == "n":
            node_bin = input("input bin directory: ")

for mjml in [f for f in local_path.iterdir() if f.is_file() and "mjml" in f.suffix]:
    print(f"Compiling {mjml.name}")
    fname = mjml.with_suffix(".html")
    runcmd(f'{str(node_bin / "mjml")} {str(mjml)} -o {str(fname)}')
    if fname.is_file():
        print("Done.")

html = [f for f in local_path.iterdir() if f.is_file() and "html" in f.suffix]

output = local_path.parent / "data"

for f in html:
    shutil.copy(str(f), str(output / f.name))
    print(f"Copied {f.name} to {str(output / f.name)}")
    txtfile = f.with_suffix(".txt")
    if txtfile.is_file():
        shutil.copy(str(txtfile), str(output / txtfile.name))
        print(f"Copied {txtfile.name} to {str(output / txtfile.name)}")
    else:
        print(
            f"Warning: {txtfile.name} does not exist. Text versions of emails should be supplied."
        )
