123 lines
3.1 KiB
Bash
123 lines
3.1 KiB
Bash
|
#!/bin/bash
|
||
|
# -*- mode: sh; tab-width: 8; coding: utf-8-unix -*-
|
||
|
|
||
|
# pip installs into /usr/local/bin
|
||
|
# export PATH=.:$PATH:/usr/local/bin
|
||
|
|
||
|
prog=$( basename $0 .bash )
|
||
|
ROLE=base
|
||
|
. /usr/local/bin/usr_local_tput.bash || exit 2
|
||
|
PREFIX=/usr/local
|
||
|
|
||
|
. /usr/local/etc/testforge/testforge.bash || exit 1
|
||
|
|
||
|
[ -d PREFIX=/var/local/var/log ] && \
|
||
|
BASE_LOG_DIR=/var/local/var/log || \
|
||
|
BASE_LOG_DIR=/tmp
|
||
|
|
||
|
pyver=3
|
||
|
inter=0
|
||
|
verbose=3
|
||
|
|
||
|
usage() {
|
||
|
echo "Usage: $0 [OPTIONS] dirs-or-files"
|
||
|
echo
|
||
|
echo " -i | --inter=$inter - interactivly upgrade 0 or 1 [0]"
|
||
|
echo " -p | --pyver=$pyver - python version - 2 or 3"
|
||
|
echo " -v | --verbose=$verbose - verbosity 0 least 5 most"
|
||
|
echo
|
||
|
echo " -V | --version - print version of this script"
|
||
|
echo " -h | --help - print this help"
|
||
|
}
|
||
|
|
||
|
exitWithErrMsg() {
|
||
|
retval=$1
|
||
|
shift
|
||
|
echo "$1" 1>&2
|
||
|
exit $retval
|
||
|
}
|
||
|
|
||
|
SHORTOPTS="hVp:v:i:"
|
||
|
LONGOPTS="help,version,pyver:,verbose:,inter:"
|
||
|
PKGS=
|
||
|
|
||
|
ARGS=$(getopt --options $SHORTOPTS --longoptions $LONGOPTS -- "$@")
|
||
|
[ $? != 0 ] && exitWithErrMsg 1 "Aborting."
|
||
|
|
||
|
route | grep -q ^default || exitWithErrMsg 2 "We are not connected: Aborting."
|
||
|
|
||
|
eval set -- "$ARGS"
|
||
|
|
||
|
while true; do
|
||
|
case "$1" in
|
||
|
-p|--pyver)
|
||
|
shift
|
||
|
pyver="$1"
|
||
|
;;
|
||
|
-i|--inter)
|
||
|
shift
|
||
|
inter=1
|
||
|
;;
|
||
|
-v|--verbose)
|
||
|
shift
|
||
|
verbose="$1"
|
||
|
;;
|
||
|
-h|--help)
|
||
|
usage
|
||
|
exit 0
|
||
|
;;
|
||
|
'--')
|
||
|
shift
|
||
|
PKGS="$*"
|
||
|
break
|
||
|
;;
|
||
|
*)
|
||
|
break
|
||
|
;;
|
||
|
esac
|
||
|
shift
|
||
|
done
|
||
|
|
||
|
#echo $PKGS
|
||
|
if [[ $pyver =~ 2.* ]] ; then
|
||
|
LOG_DIR=$BASE_LOG_DIR/pip/$BASE_PYTHON2_MINOR
|
||
|
pip_exe=/usr/local/bin/pip2.sh
|
||
|
else
|
||
|
LOG_DIR=$BASE_LOG_DIR/testforge/pip/$BASE_PYTHON3_MINOR
|
||
|
pip_exe=/usr/local/bin/pip3.sh
|
||
|
fi
|
||
|
|
||
|
cd /usr/local/bin
|
||
|
# --process-dependency-links
|
||
|
# this is missing many/most
|
||
|
# --format: invalid choice: 'legacy' (choose from 'columns', 'freeze', 'json')
|
||
|
$pip_exe list -o --format=columns --user | tee /tmp/$$.log
|
||
|
# pyface (Current: 4.5.2 Latest: 5.0.0 [sdist])
|
||
|
grep 'wheel$\|sdist$' /tmp/$$.log | while read pkg current latest rest ; do
|
||
|
echo "INFO: $pkg from $current to $latest "
|
||
|
if [ -n "$PKGS" ] ; then
|
||
|
echo "$PKGS" | grep -v "grep" | grep -q "$pkg" || continue
|
||
|
fi
|
||
|
|
||
|
# this is for the Msys distribution build from source
|
||
|
if [ -f ../src/$pkg.bash ] && grep VER= ../src/$pkg.bash ; then
|
||
|
[ -f ../src/$pkg.bash.old ] && WARN "$0 backup present $pkg.old" && continue
|
||
|
grep -q "^VER=\"$latest\"" ../src/$pkg.bash && \
|
||
|
WARN "$0 $pkg already $latest" && continue
|
||
|
mv ../src/$pkg.bash ../src/$pkg.bash.old
|
||
|
sed -e "s/VER=$current/VER=$latest/" ../src/$pkg.bash < ../src/$pkg.bash.old
|
||
|
echo "INFO: package $pkg "
|
||
|
fi
|
||
|
# -u 2
|
||
|
[ $inter -eq 0 ] && continue
|
||
|
|
||
|
read -p "READ: Upgrade $pkg from $current to $latest? " yn
|
||
|
[ "$yn" = "q" ] && exit
|
||
|
[ "$yn" = "y" ] || continue
|
||
|
|
||
|
$pip_exe $pkg $current $latest
|
||
|
done
|
||
|
|
||
|
rm -f /tmp/$$.log
|
||
|
exit 0
|