From f869fd7e3a2a8590c5d20736f286dd73553e821e Mon Sep 17 00:00:00 2001 From: Marcel Haerry Date: Tue, 28 Sep 2010 18:24:01 +0200 Subject: merge brokengem and package define to one together --- manifests/brokengem.pp | 104 -------------------------------------- manifests/brokengem/cachedir.pp | 4 -- manifests/fastercsv.pp | 8 +-- manifests/gem.pp | 108 ++++++++++++++++++++++++++++++++++++++++ manifests/gem/cachedir.pp | 4 ++ manifests/package.pp | 14 ------ 6 files changed, 116 insertions(+), 126 deletions(-) delete mode 100644 manifests/brokengem.pp delete mode 100644 manifests/brokengem/cachedir.pp create mode 100644 manifests/gem.pp create mode 100644 manifests/gem/cachedir.pp delete mode 100644 manifests/package.pp diff --git a/manifests/brokengem.pp b/manifests/brokengem.pp deleted file mode 100644 index a585ff9..0000000 --- a/manifests/brokengem.pp +++ /dev/null @@ -1,104 +0,0 @@ -# Installs gems that are slightly broken -# As a name it expects the name of the gem. -# If you want to want to install a certain version -# you have to append the version to the gem name: -# -# install a version of mime-types: -# rubygems::gem{'mime-types': } -# -# install version 0.0.4 of ruby-net-ldap: -# rubygems::gem{'ruby-net-ldap-0.0.4': } -# -# uninstall polygot gem (until no such gem is anymore installed): -# rubygems::gem{'polygot': ensure => absent } -# -# uninstall ruby-net-ldap version 0.0.3 -# rubygems::gem{'ruby-net-ldap-0.0.3': ensure => absent } -# -# You can also set your own buildlfags, which will then install -# the gem in question by the gem command. -# -# You can also enforce to use the gem command to manage the gem -# by setting provider to `exec`. -# -define rubygems::brokengem( - $source = 'absent', - $provider = 'default', - $buildflags = 'absent', - $ensure = 'present' -){ - require ::rubygems - - if $name =~ /\-(\d|\.)+$/ { - $real_name = regsubst($name,'^(.*)-(\d|\.)+$','\1') - $gem_version = regsubst($name,'^(.*)-(\d+(\d|\.)+)$','\2') - } else { - $real_name = $name - } - - if $source != 'absent' { - if $ensure != 'absent' { - require rubygems::brokengem::cachedir - exec{"get-gem-$name": - command => "/usr/bin/wget -O ${rubygems::brokengem::cachedir::dir}/$name.gem $source", - creates => "${rubygems::brokengem::cachedir::dir}/$name.gem", - } - } else { - file{"${rubygems::brokengem::cachedir::dir}/$name.gem": - ensure => 'absent'; - } - } - } - - if ($buildflags != 'absent') or ($provider == 'exec') { - if $gem_version { - $gem_version_str = "-v ${gem_version}" - $gem_version_check_str = $gem_version - } else { - $gem_version_check_str = '.*' - } - - if $ensure == 'present' { - $gem_cmd = 'install' - } else { - $gem_cmd = 'uninstall -x' - } - - if $buildflags != 'absent' { - $buildflags_str = "-- --build-flags ${buildflags}" - } else { - $buildflags_str = '' - } - - exec{"manage_gem_${name}": - command => "gem ${gem_cmd} ${real_name} ${gem_version_str} ${buildflags_str}", - } - - $gem_cmd_check_str = "gem list | egrep -q '^${real_name} \\(${gem_version_check_str}\\)\$'" - if $ensure == 'present' { - Exec["manage_gem_${name}"]{ - unless => $gem_cmd_check_str - } - } else { - Exec["manage_gem_${name}"]{ - onlyif => $gem_cmd_check_str - } - } - } else { - package{"$real_name": - ensure => $ensure ? { - 'absent' => $ensure, - default => $gem_version ? { - undef => $ensure, - default => $gem_version - } - }, - provider => gem, - } - if $source != 'absent' { - Package["$name"]{ - source => "${rubygems::brokengem::cachedir::dir}/$name.gem" - } - } - } -} diff --git a/manifests/brokengem/cachedir.pp b/manifests/brokengem/cachedir.pp deleted file mode 100644 index 08f65f3..0000000 --- a/manifests/brokengem/cachedir.pp +++ /dev/null @@ -1,4 +0,0 @@ -class rubygems::brokengem::cachedir { - $dir = '/var/lib/puppet/modules/rubygems_cache' - modules_dir{'rubygems_cache': } -} diff --git a/manifests/fastercsv.pp b/manifests/fastercsv.pp index 1e6c364..95ae021 100644 --- a/manifests/fastercsv.pp +++ b/manifests/fastercsv.pp @@ -1,6 +1,6 @@ class rubygems::fastercsv { - rubygems::brokengem{'fastercsv': - ensure => present, - source => 'http://rubyforge.org/frs/download.php/43190/fastercsv-1.4.0.gem', - } + rubygems::gem{'fastercsv': + ensure => present, + source => 'http://rubyforge.org/frs/download.php/43190/fastercsv-1.4.0.gem', + } } diff --git a/manifests/gem.pp b/manifests/gem.pp new file mode 100644 index 0000000..90b3af8 --- /dev/null +++ b/manifests/gem.pp @@ -0,0 +1,108 @@ +# Installs gems that are slightly broken +# As a name it expects the name of the gem. +# If you want to want to install a certain version +# you have to append the version to the gem name: +# +# install a version of mime-types: +# rubygems::gem{'mime-types': } +# +# install version 0.0.4 of ruby-net-ldap: +# rubygems::gem{'ruby-net-ldap-0.0.4': } +# +# uninstall polygot gem (until no such gem is anymore installed): +# rubygems::gem{'polygot': ensure => absent } +# +# uninstall ruby-net-ldap version 0.0.3 +# rubygems::gem{'ruby-net-ldap-0.0.3': ensure => absent } +# +# You can also set your own buildlfags, which will then install +# the gem in question by the gem command. +# +# You can also enforce to use the gem command to manage the gem +# by setting provider to `exec`. +# +define rubygems::gem( + $ensure = 'present', + $source = 'absent', + $provider = 'default', + $buildflags = 'absent', + $requiresgcc = false +) { + require ::rubygems + if $requiresgcc { + require ::gcc + } + + if $name =~ /\-(\d|\.)+$/ { + $real_name = regsubst($name,'^(.*)-(\d|\.)+$','\1') + $gem_version = regsubst($name,'^(.*)-(\d+(\d|\.)+)$','\2') + } else { + $real_name = $name + } + + if $source != 'absent' { + if $ensure != 'absent' { + require rubygems::gem::cachedir + exec{"get-gem-$name": + command => "/usr/bin/wget -O ${rubygems::gem::cachedir::dir}/$name.gem $source", + creates => "${rubygems::gem::cachedir::dir}/$name.gem", + } + } else { + file{"${rubygems::gem::cachedir::dir}/$name.gem": + ensure => 'absent'; + } + } + } + + if ($buildflags != 'absent') or ($provider == 'exec') { + if $gem_version { + $gem_version_str = "-v ${gem_version}" + $gem_version_check_str = $gem_version + } else { + $gem_version_check_str = '.*' + } + + if $ensure == 'present' { + $gem_cmd = 'install' + } else { + $gem_cmd = 'uninstall -x' + } + + if $buildflags != 'absent' { + $buildflags_str = "-- --build-flags ${buildflags}" + } else { + $buildflags_str = '' + } + + exec{"manage_gem_${name}": + command => "gem ${gem_cmd} ${real_name} ${gem_version_str} ${buildflags_str}", + } + + $gem_cmd_check_str = "gem list | egrep -q '^${real_name} \\(${gem_version_check_str}\\)\$'" + if $ensure == 'present' { + Exec["manage_gem_${name}"]{ + unless => $gem_cmd_check_str + } + } else { + Exec["manage_gem_${name}"]{ + onlyif => $gem_cmd_check_str + } + } + } else { + package{"$real_name": + ensure => $ensure ? { + 'absent' => $ensure, + default => $gem_version ? { + undef => $ensure, + default => $gem_version + } + }, + provider => gem, + } + if $source != 'absent' { + Package["$name"]{ + source => "${rubygems::gem::cachedir::dir}/$name.gem" + } + } + } +} diff --git a/manifests/gem/cachedir.pp b/manifests/gem/cachedir.pp new file mode 100644 index 0000000..3e371e4 --- /dev/null +++ b/manifests/gem/cachedir.pp @@ -0,0 +1,4 @@ +class rubygems::gem::cachedir { + $dir = '/var/lib/puppet/modules/rubygems_cache' + modules_dir{'rubygems_cache': } +} diff --git a/manifests/package.pp b/manifests/package.pp deleted file mode 100644 index a0b604c..0000000 --- a/manifests/package.pp +++ /dev/null @@ -1,14 +0,0 @@ -define rubygems::package( - $ensure = 'present', - $requiresgcc = false -) { - if $requiresgcc { - require gcc - } - - package{$name: - provider => gem, - ensure => $ensure, - require => Package['rubygems'], - } -} -- cgit v1.2.3