# Maintainer: Vitalii Kuzhdin _sdk=10.0 _Name="DiscordChatExporter" pkgbase="discord-chat-exporter" pkgname=( "${pkgbase}-core" "${pkgbase}-cli" "${pkgbase}-gui" ) pkgver=2.46.1 pkgrel=1 pkgdesc="Exports Discord chat logs to a file" arch=( 'aarch64' 'armv7h' 'x86_64' ) url="https://github.com/Tyrrrz/${_Name}" license=( 'MIT' ) depends=( "dotnet-runtime-${_sdk}" ) makedepends=( "dotnet-sdk-${_sdk}" 'gendesk' ) options=( '!strip' '!debug' ) _pkgsrc="${_Name}-${pkgver}" source=( "${pkgbase}_xdg_settings.patch" ) b2sums=('ec3740a7c60b0f5fc2773e991e6cde9b4116d77d50094b237e118f456d9273c18a8e3bc2da2ff8a86eb35fa7df4f81c94759467b415f53e4794fb7a4e0929a91') if [ "${CARCH}" = 'aarch64' ]; then _msarch=arm64; elif [ "${CARCH}" = 'armv7h' ]; then _msarch=arm; elif [ "${CARCH}" = 'x86_64' ]; then _msarch=x64; fi _source() { export NUGET_PACKAGES="${srcdir}/.nuget" export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true export DOTNET_NOLOGO=true export DOTNET_CLI_TELEMETRY_OPTOUT=true } prepare() { _source local dotnet_restore_options=( --runtime "linux-${_msarch}" --locked-mode ) mkdir -p "${srcdir}/${_pkgsrc}" rsync -a --delete \ --exclude='/.git' \ --exclude='/src' \ --exclude='/pkg' \ --exclude='/.nuget' \ "${startdir}/" "${srcdir}/${_pkgsrc}/" cd "${srcdir}/${_pkgsrc}" patch -Np1 -i "${srcdir}/${pkgbase}_xdg_settings.patch" for dir in Core Cli Gui; do dotnet restore "${dotnet_restore_options[@]}" "${_Name}.${dir}" done } build() { _source local dotnet_publish_options=( --configuration Release --framework "net${_sdk}" --no-restore # --output build --no-self-contained --runtime "linux-${_msarch}" -p:DebugType=None -p:DebugSymbols=false -p:Version="${pkgver%%.[A-Za-z]*}" -p:PublishTrimmed=false -p:PublishMacOSBundle=false ) cd "${srcdir}" gendesk -f -n \ --pkgname "${pkgbase}-gui" \ --pkgdesc "${pkgdesc}" \ --name "Discord Chat Exporter (GUI)" \ --exec "${pkgbase}-gui" \ --icon "${pkgbase}" \ --categories "Utility" cd "${_pkgsrc}" dotnet publish "${dotnet_publish_options[@]}" --output build-core "${_Name}.Core" mkdir -p build-{cli,gui} cp -aT build-core build-cli cp -aT build-core build-gui dotnet publish "${dotnet_publish_options[@]}" --output build-cli "${_Name}.Cli" dotnet publish "${dotnet_publish_options[@]}" --output build-gui "${_Name}.Gui" find build-core -type f | while read -r f; do rel="${f#build-core/}" rm -f "build-cli/$rel" "build-gui/$rel" done } package_discord-chat-exporter-core() { pkgdesc+=" - Core" cd "${srcdir}/${_pkgsrc}" install -vd "${pkgdir}/usr/lib/${pkgbase}" cp -vaT --no-preserve=ownership "build-core" "${pkgdir}/usr/lib/${pkgbase}" install -vDm644 "Readme.md" "${pkgdir}/usr/share/doc/${pkgbase}/README.md" install -vDm644 "License.txt" "${pkgdir}/usr/share/licenses/${pkgbase}/LICENSE" install -vDm644 "favicon.png" "${pkgdir}/usr/share/pixmaps/${pkgbase}.png" } package_discord-chat-exporter-cli() { pkgdesc+=" - CLI" depends+=( "${pkgbase}-core>=${pkgver}-${pkgrel}" ) cd "${srcdir}/${_pkgsrc}" install -vd "${pkgdir}/usr/bin" "${pkgdir}/usr/lib/${pkgbase}" cp -vaT --no-preserve=ownership "build-cli" "${pkgdir}/usr/lib/${pkgbase}" ln -vsf "/usr/lib/${pkgbase}/${_Name}.Cli" "${pkgdir}/usr/bin/${pkgname}" } package_discord-chat-exporter-gui() { pkgdesc+=" - GUI" depends+=( "${pkgbase}-core>=${pkgver}-${pkgrel}" ) cd "${srcdir}" install -vDm644 "${pkgname}.desktop" "${pkgdir}/usr/share/applications/${pkgname}.desktop" cd "${_pkgsrc}" install -vd "${pkgdir}/usr/bin" "${pkgdir}/usr/lib/${pkgbase}" cp -vaT --no-preserve=ownership "build-gui" "${pkgdir}/usr/lib/${pkgbase}/" ln -vsf "/usr/lib/${pkgbase}/${_Name}" "${pkgdir}/usr/bin/${pkgname}" }