blob: 4e47b37e3759fe15897b41602594b0816da7ce19 (
plain)
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
|
#!/bin/zsh
. ./_testing/_get_files_arr.zsh
local -a modlist
modlist=($(scan-perl-prereqs $filelist))
echo -n ... >&2
sudo apt-file update
local -a ubu_pkgs
local -a cpan_mods
for mod ($modlist) {
mod=${mod%\~*}
if [[ $mod != Irssi* && $mod != feature ]] {
echo -n $mod >&2
if { ! perl -M$mod -E1 2>/dev/null } {
local -a ubu_pkg
ubu_pkg=($(apt-file -l search "/perl5/${mod//:://}.pm"))
if [[ $#ubu_pkg -gt 0 ]] { ubu_pkgs+=($ubu_pkg); echo -n '(u)' >&2 } \
else { cpan_mods+=($mod) }
}
echo -n ' ' >&2
}
}
echo >&2
if [[ $#ubu_pkgs -gt 0 ]] { sudo apt-get install -qq $ubu_pkgs }
typeset -A broken_tests
typeset -A broken_mods
broken_tests=($(perl -MYAML::Tiny=LoadFile -e'print "$_ 1 " for @{LoadFile(+shift)->{cpan}{broken_tests}}' _testing/config.yml))
broken_mods=($(perl -MYAML::Tiny=LoadFile -e'print "$_ 1 " for @{LoadFile(+shift)->{cpan}{broken_modules}}' _testing/config.yml))
echo ... >&2
for mod ($cpan_mods) {
if { ! perl -M$mod -E1 2>/dev/null } {
local skip_test=
if [[ -n $broken_tests[$mod] ]] {
skip_test=--notest
echo Skipping broken test on $mod
}
if [[ -n $broken_mods[$mod] ]] {
echo SKIPPING AUTOINSTALL OF BROKEN MODULE $mod
} \
else {
echo Auto-installing $mod
sudo cpanm -q --skip-satisfied $skip_test $mod
}
}
}
exit 0
|