Implement thread hiding
This commit is contained in:
82
upgrade_sqlite.sh
Executable file
82
upgrade_sqlite.sh
Executable file
@@ -0,0 +1,82 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Script to upgrade a database from one version to another by adding columns,
|
||||
# tables etc.
|
||||
|
||||
LAST_VERSION=agreper-v0.1.1
|
||||
|
||||
SQLITE=sqlite3
|
||||
|
||||
export SQLITE
|
||||
|
||||
set -e
|
||||
|
||||
if [ $# -lt 1 ]
|
||||
then
|
||||
echo "Usage: $0 <file.db> [--no-backup]" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
make_backup=0
|
||||
|
||||
if [ $# -ge 2 ]
|
||||
then
|
||||
case "$2" in
|
||||
--no-backup)
|
||||
make_backup=1
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option $2"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if ! [ -f "$1" ]
|
||||
then
|
||||
echo "Database '$1' doesn't exist" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
version=$(sqlite3 "$1" 'select version from config')
|
||||
|
||||
while true
|
||||
do
|
||||
case "$version" in
|
||||
# Last version, do nothing
|
||||
agreper-v0.1.1)
|
||||
echo "$version is the latest version"
|
||||
exit 0
|
||||
;;
|
||||
# Try to upgrade
|
||||
agreper-*)
|
||||
echo "Upgrading from $version"
|
||||
|
||||
if [ $make_backup ]
|
||||
then
|
||||
backup="$1.bak-$version"
|
||||
if [ -f "$backup" ]
|
||||
then
|
||||
echo "Backup '$backup' already exists (did a previous upgrade fail?)" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "Creating backup of $1 at $backup"
|
||||
cp --reflink=auto "$1" "$backup"
|
||||
make_backup=1
|
||||
fi
|
||||
|
||||
script="./upgrade/sqlite/${version#agreper-}.sh"
|
||||
if ! bash "$script" "$1"
|
||||
then
|
||||
echo "Error while executing $script"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
# Unrecognized version
|
||||
*)
|
||||
echo "Unknown version $version" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
version=$(sqlite3 "$1" 'select version from config')
|
||||
done
|
||||
Reference in New Issue
Block a user