# Maintainer: Eddie Billoir <lechatp@outlook.fr>

pkgname=rootasrole
pkgver=4.1.0
pkgrel=1
pkgdesc='Alternative to sudo to run some administrative commands that uses Linux capabilities and RBAC for scalability.'
url='https://lechatp.github.io/RootAsRole/'
license=('LGPL-3.0-or-later')
arch=('x86_64')
depends=('libcap' 'e2fsprogs' 'pam')
makedepends=('cargo')
backup=('etc/pam.d/dosr')
validpgpkeys=('74F43C5774BE1F3527DEFA4835C155EA0525104D')
source=("$pkgname-$pkgver.tar.gz::https://static.crates.io/crates/$pkgname/$pkgname-$pkgver.crate")
sha256sums=('SKIP')
install=rootasrole.install

prepare() {
    cd "$pkgname-$pkgver"
    export RUSTUP_TOOLCHAIN=stable
    cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')"
}

build() {
    cd "$pkgname-$pkgver"
    export RUSTUP_TOOLCHAIN=stable
    export CARGO_TARGET_DIR=target
    cargo build --frozen --release --all-features
}

check() {
    cd "$pkgname-$pkgver"
    export RUSTUP_TOOLCHAIN=stable
    export CARGO_TARGET_DIR=target
    cargo test --frozen --all-features
}

package() {
    cd "$pkgname-$pkgver"
    install -Dm755 'target/release/dosr' -t "$pkgdir/usr/bin"
    install -Dm755 'target/release/chsr' -t "$pkgdir/usr/bin"
    install -Dm644 'resources/arch/arch_sr_pam.conf' "$pkgdir/etc/pam.d/dosr"
    # the root file and the default policy, installed by rootasrole.install,
    # which also sets the administrator of the default policy
    install -dm755 "$pkgdir/usr/share/rootasrole"
    sed "s/PACKAGE_VERSION/$pkgver/" 'resources/rootasrole.json' \
        > "$pkgdir/usr/share/rootasrole/default.json"
    cat > "$pkgdir/usr/share/rootasrole/rootasrole.json" <<EOF
{
  "version": "$pkgver",
  "storage": {
    "method": "json",
    "settings": {
      "path": "/etc/security/rootasrole.d",
      "immutable": true
    }
  }
}
EOF
    chmod 644 "$pkgdir"/usr/share/rootasrole/*.json
    setcap '=p' "$pkgdir/usr/bin/dosr"
}
