File: dh_puppet_module

package info (click to toggle)
dh-puppet 1.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 56 kB
  • sloc: perl: 60; sh: 5; makefile: 2
file content (73 lines) | stat: -rwxr-xr-x 2,021 bytes parent folder | download
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
#!/usr/bin/perl -w

use strict;
use Debian::Debhelper::Dh_Lib;
use JSON qw(decode_json);

init();

my @pkgdirs = qw(
    data
    functions
    lib
    locales
    manifests
    templates
    types
);

my @pkgdocs = qw(
    README.md
    REFERENCE.md
);

# parse metadata.json
my $json_metadata = do {
    open(my $fh, "<:encoding(UTF-8)", "metadata.json")
        or die("Can't open metadata.json: $!\n");
    local $/;
    <$fh>
};
my $moduleinfo = decode_json($json_metadata);

my $module_dest = tmpdir($dh{MAINPACKAGE}) . '/usr/share/puppet/modules.available/' . $moduleinfo->{"name"};
my $docs_dest = tmpdir($dh{MAINPACKAGE}) . "/usr/share/doc/" . $dh{MAINPACKAGE};

# install module directories
install_dir($module_dest);
for my $pkgdir (@pkgdirs) {
    doit("cp", "-a", $pkgdir, $module_dest) if -d $pkgdir;
}
install_file("metadata.json", "$module_dest/metadata.json");

# install maintscripts
$moduleinfo->{"name"} =~ /(?<USERNAME>\S+)-(?<MODULE>\S+)/;
foreach my $script_type (qw/postinst prerm/) {
    autoscript($dh{MAINPACKAGE}, "$script_type", "$script_type-puppet", { %+ });
}

# install common documentation files
install_dir($docs_dest);
for my $pkgdoc (@pkgdocs) {
    install_file($pkgdoc, "$docs_dest/$pkgdoc") if -f $pkgdoc;
}

# install example manifests
if (-d "examples") {
    install_dir($docs_dest . "/examples");
    complex_doit("cp", "-a", "examples/*", $docs_dest . "/examples");
}

# generate control substvars
for my $req (@{$moduleinfo->{"dependencies"}}) {
    while ($req->{version_requirement} =~ /([<>=]+ [0-9\.]+)/g) {
        my $pkg_ver = $& =~ s/^([<>]) /$1$1 /r;
        my $pkg_name = $req->{name} =~ s/(\S+)\/(\S+)/puppet-module-$1-$2/r;
        if ($pkg_ver =~ /^</) {
            verbose_print("[META] Skipped upper bound module dependency \"$pkg_name ($pkg_ver)\"");
        } else {
            verbose_print("[META] Adding module dependency \"$pkg_name ($pkg_ver)\"");
            addsubstvar $dh{MAINPACKAGE}, "puppet:Depends", "$pkg_name ($pkg_ver)";
        }
    }
}