diff options
| author | Ailin Nemui | 2014-06-16 04:11:29 +0200 | 
|---|---|---|
| committer | Ailin Nemui | 2014-06-24 18:28:59 +0200 | 
| commit | ca374a4a1acec99b19486549071ef6c9968b749a (patch) | |
| tree | ec4f7f7e66b423c392b5dbb46e424ec56a43247c /_testing/travis/autoinstall-perl-prereqs.zsh | |
| parent | 525b2128888f1e3ca2088a54cc086b102dbfe690 (diff) | |
| download | scripts.irssi.org-ca374a4a1acec99b19486549071ef6c9968b749a.tar.bz2 | |
Add travis testing to Irssi scripts.
Diffstat (limited to '_testing/travis/autoinstall-perl-prereqs.zsh')
| -rwxr-xr-x | _testing/travis/autoinstall-perl-prereqs.zsh | 48 | 
1 files changed, 48 insertions, 0 deletions
| diff --git a/_testing/travis/autoinstall-perl-prereqs.zsh b/_testing/travis/autoinstall-perl-prereqs.zsh new file mode 100755 index 0000000..11c9824 --- /dev/null +++ b/_testing/travis/autoinstall-perl-prereqs.zsh @@ -0,0 +1,48 @@ +#!/bin/zsh + +. ./_testing/_get_files_arr.zsh + +local -a modlist +modlist=($(scan-perl-prereqs $filelist)) + +sudo apt-file update >/dev/null 2>&1 + +local -a ubu_pkgs +local -a cpan_mods +for mod ($modlist) { +    mod=${mod%\~*} +    if [[ $mod != Irssi* && $mod != feature ]] { +        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) } \ +            else { cpan_mods+=($mod) } +        } +    } +} + +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)) + +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 | 
