summarylogtreecommitdiffstats
path: root/geninfo.sh
blob: 5e98fd3ea035ed01fcb5aa309daba29b753615dc (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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#!/usr/bin/env bash

## need install yq and jq

pkgbase=$(awk -F= '/pkgbase=/{print $2}' PKGBUILD)
pkgver=$(awk -F= '/pkgver=/{print $2}' PKGBUILD)
tmp_pkgname=$(mktemp)
tmp_pkgdescs=$(mktemp)
tmp_urls=$(mktemp)
tmp_depends=$(mktemp)
tmp_optdepends=$(mktemp)

trap "rm $tmp_pkgname $tmp_pkgdescs $tmp_urls $tmp_depends $tmp_optdepends" EXIT

## pkgname
_gen_pkgname() {
    echo "$infos" | awk -F '/' '{print $NF}' | sed 's|^|    \"python-|' | sed 's|$|\"|'
    echo ")"
}

## _pkgdescs
_gen_pkgdescs() {
    for info in $infos; do
        pkgdesc=$(yq eval -o=json "src/${pkgbase}-${pkgver}/${info}/pyproject.toml" | jq -r '.project.description')
        echo "    \"$pkgdesc\""
    done
    echo ")"
}

## _urls
_gen_urls() {
    for info in $infos; do
        echo "    \"\${_url}/tree/main/${info}\""
    done
    echo ")"
}

## _depends
_gen_depends() {
    for info in $infos; do
        depends=($(
            yq eval -o=json "src/${pkgbase}-${pkgver}/${info}/pyproject.toml" | \
            jq -r '.project.dependencies.[]' 2>/dev/null | \
            grep -oP '^([a-zA-Z0-9_-]+)' | \
            tr 'A-Z' 'a-z' | \
            sed 's|^|python-|' | \
            sed 's|python-python|python|' | \
            sort -u
        ))
        if [[ -z ${depends[@]} ]]; then
            depends=( "python" )
        fi
        echo "    \""${depends[@]}"\""
    done
    echo ")"
}

## _optdepends
_gen_optdepends() {
    for info in $infos; do
        depends=($(
            yq eval -o=json "src/${pkgbase}-${pkgver}/${info}/pyproject.toml" | \
            jq -r '.project."optional-dependencies".[].[]' 2>/dev/null | \
            grep -oP '^([a-zA-Z0-9_-]+)' | \
            tr 'A-Z' 'a-z' | \
            sed 's|^|python-|' | \
            sed 's|-python||g' | \
            sed 's|_|-|g' | \
            sed 's|python-psycopg2-binary|python-psycopg2|g' | \
            sed 's|python-jinja2|python-jinja|g' | \
            sort -u
        ))
        echo "    \""${depends[@]}"\""
    done
    echo ")"
}

makepkg -do
infos=$(find "src/${pkgbase}-${pkgver}" -mindepth 2 -type f -name "pyproject.toml" |
    grep -vP '.git|_template' |
    sed -e "s|^src/${pkgbase}-${pkgver}/||g" -e "s|/pyproject.toml$||g" |
    tr 'A-Z' 'a-z' |
    sort -u
)
_gen_pkgname > $tmp_pkgname
_gen_pkgdescs > $tmp_pkgdescs
_gen_urls > $tmp_urls
_gen_depends > $tmp_depends
_gen_optdepends > $tmp_optdepends

sed -e "/^pkgname=(/,/)/c\pkgname=(" \
    -e "/^_pkgdescs=(/,/)/c\_pkgdescs=(" \
    -e "/^_urls=(/,/)/c\_urls=(" \
    -e "/^_depends=(/,/)/c\_depends=(" \
    -e "/^_optdepends=(/,/)/c\_optdepends=(" \
    -i PKGBUILD

sed -e "/^pkgname=/r $tmp_pkgname" \
    -e "/^_pkgdescs=/r $tmp_pkgdescs" \
    -e "/^_urls=/r $tmp_urls" \
    -e "/^_depends=/r $tmp_depends" \
    -e "/^_optdepends=/r $tmp_optdepends" \
    -i PKGBUILD