diff options
Diffstat (limited to 'bin/plmu')
-rwxr-xr-x | bin/plmu | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/bin/plmu b/bin/plmu new file mode 100755 index 00000000..bac2e434 --- /dev/null +++ b/bin/plmu @@ -0,0 +1,28 @@ +#!/bin/sh +# Upgrade plenv modules with cpanm(1) + +# Set up exceptions file if it exists +def="$HOME"/.plenv/non-cpanm-modules +if [ -e "$def" ] ; then + ef=$def +else + ef=/dev/null +fi + +# Check that exceptions file is sorted +if ! LC_COLLATE=C sort -c -- "$ef" ; then + printf >&2 '%s not sorted\n' "$ef" + exit 1 +fi + +# Get the list of modules; sort them in case our current locale disagrees on +# the existing sorting +plenv list-modules | LC_COLLATE=C sort | + +# Exclude any modules in ~/.plenv/non-cpanm-modules if it exists +LC_COLLATE=C comm -23 -- - "$ef" | + +# Read that list of modules to upgrade and upgrade them one by one +while read -r module ; do + cpanm --notest --quiet -- "$module" +done |