summaryrefslogtreecommitdiff
path: root/manifests/init.pp
blob: 91800b2285f007d9357286f20513daada0c0dcd4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
class cgit (
    String $root = '/var/www/cgit',
    String $filterpath = '/usr/lib/cgit/puppet-controlled-filters',
    String $root_title,
    String $root_desc,
    String $root_readme_source = "puppet:///modules/${module_name}/root_readme",
    Optional[String] $root_readme_content = undef,
    Optional[String] $root_readme_sha256 = undef,
    String $root_readme_extension = '',
    String $scan_path,
    Array[String] $clone_url,
    Boolean $enable_http_clone = false,
    Array[String] $public_repos = [],
    Array[Struct[{
      name => String,
      pass => String }]] $users = [],
    Variant[Boolean, Enum['nginx']] $manage_server = false,
    Optional[String] $server_name = undef,
    Optional[String] $certname = undef,
    String $htpasswd = '/var/lib/nginx/cgit-htpasswd',
    String $cgitrc = '/etc/cgitrc',
    Hash[String, Hash] $filters = {},
) {

    # TODO figure out where CSS comes from

    ensure_packages([
        'git',
        'cgit',
    ], { ensure => installed })


    concat { $cgitrc:
      ensure => present,
    }
    concat::fragment { 'cgit config upper half':
      order   => 0,
      content => epp('cgit/upper.epp'),
      target  => $::cgit::cgitrc,
    }

    concat::fragment { 'cgit config lower half':
      order => 99,
      content => epp('cgit/lower.epp'),
      target  => $::cgit::cgitrc,
    }

    create_resources(git::filter, $filters)

    file { "${root}/logo":
        ensure => directory,
    }

    file { "${root}/logo/logo.png":
        ensure => file,
        source => 'puppet:///modules/cgit/logo.png',
    }

    file { "${root}/logo/logo_large.png":
        ensure => file,
        source => 'puppet:///modules/cgit/logo_large.png',
    }

    $chksum = if $root_readme_sha256 != undef {
      {
        'checksum'       => 'sha256',
        'checksum_value' => $root_readme_sha256,
      }
    } else {
      { }
    }

    $readme = "${root}/README${root_readme_extension}"
    if $root_readme_content {
      file { $readme:
        ensure  => file,
        content => $root_readme_content,
        *       => $chksum,
      }
    } else {
      file { $readme:
        ensure => file,
        source => $root_readme_source,
        *      => $chksum,
      }
    }



    if $manage_server {
      if $server_name == undef {
        fail('server_name must be set if manage_server is set')
      }
    }

    case $manage_server {
      false: {}
      'nginx': {
        include ::cgit::nginx
      }
    }
}