diff --git a/squatter/__main__.py b/squatter/__main__.py index 429dd08..701d38f 100644 --- a/squatter/__main__.py +++ b/squatter/__main__.py @@ -12,6 +12,7 @@ def cli() -> None: # pragma: no cover @cli.command(help="Generate a package") +@click.option("--keep", is_flag=True, default=False, help="Do not delete temp dir") @click.option( "--upload", is_flag=True, default=False, help="Whether to invoke twine upload" ) @@ -21,11 +22,17 @@ def cli() -> None: # pragma: no cover ) @click.argument("package_name") def generate( - package_name: str, upload: bool, author: Optional[str], author_email: Optional[str] + package_name: str, + upload: bool, + keep: bool, + author: Optional[str], + author_email: Optional[str], ) -> None: # TODO flag for delete - with tempfile.TemporaryDirectory(prefix=package_name) as d: + with tempfile.TemporaryDirectory(prefix=package_name, delete=not keep) as d: env = Env(d) + if keep: + print("Generating in", d) env.generate( package_name=package_name, author=author, author_email=author_email ) diff --git a/squatter/tests/__init__.py b/squatter/tests/__init__.py index 1f1d78f..911d7c6 100644 --- a/squatter/tests/__init__.py +++ b/squatter/tests/__init__.py @@ -1,3 +1,4 @@ +import re import tarfile import unittest from pathlib import Path @@ -106,3 +107,14 @@ def patched_check_call(cmd: List[str], **kwargs: Any) -> Any: self.assertEqual("", result.output) self.assertFalse(result.exception) self.assertEqual(1, uploads) + + @patch("squatter.templates.check_output") + @patch("squatter.templates.check_call") + def test_cli_keep_flag(self, check_call_mock: Any, check_output_mock: Any) -> None: + runner = CliRunner() + result = runner.invoke(generate, ["--keep", "foo"]) + m = re.match("Generating in (.+)", result.output) + assert m is not None + assert Path(m.group(1)).exists() + assert Path(m.group(1), "pyproject.toml") + self.assertFalse(result.exception)