# @summary Manages a single cgit filter. # @param filtername # Target filter. # @param source # Soruce file of filter, mutually exclusive with content. # @param content # Contents of filter, mutually exclusive with source. # @param file_props # Passed along to the file resource. Useful for checksums. # @param type # If it's a lua or exec filter. Inferred from source filename. define cgit::filter ( Cgit::Filter_types $filtername = $name, Optional[Variant[String, Array[String]]] $source = undef, Optional[String] $content = undef, Hash $file_props = {}, Enum['lua', 'exec'] $type = stdlib::extname($source) ? { '.lua' => 'lua', default => 'exec', } ) { include ::cgit::filter_setup $dest = "${cgit::filterpath}/${filtername}-filter" file { $dest: ensure => file, mode => $type ? { 'lua' => '0444', 'exec' => '0555', }, source => $source, content => $content, * => $file_props, } concat::fragment { "cgit config filter ${filtername}": target => $::cgit::cgitrc, content => "${filtername}-filter=${type}:${dest}\n", require => File[$dest], } }