summaryrefslogtreecommitdiff
path: root/fetch-apk.sh
blob: 5604498b9df68229982da5a29a28160a5e5a4ae3 (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
#!/bin/sh

VER=v3.18
ARCH=x86_64

# -------------------------------------------------------------------
# main/community/testing
# -------------------------------------------------------------------
set_apks_url() {
    local branch=$1
    echo '>>> set branch: '$branch
    url=https://dl-cdn.alpinelinux.org/alpine/${VER}/${branch}/${ARCH}
    dest=/media/usb/apks2/alpine/${VER}/${branch}/${ARCH}/
}

# -------------------------------------------------------------------
make_fetch_apks_list() {
    # altenative methods:
    # 1. apk add ffmpeg > a.lst 2>&1
    # 2. 'apk add --simulate' and process the output
    # 3. 'apk fetch --recursive <pkg name>',
    #     useful if pkgs downloaded can be sorted

    local isUpgrade=$2 alist='a.lst'
    if [ x${isUpgrade} = 'xupgrade' ]; then
        echo ">>> Process UPGRADE"
        if [ ! -f "$alist" ]; then apk upgrade -a > a.lst 2>&1; fi
        grep '^(' a.lst | grep 'Upgrading' | awk -F' ' '{print $3 " " $6}' > b.lst
    else
        echo ">>> Process INSTALL"
        if [ ! -f "$alist" ]; then apk fix > a.lst 2>&1; fi
        grep '^(' a.lst | grep 'Installing' | awk -F' ' '{print $3 " " $4}' > b.lst
    fi

    local branch=$1; local F="${branch}.lst"; rm -f ${F}
    echo ">>> creating ${F}"
    cat 'b.lst' | while read f; do \
        local name=$(echo $f | awk '{print $1}')
        local file=$(echo $f | sed 's/ /-/g' | sed 's/(//' | sed 's/)//')

        local b=$(apk policy ${name} | grep -c ${branch})
        # local b=$(grep -c "^P:${name}$" 'APKINDEX') # alt method
        if [ $b -gt 0 ]; then
            echo "adding + $b $file"; echo ${file} >> ${F}
        fi
    done
    if [ -f $F ]; then
        _istxt=$(wc -l "$F" | grep -c '^')
        if [ $_istxt -gt 0 ]; then echo "... list created, run fetch cmd"; fi
    else
        echo " ... nothing to do"
    fi
    rm -f a.lst b.lst
}

fetch_apks() {
    local branch=$1
    cat ${branch}.lst | while read f; do \
        echo ">>> fetching: $url/$f.apk"
        wget -c --no-check-certificate $url/$f.apk
    done
}

fetch_index() {
    echo ">>> fetching: $url/APKINDEX.tar.gz"
    wget -c --no-check-certificate $url/APKINDEX.tar.gz
}

if [ x"$1" = 'xmain' -o x"$1" = 'xcommunity' -o x"$1" = 'xtesting' ]; then
    set_apks_url $1
    # cd /tmp
    if [ 'xgetindex' = x"$2" ]; then fetch_index; fi
    # if [ 'xmklist'   = x"$2" ]; then make_fetch_apks_list "$1"; fi
    if [ 'xmklist'   = x"$2" ]; then make_fetch_apks_list "$1" "$3"; fi
    if [ 'xfetch'    = x"$2" ]; then fetch_apks "$1"; fi
fi

# -------------------------------------------------------------------
# -------------------------------------------------------------------