Commit 85096379 by Will Thames

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
parent 8e0af04c
...@@ -384,14 +384,11 @@ def role_spec_parse(role_spec): ...@@ -384,14 +384,11 @@ def role_spec_parse(role_spec):
if role_spec == "" or role_spec.startswith("#"): if role_spec == "" or role_spec.startswith("#"):
return (None, None, None, None) return (None, None, None, None)
# FIXME: coding guidelines want this as a list comprehension tokens = [s.strip() for s in role_spec.split(',')]
tokens = map(lambda s: s.strip(), role_spec.split(','))
# assume https://github.com URLs are git+https:// URLs and not # assume https://github.com URLs are git+https:// URLs and not
# tarballs # tarballs unless they end in '.zip'
print "0=%s" % tokens[0] if 'github.com/' in tokens[0] and not tokens[0].startswith("git+") and not tokens[0].endswith('.tar.gz'):
if 'github.com/' in tokens[0] and not tokens[0].startswith("git+"):
print "DONE!"
tokens[0] = 'git+' + tokens[0] tokens[0] = 'git+' + tokens[0]
if '+' in tokens[0]: if '+' in tokens[0]:
...@@ -409,7 +406,7 @@ def role_spec_parse(role_spec): ...@@ -409,7 +406,7 @@ def role_spec_parse(role_spec):
def role_yaml_parse(role): 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"] role["src"] = "git+" + role["src"]
if '+' in role["src"]: if '+' in role["src"]:
(scm, src) = role["src"].split('+') (scm, src) = role["src"].split('+')
......
...@@ -825,7 +825,7 @@ class TestUtils(unittest.TestCase): ...@@ -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", "http://github.com/ansible/fakerole/fake",
{ {
'scm' : 'git', 'scm' : 'git',
...@@ -833,6 +833,16 @@ class TestUtils(unittest.TestCase): ...@@ -833,6 +833,16 @@ class TestUtils(unittest.TestCase):
'version' : '', 'version' : '',
'name' : 'fake' '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: for (spec, result) in tests:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment