| Index: modules/adblockplus/manifests/mercurial/extension.pp |
| =================================================================== |
| new file mode 100644 |
| --- /dev/null |
| +++ b/modules/adblockplus/manifests/mercurial/extension.pp |
| @@ -0,0 +1,80 @@ |
| +# == Type: adblockplus::mercurial::extension |
| +# |
| +# Setup rotation for a particular log file. |
| +# |
| +# === Parameters: |
| +# |
| +# [*config*] |
| +# Overwrite the default hgrc.d/$name file for Mercurial extensions. |
| +# |
| +# [*package*] |
| +# Overwrite the default package/extension options. |
| +# |
| +# === Examples: |
| +# |
| +# adblockplus::mercurial::extension {'example': |
| +# name => 'pager', |
| +# config => { |
| +# content => join([ |
| +# '[extensions]', |
| +# 'pager = ', |
| +# '[pager]', |
| +# 'pager = LESS=FSRX less', |
| +# ], "\n"), |
| +# } |
| +# } |
| +# |
| +# adblockplus::mercurial::extension {'hggit': |
| +# package => { |
| +# 'ensure' => 'latest', |
| +# 'name' => 'hg-git', |
| +# 'provider' => 'pip', |
| +# 'install_options' => ['https://pypi.python.org/pypi/hg-git'], |
| +# }, |
| +# } |
| +# |
| +# adblockplus::mercurial::extension {'hgext.git': |
| +# package => { |
| +# 'ensure' => 'absent', |
| +# 'name' => 'mercurial-git', |
| +# }, |
| +# } |
| +# |
| +define adblockplus::mercurial::extension ( |
| + $config = {}, |
| + $package = undef, |
| +) { |
| + |
| + include adblockplus::mercurial |
| + include stdlib |
| + |
| + # https://docs.puppet.com/puppet/latest/lang_conditional.html#selectors |
| + # https://docs.puppet.com/puppet/latest/types/file.html#file-attribute-content |
| + # https://docs.puppet.com/puppet/latest/types/file.html#file-attribute-source |
| + $default_content = $config['source'] ? { |
| + undef => template('adblockplus/mercurial/hgext.erb'), |
| + default => undef, |
| + } |
| + |
| + # https://forge.puppet.com/puppetlabs/stdlib#ensure_resource |
| + # https://forge.puppet.com/puppetlabs/stdlib#merge |
| + ensure_resource('file', "$name.rc", merge({ |
| + content => $default_content, |
| + ensure => ensure_file_state($adblockplus::mercurial::ensure), |
| + path => "/etc/mercurial/hgrc.d/$name.rc", |
| + }, $config)) |
| + |
| + # https://docs.puppet.com/puppet/latest/lang_relationships.html |
| + File["$name.rc"] <- Package['mercurial'] |
| + |
| + # https://docs.puppet.com/puppet/latest/function.html#defined |
| + if defined('$package') { |
| + |
| + ensure_resource('package', $name, merge({ |
| + ensure => $adblockplus::mercurial::ensure, |
| + require => Package['python-dev'], |
| + }, $package)) |
| + |
| + Package[$name] <- Package['mercurial'] |
| + } |
| +} |