52 lines
1.5 KiB
Bash
52 lines
1.5 KiB
Bash
#!/bin/bash
|
|
set -o errexit -o pipefail -o nounset -o noclobber
|
|
|
|
database=$1
|
|
application=$2
|
|
file="/home/$(whoami)/.config/containers/systemd/user/${database}.service"
|
|
if [[ ! -f "${file}" ]]; then
|
|
echo "File ${file} not found"
|
|
exit 1
|
|
fi
|
|
content="$(cat "${file}")"
|
|
version_pattern="^Image=docker.io/postgres:([\d]+)$"
|
|
line=""
|
|
new_line=""
|
|
if [[ "${content}" =~ ${version_pattern} ]]; then
|
|
line="${BASH_REMATCH[0]}"
|
|
version="${BASH_REMATCH[1]}"
|
|
new_version="$(("${version}" + 1))"
|
|
new_line="Image=docker.io/postgres:${new_version}"
|
|
else
|
|
echo "Version not found in ${file}"
|
|
exit 1
|
|
fi
|
|
|
|
systemctl --user stop "${application}" "${database}"
|
|
|
|
podman run "${database}"
|
|
podman exec -it "${database}" pg_dumpall -U postgres > dump.sql
|
|
podman stop "${database}"
|
|
|
|
podman volume create db_backup
|
|
podman run --rm -it -v "${database}":/from -v db_backup:/to ubuntu bash -c "cd /from ; cp -av . /to"
|
|
|
|
sed -i "s/${line}/${new_line}/" "${file}"
|
|
sed -i "s/Pod=${application}.pod/#Pod=${application}.pod/" "${file}"
|
|
sed -i "s/StartWithPod=true/#StartWithPod=true/" "${file}"
|
|
systemctl --user daemon-reload
|
|
|
|
systemctl --user start "${database}"
|
|
podman exec -T "${database}" psql -U postgres < dump.sql
|
|
read -n 1 -s -r -p "Press any key to continue..."
|
|
systemctl --user stop "${database}"
|
|
|
|
podman volume rm db_backup
|
|
rm -f dump.sql
|
|
|
|
sed -i "s/#Pod=${application}.pod/Pod=${application}.pod/" "${file}"
|
|
sed -i "s/#StartWithPod=true/StartWithPod=true/" "${file}"
|
|
systemctl --user daemon-reload
|
|
|
|
systemctl --user start "${application}"
|