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'] |
+ } |
+} |