sqlmig: support des profils
This commit is contained in:
parent
66e1674c00
commit
e493b49811
|
@ -0,0 +1,7 @@
|
|||
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
||||
|
||||
# Mode par défaut: prod ou devel
|
||||
#MODE=auto
|
||||
|
||||
# Répertoire des profils
|
||||
#PROFILEDIR=/etc/sqlmig
|
64
sqlmig
64
sqlmig
|
@ -39,6 +39,16 @@ OPTIONS
|
|||
Les options --sid et --nls-lang ne sont valides que pour Oracle. Ces
|
||||
valeurs remplacent les valeurs par défaut chargées depuis ora.conf
|
||||
|
||||
--profile PROFILE
|
||||
-P, --prod
|
||||
-T, --test
|
||||
Activer le profil spécifié. Les options -P et -T sont des aliases pour
|
||||
les options --profile prod et --profile test respectivement.
|
||||
Quand un profil est activé, les fichiers de configuration par défaut
|
||||
deviennent respectivement \$PROFILE-my.cnf et \$PROFILE-ora.conf au lieu
|
||||
de my.cnf et ora.conf. De plus, ces fichiers sont aussi recherchés dans
|
||||
le répertoire /etc/sqlmig
|
||||
|
||||
--mysql
|
||||
--oracle
|
||||
Spécifier le type de base de données à gérer. Par défaut, on gère une
|
||||
|
@ -288,11 +298,24 @@ function mysql_after_update() {
|
|||
fi
|
||||
}
|
||||
|
||||
function mysql_set_adminargs() {
|
||||
function mysql_get_defaults() {
|
||||
local dir="$1"
|
||||
if [ -z "$profile" ]; then
|
||||
echo "$dir/my.cnf"
|
||||
elif [ -f "$dir/${profile}-my.cnf" ]; then
|
||||
echo "$dir/${profile}-my.cnf"
|
||||
elif [ -f "$PROFILEDIR/${profile}-my.cnf" ]; then
|
||||
echo "$PROFILEDIR/${profile}-my.cnf"
|
||||
else
|
||||
echo "$dir/my.cnf"
|
||||
fi
|
||||
}
|
||||
function mysql_set_adminargs() {
|
||||
local dir="$1" defaults
|
||||
adminargs=()
|
||||
if [ -f "$dir/my.cnf" ]; then
|
||||
array_add adminargs --defaults-file="$dir/my.cnf"
|
||||
setx defaults=mysql_get_defaults
|
||||
if [ -f "$defaults" ]; then
|
||||
array_add adminargs --defaults-file="$defaults"
|
||||
if [ -n "$admindefaults" ]; then
|
||||
array_add adminargs --defaults-extra-file="$admindefaults"
|
||||
fi
|
||||
|
@ -302,10 +325,11 @@ function mysql_set_adminargs() {
|
|||
[ ${#adminargs[*]} -gt 0 ] || array_add adminargs --default-character-set utf8
|
||||
}
|
||||
function mysql_set_userargs() {
|
||||
local dir="$1" dbname="$2"
|
||||
local dir="$1" dbname="$2" defaults
|
||||
userargs=()
|
||||
if [ -f "$dir/my.cnf" ]; then
|
||||
array_add userargs --defaults-file="$dir/my.cnf"
|
||||
setx defaults=mysql_get_defaults
|
||||
if [ -f "$defaults" ]; then
|
||||
array_add userargs --defaults-file="$defaults"
|
||||
if [ -n "$userdefaults" ]; then
|
||||
array_add userargs --defaults-extra-file="$userdefaults"
|
||||
elif [ -f "$dir/my-${dbname}.cnf" ]; then
|
||||
|
@ -573,10 +597,23 @@ function oracle_ensure_opdir() {
|
|||
>"$SQLMIGLOG"
|
||||
fi
|
||||
}
|
||||
function oracle_get_defaults() {
|
||||
local dir="$1"
|
||||
if [ -z "$profile" ]; then
|
||||
echo "$dir/ora.conf"
|
||||
elif [ -f "$dir/${profile}-ora.conf" ]; then
|
||||
echo "$dir/${profile}-ora.conf"
|
||||
elif [ -f "$PROFILEDIR/${profile}-ora.conf" ]; then
|
||||
echo "$PROFILEDIR/${profile}-ora.conf"
|
||||
else
|
||||
echo "$dir/ora.conf"
|
||||
fi
|
||||
}
|
||||
function oracle_source_adminconf() {
|
||||
local dir="$1"
|
||||
unset ORACLE_SID NLS_LANG ADMINCONNECT USERCONNECT SQLMIGLOG
|
||||
[ -f "$dir/ora.conf" ] && source "$dir/ora.conf"
|
||||
setx defaults=oracle_get_defaults
|
||||
[ -f "$defaults" ] && source "$defaults"
|
||||
[ -n "$admindefaults" ] && {
|
||||
source "$admindefaults" || die
|
||||
}
|
||||
|
@ -594,7 +631,8 @@ function oracle_source_adminconf() {
|
|||
function oracle_source_userconf() {
|
||||
local dir="$1" dbname="$2"
|
||||
unset ORACLE_SID NLS_LANG ADMINCONNECT USERCONNECT SQLMIGLOG
|
||||
[ -f "$dir/ora.conf" ] && source "$dir/ora.conf"
|
||||
setx defaults=oracle_get_defaults
|
||||
[ -f "$defaults" ] && source "$defaults"
|
||||
[ -f "$dir/ora-${dbname}.conf" ] && source "$dir/ora-${dbname}.conf"
|
||||
[ -n "$userdefaults" ] && {
|
||||
source "$userdefaults" || die
|
||||
|
@ -644,6 +682,10 @@ function oracle_user_update() {
|
|||
|
||||
################################################################################
|
||||
|
||||
MODE=auto
|
||||
PROFILEDIR=/etc/sqlmig
|
||||
set_defaults sqlmig
|
||||
|
||||
admindefaults=
|
||||
userdefaults=
|
||||
user=
|
||||
|
@ -655,6 +697,7 @@ socket=
|
|||
charset=
|
||||
oracle_sid=
|
||||
nls_lang=
|
||||
profile=
|
||||
type=auto
|
||||
action=update
|
||||
updatedir=
|
||||
|
@ -662,7 +705,7 @@ exportdir=
|
|||
dbdir=
|
||||
dbname=
|
||||
force=
|
||||
mode=auto
|
||||
mode="$MODE"
|
||||
drop=
|
||||
drop_only=
|
||||
create_only=
|
||||
|
@ -678,6 +721,9 @@ args=(
|
|||
--character-set: charset=
|
||||
-s:,--oracle-sid: oracle_sid=
|
||||
--nls-lang: nls_lang=
|
||||
--profile: profile=
|
||||
-P,--prod profile=prod
|
||||
-T,--test profile=test
|
||||
--mysql type=mysql
|
||||
--oracle type=oracle
|
||||
-0,--init action=init
|
||||
|
|
Loading…
Reference in New Issue