Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
ansible
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenEdx
ansible
Commits
6ebf16bf
Commit
6ebf16bf
authored
Mar 01, 2013
by
Michael DeHaan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Some very minor stylistic tweaks to the gem module.
parent
64c1cc3e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
43 additions
and
41 deletions
+43
-41
library/gem
+43
-41
No files found.
library/gem
View file @
6ebf16bf
...
...
@@ -34,13 +34,10 @@ options:
description: The desired state of the gem. C(latest) ensures that the latest version is installed.
required: true
choices: [present, absent, latest]
gemsource:
gem
_
source:
description: The path to a local gem used as installation source.
required: false
http-proxy:
description: HTTP Proxy for remote operations.
required: false
includedependencies:
include_dependencies:
description: Wheter to include dependencies or not.
required: false
choices: [true, false]
...
...
@@ -52,53 +49,59 @@ options:
version:
description: Version of the gem to be installed/removed.
required: false
examples:
- code: gem name=vagrant version=1.0 state=present
description: Installs version 1.0 of vagrant.
- code: gem name=rake state=latest
description: Installs latest available version of rake.
- code: gem name=rake gemsource=/path/to/gems/rake-1.0.gem state=present
description: Installs rake version 1.0 from a local gem on disk.
author: Johan Wiren
'''
EXAMPLES
=
'''
# Installs version 1.0 of vagrant.
gem: name=vagrant version=1.0 state=present
# Installs latest available version of rake.
gem: name=rake state=latest
# Installs rake version 1.0 from a local gem on disk.
gem: name=rake gem_source=/path/to/gems/rake-1.0.gem state=present
'''
import
re
def
getinstalledversions
(
module
,
remote
=
False
):
def
get_installed_versions
(
module
,
remote
=
False
):
cmd
=
[
module
.
get_bin_path
(
'gem'
,
True
)
]
cmd
.
append
(
'query'
)
if
remote
:
cmd
.
append
(
'--remote'
)
if
module
.
params
[
'http-proxy'
]:
cmd
.
extend
([
'--http-proxy'
,
module
.
params
[
'http-proxy'
]
])
if
module
.
params
[
'repository'
]:
cmd
.
extend
([
'--source'
,
module
.
params
[
'repository'
]
])
cmd
.
append
(
'-n'
)
cmd
.
append
(
'^
%
s$'
%
module
.
params
[
'name'
])
(
rc
,
out
,
err
)
=
module
.
run_command
(
cmd
,
check_rc
=
True
)
installedversions
=
[]
installed
_
versions
=
[]
for
line
in
out
.
splitlines
():
match
=
re
.
match
(
r"\S+\s+\((.+)\)"
,
line
)
if
match
:
versions
=
match
.
group
(
1
)
for
version
in
versions
.
split
(
', '
):
installedversions
.
append
(
version
)
return
installedversions
installed
_
versions
.
append
(
version
)
return
installed
_
versions
def
exists
(
module
):
if
module
.
params
[
'state'
]
==
'latest'
:
remoteversions
=
get
installed
versions
(
module
,
remote
=
True
)
remoteversions
=
get
_installed_
versions
(
module
,
remote
=
True
)
if
remoteversions
:
module
.
params
[
'version'
]
=
remoteversions
[
0
]
installed
versions
=
getinstalled
versions
(
module
)
installed
_versions
=
get_installed_
versions
(
module
)
if
module
.
params
[
'version'
]:
if
module
.
params
[
'version'
]
in
installedversions
:
if
module
.
params
[
'version'
]
in
installed
_
versions
:
return
True
else
:
if
installedversions
:
if
installed
_
versions
:
return
True
return
False
def
uninstall
(
module
):
if
module
.
check_mode
:
return
cmd
=
[
module
.
get_bin_path
(
'gem'
,
True
)
]
...
...
@@ -111,6 +114,7 @@ def uninstall(module):
module
.
run_command
(
cmd
,
check_rc
=
True
)
def
install
(
module
):
if
module
.
check_mode
:
return
cmd
=
[
module
.
get_bin_path
(
'gem'
,
True
)
]
...
...
@@ -119,41 +123,39 @@ def install(module):
cmd
.
extend
([
'--version'
,
module
.
params
[
'version'
]
])
if
module
.
params
[
'repository'
]:
cmd
.
extend
([
'--source'
,
module
.
params
[
'repository'
]
])
if
module
.
params
[
'http-proxy'
]:
cmd
.
extend
([
'--http-proxy'
,
module
.
params
[
'http-proxy'
]
])
if
module
.
params
[
'includedependencies'
]:
if
module
.
params
[
'include_dependencies'
]:
cmd
.
append
(
'--include-dependencies'
)
cmd
.
append
(
'--no-rdoc'
)
cmd
.
append
(
'--no-ri'
)
cmd
.
append
(
module
.
params
[
'gemsource'
])
cmd
.
append
(
module
.
params
[
'gem
_
source'
])
module
.
run_command
(
cmd
,
check_rc
=
True
)
def
main
():
module
=
AnsibleModule
(
argument_spec
=
{
'gemsource'
:
{
'required'
:
False
},
'http-proxy'
:
{
'required'
:
False
},
'includedependencies'
:
{
'required'
:
False
,
'default'
:
True
,
'choices'
:
BOOLEANS
},
'name'
:
{
'required'
:
True
},
'repository'
:
{
'required'
:
False
,
'aliases'
:[
'source'
]},
'state'
:
{
'required'
:
True
,
'choices'
:[
'present'
,
'absent'
,
'latest'
]},
'version'
:
{
'required'
:
False
},
},
argument_spec
=
dict
(
gem_source
=
dict
(
required
=
False
,
type
=
'str'
),
include_dependencies
=
dict
(
required
=
False
,
default
=
True
,
type
=
'bool'
),
name
=
dict
(
required
=
True
,
type
=
'str'
),
repository
=
dict
(
required
=
False
,
aliases
=
[
'source'
],
type
=
'str'
),
state
=
dict
(
required
=
False
,
choices
=
[
'present'
,
'absent'
,
'latest'
],
type
=
'str'
),
version
=
dict
(
required
=
False
,
type
=
'str'
),
),
supports_check_mode
=
True
,
mutually_exclusive
=
[
[
'gemsource'
,
'repository'
],
[
'gemsource'
,
'version'
]
],
)
mutually_exclusive
=
[
[
'gem_source'
,
'repository'
],
[
'gem_source'
,
'version'
]
],
)
if
module
.
params
[
'version'
]
and
module
.
params
[
'state'
]
==
'latest'
:
module
.
fail_json
(
msg
=
"Cannot specify version when state=latest"
)
if
module
.
params
[
'gemsource'
]
and
module
.
params
[
'state'
]
==
'latest'
:
if
module
.
params
[
'gem
_
source'
]
and
module
.
params
[
'state'
]
==
'latest'
:
module
.
fail_json
(
msg
=
"Cannot maintain state=latest when installing from local source"
)
if
module
.
params
[
'gemsource'
]
is
not
'null'
:
module
.
params
[
'gemsource'
]
=
module
.
params
[
'name'
]
if
module
.
params
[
'gem
_
source'
]
is
not
'null'
:
module
.
params
[
'gem
_
source'
]
=
module
.
params
[
'name'
]
changed
=
False
if
module
.
params
[
'state'
]
in
[
'present'
,
'latest'
]:
if
module
.
params
[
'state'
]
in
[
'present'
,
'latest'
]:
if
not
exists
(
module
):
install
(
module
)
changed
=
True
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment