aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'www-apps/vaultwarden-web/vaultwarden-web-2024.3.1.ebuild')
-rw-r--r--www-apps/vaultwarden-web/vaultwarden-web-2024.3.1.ebuild106
1 files changed, 106 insertions, 0 deletions
diff --git a/www-apps/vaultwarden-web/vaultwarden-web-2024.3.1.ebuild b/www-apps/vaultwarden-web/vaultwarden-web-2024.3.1.ebuild
new file mode 100644
index 000000000..ecff10e55
--- /dev/null
+++ b/www-apps/vaultwarden-web/vaultwarden-web-2024.3.1.ebuild
@@ -0,0 +1,106 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{11..12} )
+
+inherit check-reqs python-any-r1 unpacker
+
+DESCRIPTION="Bitwarden web vault patched to make it work with Vaultwarden"
+HOMEPAGE="https://github.com/dani-garcia/bw_web_builds"
+
+BW_CLIENTS_COMMIT="60e47af"
+SRC_URI="
+ https://github.com/bitwarden/clients/archive/refs/tags/web-v${PV%b}.tar.gz -> ${PN}-${PV%b}.tar.gz
+ https://github.com/rahilarious/gentoo-distfiles/releases/download/bitwarden-clients-${BW_CLIENTS_COMMIT}/deps.tar.zst -> bitwarden-clients-${BW_CLIENTS_COMMIT}.tar.zst
+ https://github.com/dani-garcia/bw_web_builds/archive/refs/tags/v${PV}.tar.gz -> ${P}-patches.tar.gz
+"
+
+S="${WORKDIR}/clients-web-v${PV%b}"
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="!www-apps/vaultwarden-web-bin"
+BDEPEND="
+ ${PYTHON_DEPS}
+ net-libs/nodejs[npm]
+"
+
+CHECKREQS_MEMORY=3G
+CHECKREQS_DISK_BUILD=2G
+
+pkg_pretend() {
+ einfo ""
+ einfo "#################################################"
+ einfo "Prebuilt alternative to this package is available:"
+ einfo " ${CATEGORY}/${PN}-bin"
+ einfo "#################################################"
+ einfo ""
+ check-reqs_pkg_pretend
+}
+
+pkg_setup() {
+ python-any-r1_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ # mimicking the behaviour of https://github.com/dani-garcia/bw_web_builds/blob/master/scripts/apply_patches.sh
+ function replace_embedded_svg_icon() {
+ if [ ! -f $1 ]; then echo "$1 does not exist"; exit -1; fi
+ if [ ! -f $2 ]; then echo "$2 does not exist"; exit -1; fi
+
+ echo "'$1' -> '$2'"
+
+ first='`$'
+ last='^`'
+ sed -i "/$first/,/$last/{ /$first/{p; r $1
+}; /$last/p; d }" $2
+ }
+
+ local PATCH_FILE
+ if [[ -f "../bw_web_builds-${PV}/patches/v${PV%b}.patch" ]]; then
+ einfo "Exact patch file found, using that"
+ PATCH_FILE="../bw_web_builds-${PV}/patches/v${PV%b}.patch"
+ else
+ einfo "No exact patch file not found, using latest"
+ PATCH_FILE="../bw_web_builds-${PV}/patches/$(find ../bw_web_builds-${PV}/patches -type f -print0 | xargs -0 basename -a | sort -V | tail -n1)" || die
+ fi
+
+ cp -vfR ../bw_web_builds*/resources/src/* ./apps/web/src/ || die
+ replace_embedded_svg_icon \
+ ../bw_web_builds-"${PV}"/resources/vaultwarden-admin-console-logo.svg \
+ ./apps/web/src/app/admin-console/icons/admin-console-logo.ts || die
+ replace_embedded_svg_icon \
+ ../bw_web_builds-"${PV}"/resources/vaultwarden-password-manager-logo.svg \
+ ./apps/web/src/app/layouts/password-manager-logo.ts || die
+
+ eapply "${PATCH_FILE}"
+}
+
+src_compile() {
+ # mimicking https://contributing.bitwarden.com/getting-started/clients/
+ export \
+ npm_config_cache="${WORKDIR}"/npm-cache \
+ npm_config_nodedir="${EPREFIX}"/usr \
+ NODE_GYP_FORCE_PYTHON="${PYTHON}" \
+ ELECTRON_SKIP_BINARY_DOWNLOAD=1 \
+ || die
+ npm --verbose --offline clean-install || die
+
+ # mimicking the behaviour of https://github.com/dani-garcia/bw_web_builds/blob/master/scripts/build_web_vault.sh
+ pushd apps/web || die
+ npm --verbose --offline run dist:oss:selfhost && printf '{"version":"%s"}' "${PV}" | tee build/vw-version.json \
+ || die "Build failed! Try prebuilt from upstream ${CATEGORY}/${PN}-bin"
+ # although following is optional in upstream's build process, it reduced build dir size from 44M to 25M
+ find build -name "*.map" -delete || die
+ popd || die
+}
+
+src_install() {
+ insinto /usr/share/webapps/"${PN}"
+ doins -r apps/web/build/*
+}