def test_load() -> None: contents = """ repos: - src: foo url: [email protected]:foo.git branch: next - src: bar url: [email protected]:bar.git branch: master sha1: ad2b68539c78e749a372414165acdf2a1bb68203 - src: master url: [email protected]:master.git tag: v0.1 copy: - src: top.cmake dest: CMakeLists.txt - src: .clang-format """ manifest = tsrc.Manifest() parsed = ruamel.yaml.safe_load(contents) manifest.apply_config(parsed) assert manifest.get_repos() == [ tsrc.Repo( remotes=[ tsrc.repo.Remote(name="origin", url="[email protected]:foo.git") ], src="foo", branch="next", sha1=None, tag=None, ), tsrc.Repo( remotes=[ tsrc.repo.Remote(name="origin", url="[email protected]:bar.git") ], src="bar", branch="master", sha1="ad2b68539c78e749a372414165acdf2a1bb68203", tag=None, ), tsrc.Repo( remotes=[ tsrc.repo.Remote(name="origin", url="[email protected]:master.git") ], src="master", branch="master", sha1=None, tag="v0.1", ), ] assert manifest.copyfiles == [ tsrc.Copy("master", "top.cmake", "CMakeLists.txt"), tsrc.Copy("master", ".clang-format", ".clang-format"), ]
def _handle_repo(self, repo_config: RepoConfig) -> None: src = repo_config["src"] branch = repo_config.get("branch", "master") tag = repo_config.get("tag") sha1 = repo_config.get("sha1") url = repo_config.get("url") if url: origin = tsrc.Remote(name="origin", url=url) remotes = [origin] else: remotes = self._handle_remotes(repo_config) repo = tsrc.Repo(src=src, branch=branch, sha1=sha1, tag=tag, remotes=remotes) self._repos.append(repo)
def load(self, contents): self.copyfiles = list() parsed = ruamel.yaml.safe_load(contents) or dict() self.gitlab = parsed.get("gitlab") repos = parsed.get("repos") or list() for repo_config in repos: repo_url = repo_config["url"] repo_src = repo_config["src"] repo_branch = repo_config.get("branch", "master") repo = tsrc.Repo(url=repo_url, src=repo_src, branch=repo_branch) self.repos.append(repo) if "copy" in repo_config: to_cp = repo_config["copy"] for item in to_cp: src = os.path.join(repo_src, item["src"]) self.copyfiles.append((src, item["dest"]))
def load(self, data): self.copyfiles = list() self.gitlab = data.get("gitlab") repos = data.get("repos") or list() for repo_config in repos: url = repo_config["url"] src = repo_config["src"] branch = repo_config.get("branch", "master") fixed_ref = repo_config.get("fixed_ref") repo = tsrc.Repo(url=url, src=src, branch=branch, fixed_ref=fixed_ref) self.repos.append(repo) self._handle_copies(repo_config)
def test_load() -> None: contents = """ gitlab: url: http://gitlab.example.com github_enterprise: url: http://github.example.com repos: - src: foo url: [email protected]:foo.git branch: next - src: bar url: [email protected]:bar.git branch: master sha1: ad2b68539c78e749a372414165acdf2a1bb68203 - src: master url: [email protected]:master.git tag: v0.1 copy: - src: top.cmake dest: CMakeLists.txt - src: .clang-format """ manifest = tsrc.Manifest() parsed = ruamel.yaml.safe_load(contents) manifest.load(parsed) assert manifest.gitlab assert manifest.gitlab["url"] == "http://gitlab.example.com" assert manifest.github_enterprise assert manifest.github_enterprise["url"] == "http://github.example.com" assert manifest.get_repos() == [ tsrc.Repo( remotes=[ tsrc.repo.Remote(name="origin", url="[email protected]:foo.git") ], src="foo", branch="next", sha1=None, tag=None, ), tsrc.Repo( remotes=[ tsrc.repo.Remote(name="origin", url="[email protected]:bar.git") ], src="bar", branch="master", sha1="ad2b68539c78e749a372414165acdf2a1bb68203", tag=None, ), tsrc.Repo( remotes=[ tsrc.repo.Remote(name="origin", url="[email protected]:master.git") ], src="master", branch="master", sha1=None, tag="v0.1", ), ] assert manifest.copyfiles == [ (os.path.join("master", "top.cmake"), "CMakeLists.txt"), (os.path.join("master", ".clang-format"), ".clang-format"), ]