summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: ca09eafef9d3554ea716a3acacd4958f64c9de59 (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
# Maintainer: Mark Wagie <mark dot wagie at proton dot me>
pkgname=rustconn
_app_id=io.github.totoshko88.RustConn
pkgver=0.10.18
pkgrel=1
pkgdesc="Modern connection manager for Linux with GTK4/Wayland-native interface."
arch=('x86_64')
url="https://github.com/totoshko88/RustConn"
license=('GPL-3.0-or-later')
depends=(
  'alsa-lib'
  'dbus'
  'gtk4'
  'libadwaita'
  'openssh'
  'openssl'
  'vte4'
  'which'
  'zstd'
)
makedepends=('cargo')
optdepends=(
  '1password-cli: Password storage method option'
  'aws-cli: AWS CLI'
  'aws-session-manager-plugin: AWS SSM Plugin'
  'azure-cli: Azure CLI'
  'bitwarden-cli: Password storage method option'
  'boundary: Boundary CLI'
  'cloudflared: Cloudflare CLI'
  'freerdp: External RDP client fallback'
  'google-cloud-cli: Google Cloud CLI'
  'gtk-vnc: VNC Client option'
  'inetutils: Telnet client'
  'keepassxc: Password storage method option'
  'krdc: VNC client option'
  'kubectl: Shell access to Kubernetes pods'
  'libappindicator: Display icon in system tray'
  'libsecret: Password storage method fallback'
  'mc: SFTP via Midnight Commander FISH VFS'
  'oci-cli: OCI CLI'
  'pass: Password storage method option'
  'passbolt-cli: Password storage method option'
  'picocom: Serial terminal client'
  'realvnc-vnc-viewer: VNC client option'
  'remmina: VNC client option'
  'tailscale: Tailscale CLI'
  'teleport: Teleport CLI'
  'tigervnc: External VNC client fallback'
  'virt-viewer: External SPICE client fallback'
  'waypipe: Wayland application forwarding for SSH connections'
)
source=("RustConn-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz")
sha256sums=('ace5a91ef6878f82bdc16705746a90f0125ab267bb62872009ac4b19c7ce1b90')

prepare() {
  cd "RustConn-$pkgver"
  export RUSTUP_TOOLCHAIN=stable
  cargo fetch --locked --target host-tuple
}

build() {
  cd "RustConn-$pkgver"
  CFLAGS+=" -ffat-lto-objects"
  export RUSTUP_TOOLCHAIN=stable
  export CARGO_TARGET_DIR=target
  cargo build --frozen --release \
    -p "$pkgname" --features adw-1-8 \
    -p "$pkgname"-cli
}

check() {
  cd "RustConn-$pkgver"
  export RUSTUP_TOOLCHAIN=stable
  cargo test --frozen

  appstreamcli validate --no-net "$pkgname/assets/${_app_id}.metainfo.xml"
  desktop-file-validate "$pkgname/assets/${_app_id}.desktop"
}

package() {
  cd "RustConn-$pkgver"
  install -Dm755 target/release/{"$pkgname","$pkgname-cli"} -t "$pkgdir/usr/bin/"
  install -Dm644 "$pkgname/assets/${_app_id}.desktop" -t \
    "$pkgdir/usr/share/applications/"
  install -Dm644 "$pkgname/assets/${_app_id}.metainfo.xml" -t \
    "$pkgdir/usr/share/metainfo/"
  install -Dm644 "$pkgname/assets/icons/hicolor/scalable/apps/${_app_id}.svg" -t \
      "$pkgdir/usr/share/icons/hicolor/scalable/apps/"

  for i in 128 256; do
    install -Dm644 "$pkgname/assets/icons/hicolor/${i}x${i}/apps/${_app_id}.png" -t \
      "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/"
  done

  for po_file in po/*.po; do
    [ -f "${po_file}" ] || continue
    lang=$(basename "${po_file}" .po)
    install -d "$pkgdir/usr/share/locale/${lang}/LC_MESSAGES"
    msgfmt -o "$pkgdir/usr/share/locale/${lang}/LC_MESSAGES/$pkgname.mo" "${po_file}"
  done
}