diff options
author | felics@felics-tablet | 2016-07-18 20:10:45 +0200 |
---|---|---|
committer | felics@felics-tablet | 2016-07-18 20:10:45 +0200 |
commit | 40d2ccf239dc617002494404e847fe5ba6de4f76 (patch) | |
tree | 2f1d6f2a9d447cb22751c3402616d63bedc02468 /idos-packages-update.sh | |
parent | 3dffe2e3f173c4a99f7d088eaeb38d104152fc4e (diff) | |
download | aur-40d2ccf239dc617002494404e847fe5ba6de4f76.tar.gz |
Beeing more verbose on version numbers and upgrade results.
Diffstat (limited to 'idos-packages-update.sh')
-rwxr-xr-x | idos-packages-update.sh | 51 |
1 files changed, 48 insertions, 3 deletions
diff --git a/idos-packages-update.sh b/idos-packages-update.sh index d41703ad0779..849707ad6e52 100755 --- a/idos-packages-update.sh +++ b/idos-packages-update.sh @@ -38,6 +38,24 @@ idos_pkgs_strings=( 'ttf-timetable' ) +get_installed_pkgs_version() { + # From all the packages given as arguments, returns their version number, line by line. If a package is not installed, return empty string, and: + # * If it is the only package given at the command line, finish with an exitcode >0. + # * If it is amongst other packages, silently ignore. + + if [ $# -eq 1 ]; then + yaourt -Q "$1" | awk '{print $2}' + exitcode_query="$?" + else + while [ $# -gt 1 ]; do + yaourt -Q "$1" 2>/dev/null | awk '{print $2}' + shift + done + exitcode_query=0 + fi + + return "${exitcode_query}" +} ### Those variables will hold, line by line, the packages available for install and the one installed: avail='' @@ -55,6 +73,9 @@ done avail="$(echo "${avail}" | sort | uniq | grep -E .)" installed="$(echo "${installed}" | sort | uniq | grep -E .)" +### Get version numbers of installed packages before upgrade: +old_vers="$(echo "${installed}" | while read pkg; do get_installed_pkgs_version "${pkg}"; done)" + ### Get packages which are installed and available for installation at the same time: #installed_and_available="$(comm -1 -2 <(echo "${installed}" | sort) <(echo "${avail}" | sort))" # comm would do the job, on sorted files. grep also works on unsorted files. installed_and_available="$(echo "${avail}" | grep -F -x "${installed}" | sort | uniq)" @@ -62,14 +83,38 @@ installed_and_available="$(echo "${avail}" | grep -F -x "${installed}" | sort | ### Print some information: _reinstall_marker="(x)" -echo "Installed IDOS-related packages. Packages marked with ${_reinstall_marker} can and will be reinstalled." +echo "Installed IDOS-related packages with version. Packages marked with ${_reinstall_marker} can and will be reinstalled." echo "" +_pkgnr=0 echo "${installed}" | while read pkg; do - if echo "${avail}" | grep -q -F -x "${pkg}"; then echo -n " ${_reinstall_marker} "; else echo -n " "; fi - echo "${pkg}" + _pkgnr="$(( ${_pkgnr} + 1 ))" + if echo "${avail}" | grep -q -F -x "${pkg}"; then echo -n " ${_reinstall_marker} "; else echo -n " "; fi + echo -n "${pkg} "; echo "${old_vers}" | sed -n "${_pkgnr}"p done echo "" ### Reinstall installed and available packages: yaourt -S --noconfirm ${installed_and_available} + + +### Get version numbers of installed packages after upgrade: +new_vers="$(echo "${installed}" | while read pkg; do get_installed_pkgs_version "${pkg}"; done)" + +### Print information about changes that were carried out: +echo "Upgrade results:" +echo "" +_pkgnr=0 +echo "${installed}" | while read pkg; do + _pkgnr="$(( ${_pkgnr} + 1 ))" + _old_ver="$(echo "${old_vers}" | sed -n "${_pkgnr}"p)" + _new_ver="$(echo "${new_vers}" | sed -n "${_pkgnr}"p)" + if echo "${avail}" | grep -q -F -x "${pkg}"; then echo -n " ${_reinstall_marker} "; else echo -n " "; fi + echo -n "${pkg} " + echo -n "${_old_ver} " + if [[ "${_old_ver}" == "${_new_ver}" ]]; then + echo "(not upgraded.)" + else + echo "-> ${_new_ver}" + fi +done |