| Index: modules/hg/manifests/init.pp |
| diff --git a/modules/hg/manifests/init.pp b/modules/hg/manifests/init.pp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..f7ecd7c6fb89ca012e6af05d3e20fe1f7ebb9be6 |
| --- /dev/null |
| +++ b/modules/hg/manifests/init.pp |
| @@ -0,0 +1,142 @@ |
| +# == Class: hg |
| +# |
| +# A very basic Mercurial client integration. |
| +# |
| +# === Parameters: |
| +# |
| +# Below please find a list of parameters recognized by class hg: |
| +# |
| +# [*path*] |
| +# A $path to pass on to exec{} when invoking commands. Can be overwritten |
| +# in each named type defined by class hg. |
| +# |
| +# [*cwd*] |
| +# A working directory ($cwd) to pass on to exec{} when invoking commands. |
| +# Can be overwritten in each named type defined by class hg. |
| +# |
| +# [*package*] |
| +# The name of the Mercurial (client) package on the target system. |
| +# |
| +# [*post_update*] |
| +# An optional shell command to trigger after a successful hg::update(), |
| +# using the local repository as working directory. |
| +# |
| +# === Examples: |
| +# |
| +# Below please find a set of examples demonstrating the use of class hg: |
| +# |
| +# hg { |
| +# path => '/usr/local/bin', |
| +# post_update => |
| +# shellquote('test', '-e', 'ensure_dependencies.py') + ' && ' + |
| +# shellquote('python', 'ensure_dependencies.py'), |
| +# } |
| +# |
| +# hg::ensure {'/opt/sitescripts': |
| +# source => 'https://hg.adblockplus.org/sitescripts', |
| +# revision => 'tip', |
| +# } |
|
Wladimir Palant
2015/01/13 08:10:48
Does this API make sense for us? We typically don'
mathias
2015/06/23 10:45:15
Well, the revision parameter is optional (and now
|
| +# |
| +class hg( |
| + $path = '/usr/local/bin:/usr/bin:/bin', |
| + $cwd = '/', |
| + $package = 'mercurial', |
| + $post_update = '', |
| + $user = 'root') { |
| + |
| + include stdlib |
| + |
| + package {$package: |
| + ensure => installed, |
|
Wladimir Palant
2015/01/13 08:10:48
Does a custom path make sense if you require Mercu
mathias
2015/06/23 10:45:14
The custom path is also used to ensure the $PATH f
|
| + } |
| + |
| + Exec { |
| + path => $path, |
| + cwd => $cwd, |
| + } |
| + |
| + define clone( |
| + $source, |
| + $user = $user, |
| + $target = $name) { |
| + |
| + # Allow for accessing $hg::* class parameters |
| + include hg |
| + |
| + $command = shellquote('hg', 'clone', $source, $target) |
| + |
| + exec {$command: |
| + creates => $target, |
| + user => $user, |
| + require => Package[$hg::package], |
| + } |
| + } |
| + |
| + define pull( |
| + $source = '--', |
| + $user = $user, |
| + $target = $name) { |
| + |
| + # Allow for accessing $hg::* class parameters |
| + include hg |
| + |
| + $command = shellquote('hg', '--cwd', $target, 'pull', $source) |
|
Wladimir Palant
2015/01/13 08:10:48
Please use -R or --repository rather than --cwd.
|
| + |
| + exec {$command: |
| + user => $user, |
| + require => Package[$hg::package], |
| + } |
| + } |
| + |
| + define update( |
| + $revision = 'tip', |
|
Wladimir Palant
2015/01/13 08:10:48
'tip' isn't a good default, it might be on a branc
|
| + $user = $user, |
| + $target = $name) { |
| + |
| + # Allow for accessing $hg::* class parameters |
| + include hg |
| + |
| + $command = shellquote('hg', '--cwd', $target, 'pull', '--rev', $revision) |
|
Wladimir Palant
2015/01/13 08:10:48
Please use -R or --repository rather than --cwd.
|
| + |
| + exec {$command: |
| + user => $user, |
| + require => Package[$hg::package], |
| + } |
| + |
| + if $hg::post_update != '' { |
|
Wladimir Palant
2015/01/13 08:10:48
Shouldn't this only be executed when an actual upd
|
| + exec {"$command #post_update": |
| + command => $hg::post_update, |
| + user => $user, |
| + cwd => $target, |
| + require => Exec[$command], |
| + } |
| + } |
| + } |
| + |
| + define ensure( |
| + $source, |
| + $revision = 'tip', |
| + $user = $user, |
| + $target = $name) { |
| + |
| + hg::clone {$name: |
| + source => $source, |
| + user => $user, |
| + target => $target, |
| + } |
|
Wladimir Palant
2015/01/13 08:10:48
Should this really be run unconditionally? What if
|
| + |
| + -> # after clone |
| + hg::pull {$name: |
| + source => $source, |
| + user => $user, |
| + target => $target, |
| + } |
| + |
| + -> # after pull |
| + hg::update {$name: |
| + revision => $revision, |
| + user => $user, |
| + target => $target, |
| + } |
| + } |
| +} |