diff --git a/src/sc/clone/cloners/cloner_runner.py b/src/sc/clone/cloners/cloner_runner.py index 8f4d3e9..0b8990b 100644 --- a/src/sc/clone/cloners/cloner_runner.py +++ b/src/sc/clone/cloners/cloner_runner.py @@ -69,6 +69,7 @@ def _make_repo_cloner_config( cache = project_config.effective_cache, repo_url = project_config.repo_url, repo_rev = project_config.repo_rev, + no_repo_verify = project_config.no_repo_verify ) if rev := cli_overrides.get("rev"): @@ -82,5 +83,9 @@ def _make_repo_cloner_config( logger.info( f"Option [-m] override manifest with [{cli_overrides.get('manifest')}]") cloner_config.manifest = cli_overrides.get("manifest") + + if cli_overrides.get("verify"): + logger.info("Option [--verify]: Run repo hooks without prompts") + cloner_config.verify = True return cloner_config \ No newline at end of file diff --git a/src/sc/clone/cloners/repo_cloner.py b/src/sc/clone/cloners/repo_cloner.py index dabec9f..6dd1646 100644 --- a/src/sc/clone/cloners/repo_cloner.py +++ b/src/sc/clone/cloners/repo_cloner.py @@ -39,6 +39,7 @@ class RepoClonerConfig(BaseModel): cache: bool = True repo_url: str | None = None repo_rev: str | None = None + no_repo_verify: bool = False verify: bool = False class RepoCloner(Cloner): @@ -94,8 +95,6 @@ def _init_repo(self, directory: Path, mirror: bool = False, reference: Path | No # If mirror is true we're creating a cache groups = "default,-notcached" if mirror else None - no_repo_verify = True if self.config.repo_url or self.config.repo_rev else False - ref_type = self._is_branch_tag_or_sha(self.config.uri, self.config.branch) if ref_type == RefType.TAG: @@ -103,19 +102,23 @@ def _init_repo(self, directory: Path, mirror: bool = False, reference: Path | No else: ref = self.config.branch - RepoLibrary.init( - self.config.uri, - branch = ref, - directory = directory, - manifest = self.config.manifest, - mirror = mirror, - reference = reference, - groups = groups, - repo_url = self.config.repo_url, - no_repo_verify = no_repo_verify, - repo_rev = self.config.repo_rev, - verify=self.config.verify - ) + try: + RepoLibrary.init( + self.config.uri, + branch = ref, + directory = directory, + manifest = self.config.manifest, + mirror = mirror, + reference = reference, + groups = groups, + repo_url = self.config.repo_url, + no_repo_verify = self.config.no_repo_verify, + repo_rev = self.config.repo_rev, + verify=self.config.verify + ) + except subprocess.CalledProcessError as e: + logger.error(f"repo init error: {e}") + sys.exit(1) def _get_manifest_hostname(self, url: str) -> str: """Extracts the hostname from a given URL. diff --git a/src/sc/clone/project_list/project_list.py b/src/sc/clone/project_list/project_list.py index f29fdac..837d5ea 100644 --- a/src/sc/clone/project_list/project_list.py +++ b/src/sc/clone/project_list/project_list.py @@ -27,6 +27,7 @@ class Project(BaseModel): cache: bool = True repo_url: str | None = None repo_rev: str | None = None + no_repo_verify: bool = False inherited: str | None = None @model_validator(mode='after')