1 | # Serve subversion-based code from a local location. The job of this |
---|
2 | # module is to check the data out from subversion and keep it up to |
---|
3 | # date |
---|
4 | # |
---|
5 | # Example usage: |
---|
6 | # svn::checkout { dist: |
---|
7 | # repository => "https://reductivelabs.com/svn", |
---|
8 | # svnparms = "--someparameter=AAAA --other parameter", |
---|
9 | # local_path => "/dist", |
---|
10 | # local_name => "mycheckout" |
---|
11 | # user => "puppet", |
---|
12 | # password => "mypassword" |
---|
13 | # } |
---|
14 | define svn::checkout($repository, $local_path, $local_name = false, $user = false, $password = false) { |
---|
15 | |
---|
16 | include svn |
---|
17 | |
---|
18 | $local_name_real = $local_name ? { false => $name, default => $local_name } |
---|
19 | |
---|
20 | # package { ["subversion"]: ensure => installed } |
---|
21 | |
---|
22 | # file { $local_path: |
---|
23 | # ensure => directory, |
---|
24 | # owner => root, |
---|
25 | # group => root |
---|
26 | # } |
---|
27 | |
---|
28 | $svnparms = $user ? { |
---|
29 | false => "--non-interactive", |
---|
30 | default => "--non-interactive --username '$user' --password '$password'", |
---|
31 | } |
---|
32 | |
---|
33 | $svncmd = "/usr/bin/svn $svnparms" |
---|
34 | |
---|
35 | exec { "svn_co_$name": |
---|
36 | command => "$svncmd checkout '$repository' '$local_name_real'", |
---|
37 | cwd => $local_path, |
---|
38 | creates => "$local_path/$local_name_real/.svn", |
---|
39 | # require => Package ["subversion"], |
---|
40 | # package { "subversion": ensure => installed } |
---|
41 | } |
---|
42 | |
---|
43 | exec { "svn_update_$name": |
---|
44 | command => "$svncmd update '$local_name_real'", |
---|
45 | cwd => $local_path, |
---|
46 | require => Exec["svn_co_$name"], |
---|
47 | onlyif => "$svncmd status -u '$local_name_real' | /bin/grep -E \"\*|\!\"", |
---|
48 | } |
---|
49 | } |
---|