From 7c632047e46bbd2e0d330d9ca50e5fd8e6c179da Mon Sep 17 00:00:00 2001 From: foefl Date: Thu, 3 Apr 2025 14:41:18 +0200 Subject: [PATCH] add clean command --- src/pycage/clean.py | 46 +++++++++++++++++++++++++++++++++++++++++++++ src/pycage/main.py | 2 ++ 2 files changed, 48 insertions(+) create mode 100644 src/pycage/clean.py diff --git a/src/pycage/clean.py b/src/pycage/clean.py new file mode 100644 index 0000000..d1aa73b --- /dev/null +++ b/src/pycage/clean.py @@ -0,0 +1,46 @@ +from pathlib import Path + +import click + +from pycage.helpers import get_interpreter, print_error + + +@click.group(help="commands to remove specified files") +def clean() -> None: + pass + + +def delete_files( + glob_pattern: str, +) -> None: + try: + pth_intp = get_interpreter() + except RuntimeError: + click.echo("Base interpreter path could not be found", err=True) + return + + base_folder = pth_intp.parent + assert base_folder.is_dir(), "base folder not a directory" + precomp_files = base_folder.glob(glob_pattern) + for file in precomp_files: + file.unlink(missing_ok=True) + + +@click.command(help="removes all pre-compiled byte code files in the distribution") +def precompiled() -> None: + try: + delete_files(r"**/*.pyc") + except Exception as err: + print_error(err) + + +@click.command(help="removes all sensitive distribution data") +def dist_info() -> None: + try: + delete_files(r"**/*url.json") + except Exception as err: + print_error(err) + + +clean.add_command(precompiled) +clean.add_command(dist_info) diff --git a/src/pycage/main.py b/src/pycage/main.py index 59102db..d792575 100644 --- a/src/pycage/main.py +++ b/src/pycage/main.py @@ -2,6 +2,7 @@ from __future__ import annotations import click +import pycage.clean import pycage.compile import pycage.files import pycage.get @@ -17,6 +18,7 @@ cli.add_command(pycage.get.get) cli.add_command(pycage.venv.venv) cli.add_command(pycage.files.copy) cli.add_command(pycage.compile.compile) +cli.add_command(pycage.clean.clean) if __name__ == "__main__": cli()