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
|
# @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
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_,
}),
}
}
|