summarylogtreecommitdiffstats
path: root/pp.sh
diff options
context:
space:
mode:
authorlesto2019-01-16 01:03:32 +0100
committerlesto2019-01-16 01:03:32 +0100
commit71f9729983010f6a172b2d41f3d1083b68231943 (patch)
tree6cc1203e016ae4937974c911727d24f57e1bf078 /pp.sh
downloadaur-71f9729983010f6a172b2d41f3d1083b68231943.tar.gz
first commit
Diffstat (limited to 'pp.sh')
-rwxr-xr-xpp.sh64
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
+