from pathlib import Path
import shutil

def merge_into(src: Path | str, dest: Path | str, check_date: bool = True):
    src = Path(src)
    dest = Path(dest)
    
    changed = False
    
    for (cd, _, files) in src.walk():
        for file in files:
            src_file = cd / file
            dest_file = dest / src_file.relative_to(src)
            
            # Don't update if dest is newer than source
            if check_date and dest_file.exists() and src_file.stat().st_mtime < dest_file.stat().st_mtime:
                continue
            
            dest_file.parent.mkdir(parents=True, exist_ok=True)
            _ = shutil.copyfile(src_file, dest_file)
            changed = True
            
    return changed