vaultwarden-web/scripts/apply_patches.sh
BlackDex 12568dfbb4
Add build env's
Sometimes you want to set specific environment variables during build.
For example, on some systems nodejs needs some extra options to be able to run correctly on low memory systems.
To make sure this will be loaded and works on both scripts and Dockerfile, you can now create a `.build_env` file.
This `.build_env` file should contain all the variables (including an export command) you want to expose during build time.

The template file has a nodejs example.

Closes #183

Signed-off-by: BlackDex <black.dex@gmail.com>
2024-11-04 22:28:25 +01:00

58 lines
1.9 KiB
Bash
Executable file

#!/usr/bin/env bash
set -o pipefail -o errexit
function replace_embedded_svg_icon() {
if [ ! -f "$1" ]; then echo "$1 does not exist"; exit 255; fi
if [ ! -f "$2" ]; then echo "$2 does not exist"; exit 255; fi
echo "'$1' -> '$2'"
first='`$'
last='^`'
sed -i "/$first/,/$last/{ /$first/{p; r $1
}; /$last/p; d }" "$2"
}
# If a patch was not provided, try to choose one
if [[ -z ${PATCH_NAME} ]]; then
# If a patch with the same name as the ref exists, use it
if [ -f "../patches/${VAULT_VERSION}.patch" ]; then
echo "Exact patch file found, using that"
PATCH_NAME="${VAULT_VERSION}.patch"
elif [ -f "../patches/legacy/${VAULT_VERSION}.patch" ]; then
echo "Exact legacy patch file found, using that"
echo "NOTE: This is a Legacy patch file for an older web-vault version!"
# Sleep 10 seconds so this note might be noticed a bit better
sleep 10
PATCH_NAME="legacy/${VAULT_VERSION}.patch"
else
echo "No exact patch file not found, using latest"
# If not, use the latest one
PATCH_NAME="$(find ../patches/ -type f -name '*.patch' -print0 | xargs -0 basename -a | sort -V | tail -n1)"
fi
fi
# Final check if the patch file exists, if not, exit
if [[ ! -f "../patches/${PATCH_NAME}" ]]; then
echo "Patch file '${PATCH_NAME}' not found in the patches directory!"
exit 1
fi
echo "Patching images"
cp -vfR ../resources/src/* ./apps/web/src/
echo "Patching logos"
replace_embedded_svg_icon \
../resources/vaultwarden-admin-console-logo.svg \
./apps/web/src/app/admin-console/icons/admin-console-logo.ts
replace_embedded_svg_icon \
../resources/vaultwarden-password-manager-logo.svg \
./apps/web/src/app/layouts/password-manager-logo.ts
echo "Remove non-free bitwarden_license/ code"
rm -rf ./bitwarden_license/
echo "Using patch: ${PATCH_NAME}"
git apply "../patches/${PATCH_NAME}" --reject
echo "Patching successful!"