From 537472f42cbd2a380fa090f1d09a21ed3e5b44e5 Mon Sep 17 00:00:00 2001 From: Will Thames Date: Wed, 10 Sep 2014 09:07:50 +1000 Subject: [PATCH] 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) --- bin/ansible-galaxy | 8 -------- lib/ansible/utils/__init__.py | 7 +++---- 2 files changed, 3 insertions(+), 12 deletions(-) diff --git a/bin/ansible-galaxy b/bin/ansible-galaxy index 146361da93f..7598580d821 100755 --- a/bin/ansible-galaxy +++ b/bin/ansible-galaxy @@ -704,14 +704,6 @@ def execute_install(args, options, parser): print "- please specify a user/role name, or a roles file, but not both" 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 = [] if role_file: f = open(role_file, 'r') diff --git a/lib/ansible/utils/__init__.py b/lib/ansible/utils/__init__.py index 98b7f2f36b9..fa112917762 100644 --- a/lib/ansible/utils/__init__.py +++ b/lib/ansible/utils/__init__.py @@ -387,15 +387,12 @@ def role_spec_parse(role_spec): role_spec = role_spec.strip() role_version = '' + default_role_versions = dict(git='master', hg='tip') if role_spec == "" or role_spec.startswith("#"): return (None, None, None, None) 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 # 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'): @@ -412,6 +409,8 @@ def role_spec_parse(role_spec): role_name = tokens[2] else: 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)