summaryrefslogtreecommitdiff
path: root/src/util.sh
blob: 82d26ca1c1f76540ccf5dee72fffa017cf577edb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/bin/sh

download_file() {
    curl ${CURL_OPTS} -o $1 -w "%{http_code}" $2 2> /dev/null
}

# this function is broken
wait_for_jobs () {
    local text=$1
    local end=$2
    shift 2
    joblist="-e $(echo $@ | sed "s/ / -e /g")"

    echo "$joblist"

    if ! $QUIET; then
        local total=$#
        local completed=0
        while [ "$completed" != "$total" ]; do
            running=$(ps aux | grep $joblist | wc -l)

            completed=$(( $total - $running + 1))
            hbar -T "$text" $completed $total
        done
        hbar -t ${HBAR_COMPLETE} -T "$end" $completed $total
    fi

    wait
}

wait_for_download () {
    if ! $QUIET; then
        local total_download=$1
        shift

        local downloaded=0
        while [ "$downloaded" -lt "$total_download" ]; do

            for output in $@; 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; then
        local total_filecount=$1
        local extracted=0
        shift

        while [ "$extracted" -lt "$total_filecount" ]; do
            local extracted=0

            for output in $@; do
                if [ -f $output ]; then
                    size=$(cat $output | wc -l)
                    extracted=$((extracted+size))
                fi
            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
    [ "${var%${var#?}}"x != 'nx' ]
}