openbsd: packages: New module

This commit is contained in:
Solene Rapenne 2021-06-02 14:06:56 +02:00
parent 74ff806764
commit 49de1b62e1
1 changed files with 66 additions and 0 deletions

66
openbsd/packages/Rexfile Normal file
View File

@ -0,0 +1,66 @@
use Rex -feature => ['1.4'];
use Rex::Commands::File;
use Rex::Commands::Fs;
use Rex::Commands::Run;
use Rex::Commands::Sysctl;
use Rex::Template::NG;
use Data::Dumper;
user "root";
my @packages = qw/
neovim mutt w3m
catgirl dmenu
/;
sub pkgmgmt {
my %missing;
my %todelete;
my @list = run "pkg_info -mz | sed 's/--\$//'";
my $dry_run = shift;
# make a list of missing packages to install
@missing{ @packages } = undef;
delete @missing{ @list };
# make a list of todelete packages not listed in what we want
@todelete{ @list } = undef;
delete @todelete{ @packages };
# register all non listed packages as automatically installed
# this allows using auto cleaning for packages that are not used as deps
if(%todelete) {
printf "Packages to delete if not required: %s\n", join(" ", sort keys %todelete);
if($dry_run eq 0) {
run "pkg_add -aa " . join(" ", sort keys %todelete),
auto_die => TRUE;
}
}
if(%missing) {
printf "Packages to install: %s\n", join(" ", sort keys %missing);
if($dry_run eq 0) {
run "pkg_add " . join(" ", sort keys %missing),
auto_die => TRUE;
}
}
# remove useless deps
if($dry_run eq 0) {
run "Cleaning unused packages",
command => "pkg_delete -a",
auto_die => TRUE;
}
}
task "configure", sub {
pkgmgmt 0;
};
task "show", sub {
pkgmgmt 1;
};