# Serve subversion-based code from a local location. The job of this # module is to check the data out from subversion and keep it up to # date # # Example usage: # svn::checkout { dist: # repository => "https://reductivelabs.com/svn", # svnparms = "--someparameter=AAAA --other parameter", # local_path => "/dist", # local_name => "mycheckout" # user => "puppet", # password => "mypassword" # } define svn::checkout($repository, $local_path, $local_name = false, $user = false, $password = false) { include svn $local_name_real = $local_name ? { false => $name, default => $local_name } # package { ["subversion"]: ensure => installed } # file { $local_path: # ensure => directory, # owner => root, # group => root # } $svnparms = $user ? { false => "--non-interactive", default => "--non-interactive --username '$user' --password '$password'", } $svncmd = "/usr/bin/svn $svnparms" exec { "svn_co_$name": command => "$svncmd checkout '$repository' '$local_name_real'", cwd => $local_path, creates => "$local_path/$local_name_real/.svn", # require => Package ["subversion"], # package { "subversion": ensure => installed } } exec { "svn_update_$name": command => "$svncmd update '$local_name_real'", cwd => $local_path, require => Exec["svn_co_$name"], onlyif => "$svncmd status -u '$local_name_real' | /bin/grep -E \"\*|\!\"", } }