mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2024-12-10 21:24:20 +01:00
91 lines
2.4 KiB
Bash
91 lines
2.4 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
yq() {
|
|
docker run --rm -i -v "${NGINX_PATH}:/workdir" --user "$UID" mikefarah/yq:4 "$@"
|
|
}
|
|
|
|
config()
|
|
{
|
|
if [ "$(whoami)" = "root" ]
|
|
then
|
|
echo "It is not recommended to run this script as root. As a normal user, elevation will be prompted if needed."
|
|
[[ "$YES_ALL" = "true" ]] && confirm="y" || read -rp "Continue anyway? (Y/n) " confirm </dev/tty
|
|
if [[ "$confirm" = "n" ]]; then exit 1; fi
|
|
else
|
|
if ! groups | grep docker; then
|
|
echo "Please add your current user to the docker group."
|
|
echo "You can run the following as root: \"usermod -aG docker $(whoami)\", then logout and login again"
|
|
echo "current user is not allowed to use docker, exiting..."
|
|
exit 1
|
|
fi
|
|
fi
|
|
NGINX_PATH=$(pwd)
|
|
TYPE="NOT-FOUND"
|
|
[[ "$YES_ALL" = "true" ]] && confirm="y" || read -rp "Is Fab-manager installed at \"$NGINX_PATH\"? (y/N) " confirm </dev/tty
|
|
if [ "$confirm" = "y" ]; then
|
|
test_docker_compose
|
|
while [[ "$TYPE" = "NOT-FOUND" ]]
|
|
do
|
|
echo "nginx was not found at the current path, please specify the nginx installation path..."
|
|
read -e -rp "> " nginxpath </dev/tty
|
|
NGINX_PATH="${nginxpath}"
|
|
test_docker_compose
|
|
done
|
|
else
|
|
echo "Please run this script from the Fab-manager's installation folder"
|
|
exit 1
|
|
fi
|
|
SERVICE="$(yq eval '.services.*.image | select(. == "nginx*") | path | .[-2]' docker-compose.yml)"
|
|
}
|
|
|
|
test_docker_compose()
|
|
{
|
|
if [[ -f "$NGINX_PATH/docker-compose.yml" ]]
|
|
then
|
|
docker-compose -f "$NGINX_PATH/docker-compose.yml" ps | grep nginx
|
|
if [[ $? = 0 ]]
|
|
then
|
|
printf "nginx found at %s\n" "$NGINX_PATH"
|
|
TYPE="DOCKER-COMPOSE"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
proceed_upgrade()
|
|
{
|
|
files=()
|
|
while IFS= read -r -d $'\0'; do
|
|
files+=("$REPLY")
|
|
done < <(find "$NGINX_PATH" -name "*.conf" -print0 2>/dev/null)
|
|
for file in "${files[@]}"; do
|
|
read -rp "Process \"$file\" (y/N)? " confirm </dev/tty
|
|
if [[ "$confirm" = "y" ]]; then
|
|
sed -i.bak -e 's:location ^~ /assets/ {:location ^~ /packs/ {:g' "$file"
|
|
echo "$file was successfully upgraded"
|
|
fi
|
|
done
|
|
}
|
|
|
|
|
|
docker_restart()
|
|
{
|
|
docker-compose -f "$NGINX_PATH/docker-compose.yml" restart "$SERVICE"
|
|
}
|
|
|
|
function trap_ctrlc()
|
|
{
|
|
echo "Ctrl^C, exiting..."
|
|
exit 2
|
|
}
|
|
|
|
upgrade_directive()
|
|
{
|
|
trap "trap_ctrlc" 2 # SIGINT
|
|
config
|
|
proceed_upgrade
|
|
docker_restart
|
|
printf "upgrade complete\n"
|
|
}
|
|
|
|
upgrade_directive "$@"
|