diff options
author | lesto | 2019-01-16 01:03:32 +0100 |
---|---|---|
committer | lesto | 2019-01-16 01:03:32 +0100 |
commit | 71f9729983010f6a172b2d41f3d1083b68231943 (patch) | |
tree | 6cc1203e016ae4937974c911727d24f57e1bf078 /pp.sh | |
download | aur-71f9729983010f6a172b2d41f3d1083b68231943.tar.gz |
first commit
Diffstat (limited to 'pp.sh')
-rwxr-xr-x | pp.sh | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/pp.sh b/pp.sh new file mode 100755 index 000000000000..a913fa4dce17 --- /dev/null +++ b/pp.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +if [[ $UID -ne 0 ]]; then + sudo -p 'Restarting as root, password: ' bash $0 "$@" + exit $? +fi + +#read mirrorlist, "Server =" lines, remove all before and including "= " (10 char) +readarray -t mirrorArray < <(grep "^Server =" /etc/pacman.d/mirrorlist | cut -c 10-) + +#randomize the order of the mirror +mirrorArray=( $(shuf -e "${mirrorArray[@]}") ) + +#now get the list of stuff to update +readarray -t packageList < <(checkupdates | cut -d ' ' -f 1,4) + +pidToWait='' + +for pkgNameAndVersion in "${packageList[@]}"; do + pkgName=${pkgNameAndVersion% *} + + #echo "pkgName $pkgName" + + repoAndArch=($(pacman -Si $pkgName | grep 'Repository :\|Architecture :' | cut -c 19-)) + + repo=${repoAndArch[0]} + archpkg=${repoAndArch[1]} + + arch='x86_64' + + downloadList='' + for mirror in "${mirrorArray[@]}"; do + pkgNameAndVersion=${pkgNameAndVersion/ /-} + val=${mirror/\$repo/$repo} + val=$(echo ${val/\$arch/$arch}/$pkgNameAndVersion-$archpkg.pkg.tar.xz) + #echo - $repo - $arch - $val - $mirror + downloadList="$downloadList $val" + done + + #echo $downloadList + aria2c -c $downloadList -d /var/cache/pacman/pkg/ &> /dev/null & + + running=$(jobs |wc -l) + echo ">>> $(date +%T) | Downloading $pkgName, $running/10 download" + + while [ $running -gt 10 ]; do + sleep 0.1 #sleep 0.1 second + running=$(jobs |wc -l) + done + +done + +#now wait for all remaining jobs +echo "all download started, waiting for completition" +wait + +if [[ $# -gt 0 ]]; then + #DROP PRIVILEDGES + sudo -s -u $SUDO_USER $1 -Syu --noconfirm +else + echo "downloads complete, calling pacman" + pacman -Syu --noconfirm +fi + |