class git { package { 'git-core': ensure => installed, } define web_project($project = $name, $dir = "/var/www/${project}") { exec { "web-git-reset-${name}": require => Package['git-core'], command => "git reset --hard HEAD", cwd => $dir, } exec { "web-git-clean-${name}": require => Exec["web-git-reset-${name}"], command => "git clean -f", cwd => $dir, } exec { "web-git-fetch-${name}": require => Exec["web-git-clean-${name}"], command => "git fetch origin", cwd => $dir, } exec { "web-git-checkout-${name}": require => Exec["web-git-fetch-${name}"], command => "git checkout \"release-\$(git tag | cut -d\\- -f2 | sort -rn | head -n1)\"", cwd => $dir, } } }