sqlmig: ajout de l'option --update-one
This commit is contained in:
parent
6a6b2a5f32
commit
7181725056
64
sqlmig
64
sqlmig
|
@ -98,7 +98,7 @@ OPTIONS
|
||||||
-e, --export DESTUPDATEDIR
|
-e, --export DESTUPDATEDIR
|
||||||
Exporter les définitions de bases de données et mises à jour du
|
Exporter les définitions de bases de données et mises à jour du
|
||||||
répertoire courant vers le répertoire DESTUPDATEDIR
|
répertoire courant vers le répertoire DESTUPDATEDIR
|
||||||
-u, --update
|
-u, --update-all
|
||||||
Mettre à jour la base de données. C'est l'option par défaut
|
Mettre à jour la base de données. C'est l'option par défaut
|
||||||
-t, --updatedir UPDATEDIR
|
-t, --updatedir UPDATEDIR
|
||||||
Spécifier le répertoire qui contient les répertoires de mises à jour
|
Spécifier le répertoire qui contient les répertoires de mises à jour
|
||||||
|
@ -114,6 +114,10 @@ OPTIONS
|
||||||
données est calculé à partir du nom du répertoire DATABASEDIR. Cette
|
données est calculé à partir du nom du répertoire DATABASEDIR. Cette
|
||||||
option peut être utilisée par exemple pour créer une base de test à
|
option peut être utilisée par exemple pour créer une base de test à
|
||||||
partir des définitions d'une base de prod.
|
partir des définitions d'une base de prod.
|
||||||
|
-f, --update-one UPDATE
|
||||||
|
Forcer l'application de la mise à jour spécifiée. Ne pas mettre à jour
|
||||||
|
l'état des mises à jour installées. Avec cette option, tout se passe
|
||||||
|
comme si le seul fichier existant est celui spécifié.
|
||||||
|
|
||||||
-n, --fake
|
-n, --fake
|
||||||
Ne pas faire les mises à jour, afficher simplement ce qui serait fait
|
Ne pas faire les mises à jour, afficher simplement ce qui serait fait
|
||||||
|
@ -421,7 +425,8 @@ function mysql_set_mysqlargs() {
|
||||||
}
|
}
|
||||||
MYSQL_ADMIN_CONF_DONE=
|
MYSQL_ADMIN_CONF_DONE=
|
||||||
function mysql_admin_update() {
|
function mysql_admin_update() {
|
||||||
local name="$1" update="$2" done
|
local name="$1" update="$2" updatefile="$3" done
|
||||||
|
if [ -z "$updatefile" ]; then
|
||||||
if [ -z "$MYSQL_ADMIN_CONF_DONE" ]; then
|
if [ -z "$MYSQL_ADMIN_CONF_DONE" ]; then
|
||||||
MYSQL_ADMIN_CONF_DONE=1
|
MYSQL_ADMIN_CONF_DONE=1
|
||||||
mysql_tbconf
|
mysql_tbconf
|
||||||
|
@ -430,27 +435,38 @@ function mysql_admin_update() {
|
||||||
[ -n "$fake" ] || die
|
[ -n "$fake" ] || die
|
||||||
fi
|
fi
|
||||||
[ -n "$done" ] && return
|
[ -n "$done" ] && return
|
||||||
|
fi
|
||||||
|
|
||||||
estep "$name"
|
estep "$name"
|
||||||
[ -n "$fake" ] && return
|
[ -n "$fake" ] && return
|
||||||
|
|
||||||
|
if [ -z "$updatefile" ]; then
|
||||||
mysql_before_update || die
|
mysql_before_update || die
|
||||||
|
fi
|
||||||
cat "$update" | mysql_admin_ve || abort_on_error
|
cat "$update" | mysql_admin_ve || abort_on_error
|
||||||
|
if [ -z "$updatefile" ]; then
|
||||||
mysql_after_update || die
|
mysql_after_update || die
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
function mysql_user_update() {
|
function mysql_user_update() {
|
||||||
local name="$1" update="$2" dbname="$3" done
|
local name="$1" update="$2" dbname="$3" updatefile="$4" done
|
||||||
|
if [ -z "$updatefile" ]; then
|
||||||
if ! setx done=mysql_get_done "$name" "$dbname"; then
|
if ! setx done=mysql_get_done "$name" "$dbname"; then
|
||||||
[ -n "$fake" ] || die
|
[ -n "$fake" ] || die
|
||||||
fi
|
fi
|
||||||
[ -n "$done" ] && return
|
[ -n "$done" ] && return
|
||||||
|
fi
|
||||||
|
|
||||||
estep "$name"
|
estep "$name"
|
||||||
[ -n "$fake" ] && return
|
[ -n "$fake" ] && return
|
||||||
|
|
||||||
|
if [ -z "$updatefile" ]; then
|
||||||
mysql_before_update "$dbname" || die
|
mysql_before_update "$dbname" || die
|
||||||
|
fi
|
||||||
cat "$update" | mysql_user_ve || abort_on_error
|
cat "$update" | mysql_user_ve || abort_on_error
|
||||||
|
if [ -z "$updatefile" ]; then
|
||||||
mysql_after_update "$dbname" || die
|
mysql_after_update "$dbname" || die
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -739,32 +755,44 @@ function oracle_source_userconf() {
|
||||||
}
|
}
|
||||||
ORACLE_ADMIN_CONF_DONE=
|
ORACLE_ADMIN_CONF_DONE=
|
||||||
function oracle_admin_update() {
|
function oracle_admin_update() {
|
||||||
local name="$1" update="$2" done
|
local name="$1" update="$2" updatefile="$3" done
|
||||||
|
if [ -z "$updatefile" ]; then
|
||||||
if [ -z "$ORACLE_ADMIN_CONF_DONE" ]; then
|
if [ -z "$ORACLE_ADMIN_CONF_DONE" ]; then
|
||||||
ORACLE_ADMIN_CONF_DONE=
|
ORACLE_ADMIN_CONF_DONE=
|
||||||
oracle_tbconf
|
oracle_tbconf
|
||||||
fi
|
fi
|
||||||
setx done=oracle_get_done "$name" || die
|
setx done=oracle_get_done "$name" || die
|
||||||
[ -n "$done" ] && return
|
[ -n "$done" ] && return
|
||||||
|
fi
|
||||||
|
|
||||||
estep "$name"
|
estep "$name"
|
||||||
[ -n "$fake" ] && return
|
[ -n "$fake" ] && return
|
||||||
|
|
||||||
|
if [ -z "$updatefile" ]; then
|
||||||
oracle_before_update || die
|
oracle_before_update || die
|
||||||
|
fi
|
||||||
cat "$update" | oracle_admin_ve || abort_on_error
|
cat "$update" | oracle_admin_ve || abort_on_error
|
||||||
|
if [ -z "$updatefile" ]; then
|
||||||
oracle_after_update || die
|
oracle_after_update || die
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
function oracle_user_update() {
|
function oracle_user_update() {
|
||||||
local name="$1" update="$2" dbname="$3" done
|
local name="$1" update="$2" dbname="$3" updatefile="$4" done
|
||||||
|
if [ -z "$updatefile" ]; then
|
||||||
setx done=oracle_get_done "$name" "$dbname" || die
|
setx done=oracle_get_done "$name" "$dbname" || die
|
||||||
[ -n "$done" ] && return
|
[ -n "$done" ] && return
|
||||||
|
fi
|
||||||
|
|
||||||
estep "$name"
|
estep "$name"
|
||||||
[ -n "$fake" ] && return
|
[ -n "$fake" ] && return
|
||||||
|
|
||||||
|
if [ -z "$updatefile" ]; then
|
||||||
oracle_before_update "$dbname" || die
|
oracle_before_update "$dbname" || die
|
||||||
|
fi
|
||||||
cat "$update" | oracle_user_ve || abort_on_error
|
cat "$update" | oracle_user_ve || abort_on_error
|
||||||
|
if [ -z "$updatefile" ]; then
|
||||||
oracle_after_update "$dbname" || die
|
oracle_after_update "$dbname" || die
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -793,6 +821,7 @@ updatedir=
|
||||||
exportdir=
|
exportdir=
|
||||||
dbdir=
|
dbdir=
|
||||||
dbname=
|
dbname=
|
||||||
|
updatefile=
|
||||||
force=
|
force=
|
||||||
data_csv=auto
|
data_csv=auto
|
||||||
mode="$MODE"
|
mode="$MODE"
|
||||||
|
@ -818,10 +847,11 @@ args=(
|
||||||
--oracle type=oracle
|
--oracle type=oracle
|
||||||
-0,--init action=init
|
-0,--init action=init
|
||||||
-e:,--export: '$action=export; set@ exportdir'
|
-e:,--export: '$action=export; set@ exportdir'
|
||||||
-u,--update action=update
|
-u,--update-all action=update
|
||||||
-t:,--updatedir: updatedir=
|
-t:,--updatedir: updatedir=
|
||||||
-d:,--databasedir: dbdir=
|
-d:,--databasedir: dbdir=
|
||||||
-b:,--database: dbname=
|
-b:,--database: dbname=
|
||||||
|
-f:,--update-one: updatefile=
|
||||||
-n,--fake fake=1
|
-n,--fake fake=1
|
||||||
--force,--continue-on-error force=1
|
--force,--continue-on-error force=1
|
||||||
--no-data-csv data_csv=
|
--no-data-csv data_csv=
|
||||||
|
@ -1028,6 +1058,8 @@ if [ -n "$dbname" -a ${#dbdirs[*]} -gt 1 ]; then
|
||||||
die "Avec l'option -n, une seule base de données doit être spécifiée"
|
die "Avec l'option -n, une seule base de données doit être spécifiée"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
[ -n "$updatefile" ] && setx updatefile=abspath "$updatefile"
|
||||||
|
|
||||||
# répertoire temporaire pour Oracle
|
# répertoire temporaire pour Oracle
|
||||||
OPDIR=
|
OPDIR=
|
||||||
|
|
||||||
|
@ -1047,7 +1079,8 @@ if [ -n "$updatedir" ]; then
|
||||||
for update in "${updates[@]}"; do
|
for update in "${updates[@]}"; do
|
||||||
setx name=basename "$update"
|
setx name=basename "$update"
|
||||||
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
||||||
mysql_admin_update "$name" "$update"
|
[ -z "$updatefile" -o "$updatefile" == "$update" ] || continue
|
||||||
|
mysql_admin_update "$name" "$update" "$updatefile"
|
||||||
done
|
done
|
||||||
eend; eclearp
|
eend; eclearp
|
||||||
|
|
||||||
|
@ -1061,7 +1094,8 @@ if [ -n "$updatedir" ]; then
|
||||||
for update in "${updates[@]}"; do
|
for update in "${updates[@]}"; do
|
||||||
setx name=basename "$update"
|
setx name=basename "$update"
|
||||||
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
||||||
oracle_admin_update "$name" "$update"
|
[ -z "$updatefile" -o "$updatefile" == "$update" ] || continue
|
||||||
|
oracle_admin_update "$name" "$update" "$updatefile"
|
||||||
done
|
done
|
||||||
eend; eclearp
|
eend; eclearp
|
||||||
fi
|
fi
|
||||||
|
@ -1139,6 +1173,7 @@ for dbdir in "${dbdirs[@]}"; do
|
||||||
for drop in "${drops[@]}"; do
|
for drop in "${drops[@]}"; do
|
||||||
setx name=basename "$drop"
|
setx name=basename "$drop"
|
||||||
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
||||||
|
[ -z "$updatefile" -o "$updatefile" == "$update" ] || continue
|
||||||
estep "$name"
|
estep "$name"
|
||||||
[ -n "$fake" ] && continue
|
[ -n "$fake" ] && continue
|
||||||
|
|
||||||
|
@ -1154,6 +1189,7 @@ for dbdir in "${dbdirs[@]}"; do
|
||||||
for create in "${creates[@]}"; do
|
for create in "${creates[@]}"; do
|
||||||
setx name=basename "$create"
|
setx name=basename "$create"
|
||||||
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
||||||
|
[ -z "$updatefile" -o "$updatefile" == "$update" ] || continue
|
||||||
estep "$name"
|
estep "$name"
|
||||||
[ -n "$fake" ] && continue
|
[ -n "$fake" ] && continue
|
||||||
|
|
||||||
|
@ -1169,10 +1205,11 @@ for dbdir in "${dbdirs[@]}"; do
|
||||||
for update in "${updates[@]}"; do
|
for update in "${updates[@]}"; do
|
||||||
setx name=basename "$update"
|
setx name=basename "$update"
|
||||||
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
||||||
|
[ -z "$updatefile" -o "$updatefile" == "$update" ] || continue
|
||||||
if have_tag admin "$update"; then
|
if have_tag admin "$update"; then
|
||||||
mysql_admin_update "$name" "$update"
|
mysql_admin_update "$name" "$update" "$updatefile"
|
||||||
else
|
else
|
||||||
mysql_user_update "$name" "$update" "$dbname"
|
mysql_user_update "$name" "$update" "$dbname" "$updatefile"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
eend; eclearp
|
eend; eclearp
|
||||||
|
@ -1196,6 +1233,7 @@ for dbdir in "${dbdirs[@]}"; do
|
||||||
for drop in "${drops[@]}"; do
|
for drop in "${drops[@]}"; do
|
||||||
setx name=basename "$drop"
|
setx name=basename "$drop"
|
||||||
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
||||||
|
[ -z "$updatefile" -o "$updatefile" == "$update" ] || continue
|
||||||
estep "$name"
|
estep "$name"
|
||||||
[ -n "$fake" ] && continue
|
[ -n "$fake" ] && continue
|
||||||
|
|
||||||
|
@ -1211,6 +1249,7 @@ for dbdir in "${dbdirs[@]}"; do
|
||||||
for create in "${creates[@]}"; do
|
for create in "${creates[@]}"; do
|
||||||
setx name=basename "$create"
|
setx name=basename "$create"
|
||||||
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
||||||
|
[ -z "$updatefile" -o "$updatefile" == "$update" ] || continue
|
||||||
estep "$name"
|
estep "$name"
|
||||||
[ -n "$fake" ] && continue
|
[ -n "$fake" ] && continue
|
||||||
|
|
||||||
|
@ -1226,10 +1265,11 @@ for dbdir in "${dbdirs[@]}"; do
|
||||||
for update in "${updates[@]}"; do
|
for update in "${updates[@]}"; do
|
||||||
setx name=basename "$update"
|
setx name=basename "$update"
|
||||||
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
[ "$dbmode" == devel -o "${name%.devel.sql}" == "$name" ] || continue
|
||||||
|
[ -z "$updatefile" -o "$updatefile" == "$update" ] || continue
|
||||||
if have_tag admin "$update"; then
|
if have_tag admin "$update"; then
|
||||||
oracle_admin_update "$name" "$update"
|
oracle_admin_update "$name" "$update" "$updatefile"
|
||||||
else
|
else
|
||||||
oracle_user_update "$name" "$update" "$dbname"
|
oracle_user_update "$name" "$update" "$dbname" "$updatefile"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
eend; eclearp
|
eend; eclearp
|
||||||
|
|
Loading…
Reference in New Issue