From f71c2be70ec1ae6c16983ab4f09aba31af8587ce Mon Sep 17 00:00:00 2001 From: Ondřej Nosek Date: Nov 29 2023 03:21:05 +0000 Subject: `remote add` command: create a non-anonymous remote So far `x-pkg remote add` command has been creating only anonymous remote records. Now it creates remotes for the given user. And this is the default option. JIRA: RHELCMP-7802 Fixes: #599 Signed-off-by: Ondřej Nosek --- diff --git a/pyrpkg/__init__.py b/pyrpkg/__init__.py index 1dfb82b..d2d8c8a 100644 --- a/pyrpkg/__init__.py +++ b/pyrpkg/__init__.py @@ -4438,23 +4438,32 @@ class Commands(object): 'The following error occurred while trying to determine the ' 'API versions supported by MBS: {0}'.format(error_msg)) - def remote(self, remote_name, repo_name): + def remote(self, remote_name, repo_name, anon=False): """Add remote pointing repository from remote dist-git service Simply a wrapper on 'git remote ...' interface that uses internal values to get package-specific target URL. :param str remote_name: chosen name for remote - :param str repo_name: remote repository name. If remote repository has \ - same name as current repository, repo_name can be None + :param str repo_name: remote repository name. If remote repository has + same name as current repository, repo_name can be None + :param bool anon: anonymous remote will be added instead of named remote """ + if repo_name and self.distgit_namespaced and '/' not in repo_name: + if self.ns: + repo_name = '%s/%s' % (self.ns, repo_name) + else: + repo_name = 'rpms/%s' % repo_name + # gets the dist-git url for the project in the current folder. anongiturl = self._get_namespace_anongiturl(repo_name or self.ns_repo_name) + giturl = self._get_namespace_giturl(repo_name or self.ns_repo_name) + remote_url = anongiturl if anon else giturl - ret, _, _ = self._run_command(['git', 'remote', 'add', remote_name, anongiturl]) + ret, _, _ = self._run_command(['git', 'remote', 'add', remote_name, remote_url]) if ret == 0: - self.log.info("Remote '{}' for '{}' was added.".format(remote_name, anongiturl)) + self.log.info("Remote '{}' for '{}' was added.".format(remote_name, remote_url)) self._run_command(['git', 'fetch', remote_name]) def load_nameverrel_dockerfile(self): diff --git a/pyrpkg/cli.py b/pyrpkg/cli.py index 06f4c1a..6015765 100644 --- a/pyrpkg/cli.py +++ b/pyrpkg/cli.py @@ -1432,7 +1432,11 @@ class cliClient(object): default=default_remote_name) remote_add_parser.add_argument( '--repo-name', - help='Specify repo to add from source; Default to repo in working directory.') + help='Specify repo to add from source; Default to repo in working directory. ' + 'Format: repo_name | namespace/repo_name | repo_name + --namespace arg') + remote_add_parser.add_argument( + '--anonymous', '-a', action='store_true', + help='Add anonymous remote URL') remote_parser.set_defaults(command=self.remote) @@ -2885,7 +2889,8 @@ class cliClient(object): # --remote-name flag. if ("remote_name" in vars(self.args)): self.cmd.remote(self.args.remote_name, # name for remote - self.args.repo_name) # name of package; + self.args.repo_name, # name of package; + self.args.anonymous) else: # not overloading the function of "<> remote", # expecting that this will show the current remotes.