#!/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