|
128 | 128 | from git import Repo, Git
|
129 | 129 | from git.exc import InvalidGitRepositoryError, NoSuchPathError
|
130 | 130 |
|
| 131 | +import re |
| 132 | + |
| 133 | +EXTRACT_URL_RE = re.compile('[^:]*(://|@)[^/]*/') |
| 134 | + |
131 | 135 | def confirm(what, where):
|
132 | 136 | '''
|
133 | 137 | Method to show a CLI based confirmation message, waiting for a yes/no answer.
|
@@ -217,18 +221,19 @@ def set_verbosity(self, verbose): # pragma: no cover
|
217 | 221 |
|
218 | 222 | @store_parameter('<user>/<repo>')
|
219 | 223 | def set_repo_slug(self, repo_slug):
|
220 |
| - self.repo_slug = repo_slug |
221 |
| - if not repo_slug: |
| 224 | + self.repo_slug = EXTRACT_URL_RE.sub('', repo_slug) if repo_slug else repo_slug |
| 225 | + if not self.repo_slug: |
222 | 226 | self.user_name = None
|
223 | 227 | self.repo_name = None
|
224 |
| - elif '/' in repo_slug: |
225 |
| - self.user_name, self.repo_name, *overflow = repo_slug.split('/') |
| 228 | + elif '/' in self.repo_slug: |
| 229 | + # in case a full URL is given as parameter, just extract the slug part. |
| 230 | + self.user_name, self.repo_name, *overflow = self.repo_slug.split('/') |
226 | 231 | if len(overflow) != 0:
|
227 | 232 | raise ArgumentError('Too many slashes.'
|
228 | 233 | 'Format of the parameter is <user>/<repo> or <repo>.')
|
229 | 234 | else:
|
230 | 235 | self.user_name = None
|
231 |
| - self.repo_name = repo_slug |
| 236 | + self.repo_name = self.repo_slug |
232 | 237 |
|
233 | 238 | @store_parameter('<branch>')
|
234 | 239 | def set_branch(self, branch):
|
|
0 commit comments