Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add cpanm option --with-recommends #9555

Open
wants to merge 7 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
minor_changes:
- cpanm - enable usage of option ``--with-recommends`` (https://github.com/ansible-collections/community.general/issues/9554, https://github.com/ansible-collections/community.general/pull/9555).
- cpanm - enable usage of option ``--with-suggests`` (https://github.com/ansible-collections/community.general/pull/9555).
31 changes: 30 additions & 1 deletion plugins/modules/cpanm.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,22 @@
- Only install dependencies.
type: bool
default: false
install_recommendations:
description:
- If V(true), installs dependencies declared as recommends per META spec.
- If V(false), it ensures the dependencies declared as recommends are not installed, overriding any decision made earlier in E(PERL_CPANM_OPT).
- If parameter is not set, C(cpanm) will use its existing defaults.
- When these dependencies fail to install, cpanm continues the installation, since they are just recommendation.
type: bool
version_added: 10.3.0
install_suggestions:
description:
- If V(true), installs dependencies declared as suggests per META spec.
- If V(false), it ensures the dependencies declared as suggests are not installed, overriding any decision made earlier in E(PERL_CPANM_OPT).
- If parameter is not set, C(cpanm) will use its existing defaults.
- When these dependencies fail to install, cpanm continues the installation, since they are just suggestion.
type: bool
version_added: 10.3.0
version:
description:
- Version specification for the perl module. When O(mode) is V(new), C(cpanm) version operators are accepted.
Expand Down Expand Up @@ -167,6 +183,8 @@ class CPANMinus(ModuleHelper):
mirror=dict(type='str'),
mirror_only=dict(type='bool', default=False),
installdeps=dict(type='bool', default=False),
install_recommendations=dict(type='bool'),
install_suggestions=dict(type='bool'),
executable=dict(type='path'),
mode=dict(type='str', default='new', choices=['compatibility', 'new']),
name_check=dict(type='str')
Expand All @@ -181,6 +199,8 @@ class CPANMinus(ModuleHelper):
mirror=cmd_runner_fmt.as_opt_val('--mirror'),
mirror_only=cmd_runner_fmt.as_bool("--mirror-only"),
installdeps=cmd_runner_fmt.as_bool("--installdeps"),
install_recommendations=cmd_runner_fmt.as_bool("--with-recommends", "--without-recommends", ignore_none=True),
install_suggestions=cmd_runner_fmt.as_bool("--with-suggests", "--without-suggests", ignore_none=True),
pkg_spec=cmd_runner_fmt.as_list(),
cpanm_version=cmd_runner_fmt.as_fixed("--version"),
)
Expand Down Expand Up @@ -254,7 +274,16 @@ def process(rc, out, err):
return
pkg_spec = self.sanitize_pkg_spec_version(v[pkg_param], v.version)

with self.runner(['notest', 'locallib', 'mirror', 'mirror_only', 'installdeps', 'pkg_spec'], output_process=process) as ctx:
with self.runner([
'notest',
'locallib',
'mirror',
'mirror_only',
'installdeps',
'install_recommendations',
'install_suggestions',
'pkg_spec'
], output_process=process) as ctx:
self.changed = ctx.run(pkg_spec=pkg_spec)


Expand Down
40 changes: 40 additions & 0 deletions tests/unit/plugins/modules/test_cpanm.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -357,3 +357,43 @@
cpanm (App::cpanminus) version 1.7047 (/usr/local/bin/cpanm)
perl version 5.041005 (/usr/local/bin/perl)
err: ""
- id: install_dancer_with_recommends
input:
name: Dancer2
install_recommendations: true
output:
changed: true
mocks:
run_command:
- command: [/testbin/cpanm, --version]
environ: *env-def-true
rc: 0
out: |
cpanm (App::cpanminus) version 1.7047 (/usr/local/bin/cpanm)
perl version 5.041005 (/usr/local/bin/perl)
err: ""
- command: [/testbin/cpanm, --with-recommends, Dancer2]
environ: *env-def-true
rc: 0
out: ""
err: ""
- id: install_dancer_with_suggests
input:
name: Dancer2
install_suggestions: true
output:
changed: true
mocks:
run_command:
- command: [/testbin/cpanm, --version]
environ: *env-def-true
rc: 0
out: |
cpanm (App::cpanminus) version 1.7047 (/usr/local/bin/cpanm)
perl version 5.041005 (/usr/local/bin/perl)
err: ""
- command: [/testbin/cpanm, --with-suggests, Dancer2]
environ: *env-def-true
rc: 0
out: ""
err: ""
Loading