# @summary A Pacman repo # # @param ensure # @param repo_name # Name of repo, exposed to mirrorlists as $repo # @param siglevel # @param usage # @param include # A repolist to include, mutually exclusive with $server and $source # @param server # A direct server to use, mutually exclusive with $include and $source # @param source # A complete list of sources to pull from. # Should be a list of strings on the form "Include = ${include}" or # "Server = ${server}". Where include is a path to a mirrorlist, and # server is a direct url. # # Mutually exclusive with $include and $server. define pacman::repo ( Enum['present', 'absent'] $ensure = 'present', String $repo_name = $name, Optional[Enum['Never', 'Optional', 'Required']] $siglevel = undef, Optional[Enum['Sync', 'Search', 'Install', 'Upgrade', 'All']] $usage = undef, Optional[String] $include = undef, Optional[String] $server = undef, Optional[Array[String,1]] $source = undef, ) { require pacman::setup if $repo_name == 'local' { fail('Repo name "local" is reserved by Pacman') } # Check that at mots one of the following are defined # At least one is required, but that is checked bellow. if [$include, $server, $source].filter |$x| { $x =~ NotUndef }.length > 1 { fail('$include, $server, and $source mutually exclusive') } $source_ = if $source { $source } elsif $server { ["Server = ${server}"] } elsif $include { ["Include = ${include}"] } else { fail('$source, $include, or $server required') } concat::fragment { "pacman.conf - repo - ${repo_name}": target => $pacman::conf_path, content => epp("${module_name}/repo.epp", { 'name' => $repo_name, 'siglevel' => $siglevel, 'usage' => $usage, 'source' => $source_, }), } }