openbsd: packages: New module
This commit is contained in:
parent
74ff806764
commit
49de1b62e1
|
@ -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;
|
||||
};
|
Loading…
Reference in New Issue