summaryrefslogtreecommitdiff
path: root/src/util.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/util.sh')
-rw-r--r--src/util.sh78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/util.sh b/src/util.sh
new file mode 100644
index 0000000..d20db86
--- /dev/null
+++ b/src/util.sh
@@ -0,0 +1,78 @@
+#!/bin/sh
+
+download_file() {
+ curl ${CURL_OPTS} -o $1 -w "%{http_code}" $2 2> /dev/null
+}
+
+wait_for_jobs () {
+ if ! $QUIET; then
+ local total=$(jobs -r | wc -l)
+ local completed=0
+ while [ "$completed" != "$total" ]; do
+ completed=$(( $total - $(jobs -r | wc -l)))
+ hbar -T "$1" $completed $total
+ done
+ hbar -t ${HBAR_COMPLETE} -T "$2" $completed $total
+ fi
+
+ wait
+}
+
+wait_for_download () {
+ if ! $QUIET && [ "$(jobs -r | wc -l)" != "0" ]; then
+ local total_download=$1
+ shift
+ local files=($@)
+
+ unset downloaded
+ while [ "$(jobs -r | wc -l)" != "0" ]; do
+ local downloaded=0
+
+ for output in ${files[*]}; do
+ size=$(stat -c %s $output)
+ downloaded=$((downloaded+size))
+ done
+
+ hbar -h -T " downloading packages" $downloaded $total_download
+ done
+ hbar -th ${HBAR_COMPLETE} -T "${CHECKMARK} downloaded packages" $downloaded $total_download
+ fi
+
+ wait
+}
+
+wait_for_extract () {
+ if ! $QUIET && [ "$(jobs -r | wc -l)" != "0" ]; then
+ local total_filecount=$1
+ shift
+ local files=($@)
+
+ unset extracted
+ while [ "$(jobs -r | wc -l)" != "0" ]; do
+ local extracted=0
+
+ for output in ${files[*]}; do
+ size=$(cat $output | wc -l)
+ extracted=$((extracted+size))
+ done
+
+ hbar -T " extracting files" $extracted $total_filecount
+ done
+ hbar -t ${HBAR_COMPLETE} -T "${CHECKMARK} extracted packages" $extracted $total_filecount
+ fi
+
+ wait
+}
+
+
+format_bytes () {
+ echo $@ | numfmt --to iec
+
+}
+
+prompt_question () {
+ $NOCONFIRM && return 0
+ printf "$1 [Y/n] "
+ read response
+ [ "${response:0}" != "n" ]
+}