mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Allow roles to be installed from archives on github
Ensure that the automated scm determination for github.com repos still copes with .tar.gz archive files. Handling .zip archives is left as an exercise for the interested reader
This commit is contained in:
parent
8e0af04c3b
commit
850963790d
2 changed files with 15 additions and 8 deletions
|
@ -384,14 +384,11 @@ def role_spec_parse(role_spec):
|
|||
if role_spec == "" or role_spec.startswith("#"):
|
||||
return (None, None, None, None)
|
||||
|
||||
# FIXME: coding guidelines want this as a list comprehension
|
||||
tokens = map(lambda s: s.strip(), role_spec.split(','))
|
||||
tokens = [s.strip() for s in role_spec.split(',')]
|
||||
|
||||
# assume https://github.com URLs are git+https:// URLs and not
|
||||
# tarballs
|
||||
print "0=%s" % tokens[0]
|
||||
if 'github.com/' in tokens[0] and not tokens[0].startswith("git+"):
|
||||
print "DONE!"
|
||||
# tarballs unless they end in '.zip'
|
||||
if 'github.com/' in tokens[0] and not tokens[0].startswith("git+") and not tokens[0].endswith('.tar.gz'):
|
||||
tokens[0] = 'git+' + tokens[0]
|
||||
|
||||
if '+' in tokens[0]:
|
||||
|
@ -409,7 +406,7 @@ def role_spec_parse(role_spec):
|
|||
|
||||
|
||||
def role_yaml_parse(role):
|
||||
if 'github.com' in role["src"] and 'http' in role["src"] and '+' not in role["src"]:
|
||||
if 'github.com' in role["src"] and 'http' in role["src"] and '+' not in role["src"] and not role["src"].endswith('.tar.gz'):
|
||||
role["src"] = "git+" + role["src"]
|
||||
if '+' in role["src"]:
|
||||
(scm, src) = role["src"].split('+')
|
||||
|
|
|
@ -825,7 +825,7 @@ class TestUtils(unittest.TestCase):
|
|||
}
|
||||
),
|
||||
(
|
||||
# test that http://github URLs are assumed git+http://
|
||||
# test that http://github URLs are assumed git+http:// unless they end in .tar.gz
|
||||
"http://github.com/ansible/fakerole/fake",
|
||||
{
|
||||
'scm' : 'git',
|
||||
|
@ -833,6 +833,16 @@ class TestUtils(unittest.TestCase):
|
|||
'version' : '',
|
||||
'name' : 'fake'
|
||||
}
|
||||
),
|
||||
(
|
||||
# test that http://github URLs are assumed git+http:// unless they end in .tar.gz
|
||||
"http://github.com/ansible/fakerole/fake/archive/master.tar.gz",
|
||||
{
|
||||
'scm' : None,
|
||||
'src' : 'http://github.com/ansible/fakerole/fake/archive/master.tar.gz',
|
||||
'version' : '',
|
||||
'name' : 'master'
|
||||
}
|
||||
)
|
||||
]
|
||||
for (spec, result) in tests:
|
||||
|
|
Loading…
Reference in a new issue