Defined Type: perl::cpan::module

Defined in:
manifests/cpan/module.pp

Overview

Define: perl::cpan::module

Installs the defined perl module using cpan

Variables:

use_package

(default=true) - Tries to install perl module with the relevant OS package If set to “no” it installs the module via a cpan command

Usage: perl::cpan::module { packagename: } Example: perl::cpan::module { ‘Net::SSLeay’: }

Parameters:

  • use_package (Any) (defaults to: false)
  • package_name (Any) (defaults to: 'package_default')
  • package_prefix (Any) (defaults to: $perl::package_prefix)
  • package_suffix (Any) (defaults to: $perl::package_suffix)
  • url (Any) (defaults to: 'url_default')
  • exec_path (Any) (defaults to: '/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin')
  • exec_environment (Any) (defaults to: [])
  • exec_timeout (Any) (defaults to: '600')
  • ensure (Any) (defaults to: 'present')
  • force (Any) (defaults to: false)


15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'manifests/cpan/module.pp', line 15

define perl::cpan::module (
  $use_package         = false,
  $package_name        = 'package_default',
  $package_prefix      = $perl::package_prefix,
  $package_suffix      = $perl::package_suffix,

  $url                 = 'url_default',
  $exec_path           = '/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin',
  $exec_environment    = [],
  $exec_timeout        = '600',

  $ensure              = 'present',
  $force               = false,
  ) {

  include ::perl::cpan

  $pkg_name = regsubst($name,'::','-')
  $real_package_name = $package_name ? {
    'package_default' => "${package_prefix}${pkg_name}${package_suffix}",
    default           => $package_name,
  }

  $bool_use_package = any2bool($use_package)

  $install_name = $url ? {
    'url_default' => $name,
    default       => $url,
  }

  if($force) { $force_string = '-f' }
  else       { $force_string = ' ' }

  $cpan_command = $ensure ? {
    'present' => "cpan ${force_string} ${install_name}",
    'absent'  => "pm-uninstall -f ${name}",
  }

  $cpan_command_check = $ensure ? {
    'present' => "perldoc -l ${name}",
    'absent'  => "perldoc -l ${name} || true",
  }

  case $bool_use_package {
    true: {
      package { "perl-${name}":
        ensure => $ensure,
        name   => $real_package_name,
      }
    }
    default: {
      exec { "cpan-${name}-${ensure}":
        command     => $cpan_command,
        unless      => $cpan_command_check,
        path        => $exec_path,
        environment => $exec_environment,
        timeout     => $exec_timeout,
        require     => $perl::cpan_require,
      }
    }
  }
}