diff --git a/craft_application/commands/remote.py b/craft_application/commands/remote.py index ac29b9ae..46a34665 100644 --- a/craft_application/commands/remote.py +++ b/craft_application/commands/remote.py @@ -57,6 +57,15 @@ class RemoteBuild(ExtensibleCommand): overview = OVERVIEW always_load_project = True + def _pre_build(self, parsed_args: argparse.Namespace) -> None: + """Run steps to take before building, e.g. validations.""" + + def _get_build_args( + self, parsed_args: argparse.Namespace # noqa: ARG002 (unused parameter) + ) -> dict[str, Any]: + """Get arguments to pass to the builder.""" + return {} + @override def _fill_parser(self, parser: argparse.ArgumentParser) -> None: parser.add_argument( @@ -125,6 +134,9 @@ def _run( if parsed_args.project: self._services.remote_build.set_project(parsed_args.project) + self._pre_build(parsed_args) + build_args = self._get_build_args(parsed_args) + builder = self._services.remote_build project = cast(models.Project, self._services.project) config = cast(dict[str, Any], self.config) @@ -147,7 +159,7 @@ def _run( emit.progress( "Starting new build. It may take a while to upload large projects." ) - builds = builder.start_builds(project_dir) + builds = builder.start_builds(project_dir, **build_args) try: returncode = self._monitor_and_complete(builds=builds) diff --git a/docs/reference/changelog.rst b/docs/reference/changelog.rst index 08e02ef4..8d24ce72 100644 --- a/docs/reference/changelog.rst +++ b/docs/reference/changelog.rst @@ -10,6 +10,7 @@ X.X.X (YYYY-MMM-DD) Remote build ============ +- Add hooks to further customize functionality - Add a ``--project`` parameter for finer-tuned safety for potentially uploading private content to a public Launchpad project.