Add cpanm option --with-recommends (#9555)

* Add cpanm option --with-recommands

Fix #9554

* With accepted suggestions

* Use install_recommendations for cpanm option --with-recommends

* Fix typo in changelogs/fragments/9554

recommands -> recommends

* Doc for options users have for recommands and suggests dependencies

* Add new args to the command runner.

* Add test for cpanm --with-recommends
pull/9579/head
Erwan Colin 2025-01-15 20:30:15 +01:00 committed by GitHub
parent 114deae3e4
commit e2d19a968b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 73 additions and 1 deletions

View File

@ -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).

View File

@ -56,6 +56,22 @@ options:
- Only install dependencies. - Only install dependencies.
type: bool type: bool
default: false 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: version:
description: description:
- Version specification for the perl module. When O(mode) is V(new), C(cpanm) version operators are accepted. - Version specification for the perl module. When O(mode) is V(new), C(cpanm) version operators are accepted.
@ -167,6 +183,8 @@ class CPANMinus(ModuleHelper):
mirror=dict(type='str'), mirror=dict(type='str'),
mirror_only=dict(type='bool', default=False), mirror_only=dict(type='bool', default=False),
installdeps=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'), executable=dict(type='path'),
mode=dict(type='str', default='new', choices=['compatibility', 'new']), mode=dict(type='str', default='new', choices=['compatibility', 'new']),
name_check=dict(type='str') name_check=dict(type='str')
@ -181,6 +199,8 @@ class CPANMinus(ModuleHelper):
mirror=cmd_runner_fmt.as_opt_val('--mirror'), mirror=cmd_runner_fmt.as_opt_val('--mirror'),
mirror_only=cmd_runner_fmt.as_bool("--mirror-only"), mirror_only=cmd_runner_fmt.as_bool("--mirror-only"),
installdeps=cmd_runner_fmt.as_bool("--installdeps"), 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(), pkg_spec=cmd_runner_fmt.as_list(),
cpanm_version=cmd_runner_fmt.as_fixed("--version"), cpanm_version=cmd_runner_fmt.as_fixed("--version"),
) )
@ -254,7 +274,16 @@ class CPANMinus(ModuleHelper):
return return
pkg_spec = self.sanitize_pkg_spec_version(v[pkg_param], v.version) 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) self.changed = ctx.run(pkg_spec=pkg_spec)

View File

@ -361,3 +361,43 @@ test_cases:
cpanm (App::cpanminus) version 1.7047 (/usr/local/bin/cpanm) cpanm (App::cpanminus) version 1.7047 (/usr/local/bin/cpanm)
perl version 5.041005 (/usr/local/bin/perl) perl version 5.041005 (/usr/local/bin/perl)
err: "" 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: ""