#!/usr/bin/env python3

import difflib
import os
import pprint
import shutil
import sys

SRC_PATH = os.path.join(sys.argv[1])
DST_PATH = os.path.join(sys.argv[2])

assert os.path.exists(SRC_PATH), SRC_PATH
assert os.path.exists(DST_PATH), DST_PATH

for f in list(sorted(os.listdir(SRC_PATH))):
    af = os.path.join(SRC_PATH, f)
    bf = os.path.join(DST_PATH, f)

    assert os.path.exists(af), af
    if os.path.exists(bf):
        print("Already exists", bf)
        continue
    else:
        print("        Copied", bf)
        shutil.copyfile(af, bf)
        continue
