summarylogtreecommitdiffstats
path: root/idos-packages-update.sh
diff options
context:
space:
mode:
authorfelics@felics-tablet2016-07-18 20:10:45 +0200
committerfelics@felics-tablet2016-07-18 20:10:45 +0200
commit40d2ccf239dc617002494404e847fe5ba6de4f76 (patch)
tree2f1d6f2a9d447cb22751c3402616d63bedc02468 /idos-packages-update.sh
parent3dffe2e3f173c4a99f7d088eaeb38d104152fc4e (diff)
downloadaur-40d2ccf239dc617002494404e847fe5ba6de4f76.tar.gz
Beeing more verbose on version numbers and upgrade results.
Diffstat (limited to 'idos-packages-update.sh')
-rwxr-xr-xidos-packages-update.sh51
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