Make ansible-galaxy work as expected

This change fixes hg galaxy roles
Roles also get installed if roles path is missing, which
the tests currently require (fixes #8950)
pull/8951/head
Will Thames 10 years ago
parent a9b5b1bf55
commit 537472f42c

@ -704,14 +704,6 @@ def execute_install(args, options, parser):
print "- please specify a user/role name, or a roles file, but not both" print "- please specify a user/role name, or a roles file, but not both"
sys.exit(1) sys.exit(1)
# error checking to ensure the specified roles path exists and is a directory
if not os.path.exists(roles_path):
print "- the specified role path %s does not exist" % roles_path
sys.exit(1)
elif not os.path.isdir(roles_path):
print "- the specified role path %s is not a directory" % roles_path
sys.exit(1)
roles_done = [] roles_done = []
if role_file: if role_file:
f = open(role_file, 'r') f = open(role_file, 'r')

@ -387,15 +387,12 @@ def role_spec_parse(role_spec):
role_spec = role_spec.strip() role_spec = role_spec.strip()
role_version = '' role_version = ''
default_role_versions = dict(git='master', hg='tip')
if role_spec == "" or role_spec.startswith("#"): if role_spec == "" or role_spec.startswith("#"):
return (None, None, None, None) return (None, None, None, None)
tokens = [s.strip() for s in role_spec.split(',')] tokens = [s.strip() for s in role_spec.split(',')]
if not tokens[0].endswith('.tar.gz'):
# pick a reasonable default branch
role_version = 'master'
# assume https://github.com URLs are git+https:// URLs and not # assume https://github.com URLs are git+https:// URLs and not
# tarballs unless they end in '.zip' # 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'): if 'github.com/' in tokens[0] and not tokens[0].startswith("git+") and not tokens[0].endswith('.tar.gz'):
@ -412,6 +409,8 @@ def role_spec_parse(role_spec):
role_name = tokens[2] role_name = tokens[2]
else: else:
role_name = repo_url_to_role_name(tokens[0]) role_name = repo_url_to_role_name(tokens[0])
if scm and not role_version:
role_version = default_role_versions.get(scm, '')
return dict(scm=scm, src=role_url, version=role_version, name=role_name) return dict(scm=scm, src=role_url, version=role_version, name=role_name)

Loading…
Cancel
Save