import subprocess import shutil import os import argparse from pathlib import Path from multiprocessing import Process parser = argparse.ArgumentParser() parser.add_argument("-o", "--output", help="output directory for .html and .txt files") args = parser.parse_args() def runcmd(cmd): if os.name == "nt": return subprocess.check_output(cmd, shell=True) with subprocess.Popen(cmd.split(), stdout=subprocess.PIPE) as proc: return proc.communicate() def compile(mjml: Path): fname = mjml.with_suffix(".html") runcmd(f"npx mjml {str(mjml)} -o {str(fname)}") if fname.is_file(): print(f"Compiled {mjml.name}") local_path = Path("mail") threads = [] for mjml in [f for f in local_path.iterdir() if f.is_file() and "mjml" in f.suffix]: p = Process(target=compile, args=(mjml,)) p.start() threads.append(p) for thread in threads: thread.join() html = [f for f in local_path.iterdir() if f.is_file() and "html" in f.suffix] output = Path(args.output) # local_path.parent / "build" / "data" output.mkdir(parents=True, exist_ok=True) 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." )