More ansible-galaxy fixes for the old spec file format
This commit is contained in:
parent
fb822a4305
commit
9c9897805f
3 changed files with 28 additions and 7 deletions
|
@ -318,7 +318,8 @@ class GalaxyCLI(CLI):
|
||||||
# roles listed in a file, one per line
|
# roles listed in a file, one per line
|
||||||
for rline in f.readlines():
|
for rline in f.readlines():
|
||||||
self.display.debug('found role %s in text file' % str(rline))
|
self.display.debug('found role %s in text file' % str(rline))
|
||||||
roles_left.append(GalaxyRole(self.galaxy, **RoleRequirement.role_yaml_parse(rline)))
|
role = RoleRequirement.role_yaml_parse(rline)
|
||||||
|
roles_left.append(GalaxyRole(self.galaxy, **role))
|
||||||
f.close()
|
f.close()
|
||||||
except (IOError, OSError) as e:
|
except (IOError, OSError) as e:
|
||||||
self.display.error('Unable to open %s: %s' % (role_file, str(e)))
|
self.display.error('Unable to open %s: %s' % (role_file, str(e)))
|
||||||
|
|
|
@ -113,11 +113,31 @@ class RoleRequirement(RoleDefinition):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def role_yaml_parse(role):
|
def role_yaml_parse(role):
|
||||||
|
|
||||||
|
if isinstance(role, string_types):
|
||||||
|
name = None
|
||||||
|
scm = None
|
||||||
|
src = None
|
||||||
|
version = None
|
||||||
|
if ',' in role:
|
||||||
|
if role.count(',') == 1:
|
||||||
|
(src, version) = role.strip().split(',', 1)
|
||||||
|
elif role.count(',') == 2:
|
||||||
|
(src, version, name) = role.strip().split(',', 2)
|
||||||
|
else:
|
||||||
|
raise AnsibleError("Invalid role line (%s). Proper format is 'role_name[,version[,name]]'" % role)
|
||||||
|
else:
|
||||||
|
src = role
|
||||||
|
|
||||||
|
if name is None:
|
||||||
|
name = RoleRequirement.repo_url_to_role_name(src)
|
||||||
|
if '+' in src:
|
||||||
|
(scm, src) = src.split('+', 1)
|
||||||
|
|
||||||
|
return dict(name=name, src=src, scm=scm, version=version)
|
||||||
|
|
||||||
if 'role' in role:
|
if 'role' in role:
|
||||||
# Old style: {role: "galaxy.role,version,name", other_vars: "here" }
|
# Old style: {role: "galaxy.role,version,name", other_vars: "here" }
|
||||||
role = RoleRequirement.role_spec_parse(role['role'])
|
role = RoleRequirement.role_spec_parse(role['role'])
|
||||||
#if 'name' in role:
|
|
||||||
# del role['name']
|
|
||||||
else:
|
else:
|
||||||
role = role.copy()
|
role = role.copy()
|
||||||
# New style: { src: 'galaxy.role,version,name', other_vars: "here" }
|
# New style: { src: 'galaxy.role,version,name', other_vars: "here" }
|
||||||
|
@ -157,7 +177,7 @@ class RoleRequirement(RoleDefinition):
|
||||||
raise AnsibleError("error executing: %s" % " ".join(clone_cmd))
|
raise AnsibleError("error executing: %s" % " ".join(clone_cmd))
|
||||||
rc = popen.wait()
|
rc = popen.wait()
|
||||||
if rc != 0:
|
if rc != 0:
|
||||||
raise AnsibleError ("- command %s failed in directory %s" % (' '.join(clone_cmd), tempdir))
|
raise AnsibleError ("- command %s failed in directory %s (rc=%s)" % (' '.join(clone_cmd), tempdir, rc))
|
||||||
|
|
||||||
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix='.tar')
|
temp_file = tempfile.NamedTemporaryFile(delete=False, suffix='.tar')
|
||||||
if scm == 'hg':
|
if scm == 'hg':
|
||||||
|
@ -177,7 +197,7 @@ class RoleRequirement(RoleDefinition):
|
||||||
stderr=devnull, stdout=devnull)
|
stderr=devnull, stdout=devnull)
|
||||||
rc = popen.wait()
|
rc = popen.wait()
|
||||||
if rc != 0:
|
if rc != 0:
|
||||||
raise AnsibleError("- command %s failed in directory %s" % (' '.join(archive_cmd), tempdir))
|
raise AnsibleError("- command %s failed in directory %s (rc=%s)" % (' '.join(archive_cmd), tempdir, rc))
|
||||||
|
|
||||||
shutil.rmtree(tempdir, ignore_errors=True)
|
shutil.rmtree(tempdir, ignore_errors=True)
|
||||||
return temp_file.name
|
return temp_file.name
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
git+http://bitbucket.org/willthames/git-ansible-galaxy,v1.4
|
git+https://bitbucket.org/willthames/git-ansible-galaxy,v1.4
|
||||||
hg+http://bitbucket.org/willthames/hg-ansible-galaxy
|
hg+https://bitbucket.org/willthames/hg-ansible-galaxy
|
||||||
https://bitbucket.org/willthames/http-ansible-galaxy/get/master.tar.gz,,http-role
|
https://bitbucket.org/willthames/http-ansible-galaxy/get/master.tar.gz,,http-role
|
||||||
git+git@github.com:geerlingguy/ansible-role-php.git
|
git+git@github.com:geerlingguy/ansible-role-php.git
|
||||||
|
|
Loading…
Reference in a new issue