class cgit ( String $root = '/var/www/cgit', String $filterpath = '/usr/lib/cgit/extra-filters', String $root_title, String $root_desc, String $about_filter, String $auth_filter, String $source_filter, 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', ) { notify { 'certname': message => "Certname is [$certname]", } # TODO figure out where CSS comes from ensure_packages([ 'git', 'cgit', ], { ensure => installed }) file { '/etc/cgitrc': ensure => file, content => epp('cgit/cgitrc.epp'), } 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', } file { "${root}/root_readme": ensure => file, source => 'puppet:///modules/cgit/root_readme', } file { dirname($filterpath): ensure => directory, } file { $filterpath: ensure => directory, } [$about_filter, $source_filter].each |$f| { file { "${filterpath}/${f}": ensure => file, source => "puppet:///modules/cgit/filters/${f}", mode => stdlib::extname($f) ? { '.lua' => '0444', default => '0555', }, } } file { "${filterpath}/${auth_filter}": ensure => file, content => epp("cgit/${auth_filter}.epp"), mode => '0444', } 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 } } }