diff --git a/src/repo2wasm/binder.py b/src/repo2wasm/binder.py index 7f72cc9..36238a3 100644 --- a/src/repo2wasm/binder.py +++ b/src/repo2wasm/binder.py @@ -28,7 +28,7 @@ def find_configuration_file(path_to_repository): raise RuntimeError("Configuration file not found.") -def get_buildpack(path_to_repository, ide, output_dir, forgiving=False): +def get_buildpack(path_to_repository, ide, output_dir, forgiving=False, ignore=[]): configuration_file_path = find_configuration_file(path_to_repository) configuration_file = os.path.basename(configuration_file_path) @@ -39,7 +39,12 @@ def get_buildpack(path_to_repository, ide, output_dir, forgiving=False): ) in ALLOWED_BINDER_CONFIGURATION_MAPPING.items(): if configuration_file == buildpack_configuration_file: return BuildPack( - path_to_repository, configuration_file_path, ide, output_dir, forgiving + path_to_repository, + configuration_file_path, + ide, + output_dir, + forgiving=forgiving, + ignore=ignore, ) raise RuntimeError("Build pack not found.") diff --git a/src/repo2wasm/buildpacks/conda.py b/src/repo2wasm/buildpacks/conda.py index 5e3b3f3..6198a7c 100644 --- a/src/repo2wasm/buildpacks/conda.py +++ b/src/repo2wasm/buildpacks/conda.py @@ -14,9 +14,22 @@ class CondaBuildPack(BaseBuildPack): def __init__( - self, repository, configuration_file, ide, output_dir, forgiving=False + self, + repository, + configuration_file, + ide, + output_dir, + forgiving=False, + ignore=[], ): - super().__init__(repository, configuration_file, ide, output_dir, forgiving) + super().__init__( + repository, + configuration_file, + ide, + output_dir, + forgiving=forgiving, + ignore=ignore, + ) logger.debug("Configuration file: %s", self.configuration_file) diff --git a/src/repo2wasm/buildpacks/install.py b/src/repo2wasm/buildpacks/install.py index 5b456ac..f0ea592 100644 --- a/src/repo2wasm/buildpacks/install.py +++ b/src/repo2wasm/buildpacks/install.py @@ -20,9 +20,22 @@ def clean_line_from_install_r(line): class InstallBuildPack(BaseBuildPack): def __init__( - self, repository, configuration_file, ide, output_dir, forgiving=False + self, + repository, + configuration_file, + ide, + output_dir, + forgiving=False, + ignore=[], ): - super().__init__(repository, configuration_file, ide, output_dir, forgiving) + super().__init__( + repository, + configuration_file, + ide, + output_dir, + forgiving=forgiving, + ignore=ignore, + ) logger.debug("Configuration file: %s", self.configuration_file) diff --git a/src/repo2wasm/buildpacks/requirements.py b/src/repo2wasm/buildpacks/requirements.py index 5572ede..58328dc 100644 --- a/src/repo2wasm/buildpacks/requirements.py +++ b/src/repo2wasm/buildpacks/requirements.py @@ -13,9 +13,22 @@ class RequirementsBuildPack(BaseBuildPack): def __init__( - self, repository, configuration_file, ide, output_dir, forgiving=False + self, + repository, + configuration_file, + ide, + output_dir, + forgiving=False, + ignore=[], ): - super().__init__(repository, configuration_file, ide, output_dir, forgiving) + super().__init__( + repository, + configuration_file, + ide, + output_dir, + forgiving=forgiving, + ignore=ignore, + ) logger.debug("Configuration file: %s", self.configuration_file) diff --git a/src/repo2wasm/cli.py b/src/repo2wasm/cli.py index 68c2792..64135fd 100644 --- a/src/repo2wasm/cli.py +++ b/src/repo2wasm/cli.py @@ -27,6 +27,13 @@ def cli(): help="Ignore the provided version number given that only a few versions are available in Wasm.", ) + parser.add_argument( + "-i", + "--ignore", + nargs="*", + help="Path regular expressions to not include as contents.", + ) + parser.add_argument( "-o", "--output-dir", @@ -78,6 +85,7 @@ def cli(): repo2wasm( args.repository, + ignore=(args.ignore if args.ignore is not None else []), ide=args.ide, output_dir=args.output_dir, forgiving=args.forgiving, diff --git a/src/repo2wasm/repo2wasm.py b/src/repo2wasm/repo2wasm.py index 1277471..4a0a2a7 100644 --- a/src/repo2wasm/repo2wasm.py +++ b/src/repo2wasm/repo2wasm.py @@ -50,7 +50,9 @@ def fetch_repository(repository): return checkout_path -def repo2wasm(repository, ide="jupyterlab", output_dir="public", forgiving=False): +def repo2wasm( + repository, ignore=[], ide="jupyterlab", output_dir="public", forgiving=False +): output_dir_absolute_path = os.path.abspath(output_dir) logger.info("Repository: %s", repository) @@ -59,7 +61,9 @@ def repo2wasm(repository, ide="jupyterlab", output_dir="public", forgiving=False checkout_path = fetch_repository(repository) try: - buildpack = get_buildpack(checkout_path, ide, output_dir, forgiving) + buildpack = get_buildpack( + checkout_path, ide, output_dir, forgiving=forgiving, ignore=ignore + ) buildpack.doit_run("build") buildpack.doit_run("post_build")