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)";
}
}
}
|