# Copyright 2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 inherit desktop xdg-utils NODE_MODULES_SRC_URI=" https://registry.npmjs.org/@spacingbat3/disconnection/-/disconnection-1.3.2.tgz -> webcord-dep--disconnection-1.3.2.tgz https://registry.npmjs.org/@spacingbat3/kolor/-/kolor-4.0.0.tgz -> webcord-dep--kolor-4.0.0.tgz https://registry.npmjs.org/@spacingbat3/lss/-/lss-1.2.0.tgz -> webcord-dep--lss-1.2.0.tgz https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz -> webcord-dep--buffer-from-1.1.2.tgz https://registry.npmjs.org/deepmerge-ts/-/deepmerge-ts-7.0.3.tgz -> webcord-dep--deepmerge-ts-7.0.3.tgz https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz -> webcord-dep--dompurify-3.1.6.tgz https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz -> webcord-dep--github-slugger-2.0.0.tgz https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz -> webcord-dep--highlight.js-11.9.0.tgz https://registry.npmjs.org/marked/-/marked-13.0.2.tgz -> webcord-dep--marked-13.0.2.tgz https://registry.npmjs.org/marked-gfm-heading-id/-/marked-gfm-heading-id-4.0.0.tgz -> webcord-dep--marked-gfm-heading-id-4.0.0.tgz https://registry.npmjs.org/marked-highlight/-/marked-highlight-2.1.3.tgz -> webcord-dep--marked-highlight-2.1.3.tgz https://registry.npmjs.org/semver/-/semver-7.6.2.tgz -> webcord-dep--semver-7.6.2.tgz https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz -> webcord-dep--source-map-0.6.1.tgz https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz -> webcord-dep--source-map-support-0.5.21.tgz https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz -> webcord-dep--tslib-2.6.3.tgz https://registry.npmjs.org/twemoji-colr-font/-/twemoji-colr-font-14.1.3.tgz -> webcord-dep--twemoji-colr-font-14.1.3.tgz https://registry.npmjs.org/ws/-/ws-8.18.0.tgz -> webcord-dep--ws-8.18.0.tgz " DESCRIPTION="A Discord and Fosscord client made with the Electron API." HOMEPAGE="https://github.com/SpacingBat3/WebCord" SRC_URI=" https://github.com/SpacingBat3/WebCord/archive/v${PV}.tar.gz -> ${P}.tar.gz ${NODE_MODULES_SRC_URI} " S="${WORKDIR}/WebCord-${PV}" LICENSE="MIT" SLOT="0" KEYWORDS="~amd64 ~x86" IUSE="systray" DEPEND=" dev-util/electron:31 " RDEPEND="${DEPEND} systray? ( dev-libs/libayatana-appindicator ) " BDEPEND=" dev-util/esbuild " src_unpack() { # From dev-util/electron from electron overlay local a local fn mkdir -p "${WORKDIR}/npm-cache" || die for a in ${A} ; do case "${a}" in ${PN}-dep*) # Npm artifact fn="${a#${PN}-dep--}" fn="${fn#${PN}-dep-}" ln -s "${DISTDIR}/${a}" "${WORKDIR}/npm-cache/${fn}" || die ;; *) # Fallback to the default unpacker. unpack "${a}" ;; esac done } src_prepare() { default einfo "Installing nodejs dependencies from cache" for npm_tgz in "${WORKDIR}/npm-cache/"*; do einfo $(basename ${npm_tgz}) npm install --no-package-lock --silent --offline "${npm_tgz}" done npm ci --omit=dev --ignore-scripts --prefix=. rm -r "sources/code/build" rm "sources/assets/icons/app.ic"* } src_compile() { shopt -s globstar einfo "Compiling typescript with esbuild" esbuild "sources/code/"**/*".ts" \ --outbase="sources" \ --outdir="app" \ --minify \ --platform=node \ --target=es2022 \ --format=cjs \ --supported:dynamic-import=false || die shopt -u globstar } src_install() { dodir /usr/lib/webcord dodir /usr/lib/webcord/sources newmenu "${FILESDIR}/app.desktop" webcord.desktop insinto /usr/lib/webcord doins package.json doins "${FILESDIR}/buildInfo.json" doins -r app doins -r node_modules newicon -s 512x512 "sources/assets/icons/app.png" webcord.png insinto /usr/lib/webcord/sources doins -r sources/assets doins -r sources/translations dosym "../sources/translations" "/usr/lib/webcord/app/translations" echo "#!/bin/sh" > "webcord" echo "electron-31 '/usr/lib/webcord' \"\$@\"" >> "webcord" dobin "webcord" } pkg_postinst() { xdg_icon_cache_update } pkg_postrm() { xdg_icon_cache_update }