summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: a2fadaef2eed17ba65698d9aebf1a1e975403943 (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
# Maintainer: Oliver Breitwieser <oliver@breitwieser.eu>

_pkgname=asfa
pkgname=${_pkgname}-git
pkgver=0.8.0.r18.g179dfa1
pkgrel=1
pkgdesc='share files by upload via ssh and generation of a non-guessable link'
arch=('x86_64')
url="https://github.com/obreitwi/asfa"
license=('MIT')
depends=('gcc-libs' 'openssl' 'zlib')
makedepends=('rust' 'help2man' 'findutils' 'gzip' 'git' 'gawk')
provides=('asfa')
conflicts=('asfa')
source=("git+https://github.com/obreitwi/asfa.git")
md5sums=('SKIP')

pkgver() {
    local _oldpwd
    _oldpwd="$PWD"
    cd "$srcdir/$_pkgname"
    printf "%s" "$(git describe --long --tags | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g')"
    cd $_oldpwd
}

# version string that is accepted by cargo
_cargo_version() {
    local _oldpwd
    _oldpwd="$PWD"
    cd "$srcdir/$_pkgname"
    printf "%s" "$(git describe --long --tags \
        | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/\([^-]*\)-\([^-]*\)$/\1.\2/')"
    cd $_oldpwd
}

# Ensure that the asfa binary contains the (almost) same git-based version
# information as the installed package.
# Only difference: dash after minor version.
_ensure_version_information() {
    local _version
    _version="$(_cargo_version)"
    cd "$srcdir/$_pkgname"
    sed -i "s/^version = .*\$/version = \"${_version}\"/" Cargo.toml
    # Replace the new verison in Cargo.lock but keep all other version info
    awk -v "_version=${_version}" \
        -e '$1 == "name" { name = $3 }' \
        -e '$1 == "version" && name == "\"asfa\"" { $3 = sprintf("\"%s\"", _version)}' \
        -e '{ print }' Cargo.lock > Cargo.lock.update
    mv Cargo.lock Cargo.lock.orig
    mv Cargo.lock.update Cargo.lock
}

build() {
    _ensure_version_information
    cd "$srcdir/$_pkgname"
    # Ensure
    cargo build --locked --release --target-dir=target
    local _folder_bin
    _path_bin="target/release/${_pkgname}"
    local _folder_man
    _folder_man=target/release/man
    mkdir -p ${_folder_man}/man1
    help2man "${_path_bin}" > ${_folder_man}/man1/${_pkgname}.1
    for cmd in clean list push verify; do
        help2man "'$_path_bin' $cmd" > ${_folder_man}/man1/${_pkgname}-${cmd}.1
    done
}

package() {
    cd "$_pkgname"
    install -Dm755 "target/release/$_pkgname" \
        -t "$pkgdir/usr/bin"
    install -Dm644 LICENSE-MIT \
        "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
    find target/release/man/man1 -type f -print0 \
        | xargs -0 install -Dm644 -t "$pkgdir/usr/share/man/man1"
    find "$pkgdir/usr/share/man/man1" -type f -print0 | xargs -0 gzip
}