#!/usr/bin/env python3
import os
from pathlib import Path
import tempfile
import shutil
import subprocess


DOCKERFILE_TEXT = """
FROM busybox
COPY . /build-context
WORKDIR /build-context
CMD find .
"""

def dockerignore_check(args):
    ignore_file = Path(args.file)

    if not ignore_file.exists():
        print(f"Dockerignore file {ignore_file} doesn't exist.")

    with tempfile.TemporaryDirectory() as td:
        dpath = Path(td)

        docker_path = dpath / "Dockerfile"
        ignore_path = dpath / "Dockerfile.dockerignore"
        docker_path.write_text(DOCKERFILE_TEXT)
        shutil.copyfile(ignore_file, ignore_path)

        env = os.environ.copy()
        env["DOCKER_BUILDKIT"] = "1"
        subprocess.run(
            f"docker image build --no-cache -t dockerignore-build-context -f {docker_path} .".split(),
            env=env,
            stdout=subprocess.DEVNULL,
            stderr=subprocess.DEVNULL,
        )

        subprocess.run(
            "docker run -it --rm dockerignore-build-context".split(),
            env=env,
        )

        subprocess.run(
            "docker image rm dockerignore-build-context".split(),
            env=env,
            stdout=subprocess.DEVNULL,
            stderr=subprocess.DEVNULL,
        )



if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser(
        ",di",
        description="Shows all files in a project seen by Docker after applying an ignore file.",
    )
    parser.add_argument("file")
    args = parser.parse_args()
    dockerignore_check(args)
