195 lines
6.8 KiB
Bash
195 lines
6.8 KiB
Bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
|
|
##@require instinc/prefixes
|
|
##@require instinc/wobase
|
|
##@require instinc/wofunctions
|
|
|
|
function get_default_configfile() {
|
|
# $1=resdir (woadir/Contents/Resources ou fwkdir/Resources)
|
|
local configs configfile
|
|
array_from_lines configs "$(list_files "$1" "*.config")"
|
|
if [ ${#configs[*]} -eq 0 ]; then
|
|
array_from_lines configs "$(list_files "$1" "config.xml")"
|
|
fi
|
|
echo "${configs:-Properties}"
|
|
}
|
|
|
|
|
|
function set_config_property() {
|
|
# Modifier la propriété $2 avec la valeur $3 du fichier de configuration par
|
|
# défaut de l'application $1. On peut préciser le nom du fichier de
|
|
# configuration à utiliser avec $4. Par défaut, il s'agit du premier fichier
|
|
# ayant l'extension .config. Il doit s'agir d'un fichier de propriétés java.
|
|
|
|
# si $2 vaut "-", $3 doit être de la forme "[configfile/]prop=value" ou
|
|
# ">configfile[:srcfile]"
|
|
|
|
local action=setprop
|
|
local bundir="$1" prop="$2" value="$3" configfile="$4"
|
|
local srvresdir="$APP_SRVRESDIR"
|
|
if is_wofwdir "$bundir"; then
|
|
srvresdir="$FW_SRVRESDIR"
|
|
fi
|
|
|
|
if [ "$prop" == "-" ]; then
|
|
if beginswith "$value" ">"; then
|
|
# choix d'un fichier de configuration par défaut
|
|
action=setconfigfile
|
|
configfile="${value#>}"
|
|
prop=
|
|
if [ "${configfile//:/}" != "$configfile" ]; then
|
|
# on a donné un fichier source
|
|
prop="copysrcfile"
|
|
value="${configfile##*:}"
|
|
configfile="${configfile%:*}"
|
|
fi
|
|
else
|
|
# modification de la valeur d'une propriété
|
|
prop="${value%%=*}"
|
|
if [ "${prop//\//}" != "$prop" ]; then
|
|
# on a donné le nom du fichier de propriété
|
|
configfile="${prop%/*}"
|
|
prop="${prop##*/}"
|
|
fi
|
|
value="${value#*=}"
|
|
fi
|
|
fi
|
|
if [ -z "$configfile" ]; then
|
|
if [ -n "$DEFAULT_CONFIGFILE" ]; then
|
|
configfile="$DEFAULT_CONFIGFILE"
|
|
else
|
|
configfile="$(get_default_configfile "$bundir/$srvresdir")"
|
|
fi
|
|
fi
|
|
|
|
if [ "$action" == "setprop" ]; then
|
|
dest="$configfile"
|
|
first_char_is "$dest" "/" || dest="$bundir/$srvresdir/$dest"
|
|
mkdirof "$dest"
|
|
file_set_properties -c "$dest" "$prop" "$value"
|
|
elif [ "$action" == "setconfigfile" ]; then
|
|
if [ "$prop" == "copysrcfile" ]; then
|
|
src="$value"
|
|
dest="$configfile"
|
|
# chemin absolus
|
|
first_char_is "$src" "/" || src="$bundir/$srvresdir/$src"
|
|
first_char_is "$dest" "/" || dest="$bundir/$srvresdir/$dest"
|
|
mkdirof "$dest"
|
|
/bin/cp -f "$src" "$dest"
|
|
fi
|
|
DEFAULT_CONFIGFILE="$configfile"
|
|
fi
|
|
}
|
|
|
|
function set_eomodel_property() {
|
|
:
|
|
}
|
|
|
|
function woconf_display_help() {
|
|
echo "$scriptname: vérifier et modifier la configuration d'une application
|
|
ou d'un framework
|
|
|
|
USAGE
|
|
$scriptname <fw.framework|app.woa> \"conf_cmds\"
|
|
|
|
Les lignes de configuration peuvent être:
|
|
#commentaire -- un commentaire (ignoré)
|
|
v[erify] -- vérifier et corriger la consistance.
|
|
Cette action est faite automatiquement sauf
|
|
avec l'option --noverify.
|
|
c>configfile -- changer le fichier de configuration par
|
|
défaut
|
|
c>configfile:srcfile -- copier le fichier de configuration srcfile
|
|
sur configfile et choisir ce fichier comme
|
|
fichier de configuration par défaut
|
|
c[configfile/]prop=value -- modifier une propriété du fichier de
|
|
configuration.
|
|
=== les options suivantes ne sont pas encore implémentées =================
|
|
eprofile:user:password -- configurer l'eomodel par défaut selon le
|
|
profil
|
|
ehost:port:instance:user:passwd
|
|
-- configurer l'eomodel par défaut avec les
|
|
valeurs données
|
|
Ename.eomodeld:profile:user:password
|
|
-- configurer l'eomodel donné selon le profil
|
|
Ename.eomodeld:host:port:instance:user:password
|
|
-- configurer l'eomodel donné avec les valeurs
|
|
données
|
|
Les lignes de configuration suivantes sont spécifiques aux application (.woa)
|
|
aMyFramework[.framework] -- ajouter un framework
|
|
rMyFramework[.framework] -- enlever un framework
|
|
sbefore:after -- faire un recherche/remplacement
|
|
f[ix_case] -- corriger la casse du classpath selon les
|
|
frameworks installés"
|
|
}
|
|
|
|
function woconf() {
|
|
local noverify=
|
|
|
|
local end_of_options
|
|
##@include sysinc/begingetopt
|
|
-h|--help)
|
|
woconf_display_help
|
|
exit 0
|
|
;;
|
|
--no-verify)
|
|
# ne pas effectuer automatiquement la vérification du bundle
|
|
noverify=1
|
|
;;
|
|
##@include sysinc/endgetopt
|
|
|
|
local tagdir="$1" srcdir bundir
|
|
|
|
if [ -z "$tagdir" ]; then
|
|
die "Il faut spécifier l'application ou le framework à modifier"
|
|
fi
|
|
tagdir="$(abspath "$1")"
|
|
|
|
if is_wosrcdir "$tagdir"; then
|
|
srcdir="$tagdir"
|
|
set_wobindir "$srcdir" bundir desc
|
|
|
|
elif is_woappdir "$tagdir"; then
|
|
bundir="$tagdir"
|
|
|
|
elif is_wofwdir "$tagdir"; then
|
|
bundir="$tagdir"
|
|
|
|
else
|
|
die "Le bundle doit être un framework ou une application"
|
|
fi
|
|
|
|
[ -w "$bundir" ] || die "Répertoire de bundle non accessible en écriture."
|
|
|
|
bundir="${bundir%/}"
|
|
if [ -z "$noverify" ]; then
|
|
verifix_bundle "$bundir"
|
|
fi
|
|
|
|
array_from_lines conf_cmds "$2"
|
|
for conf_cmd in "${conf_cmds[@]}"; do
|
|
action="$(first_char "$conf_cmd")"
|
|
option="$(last_chars "$conf_cmd")"
|
|
if [ "$action" == "#" ]; then
|
|
: # commentaire ignoré
|
|
elif [ "$action" == "v" ]; then
|
|
verifix_bundle "$bundir"
|
|
elif [ "$action" == "c" ]; then
|
|
set_config_property "$bundir" - "$option"
|
|
elif [ "$action" == "e" ]; then
|
|
set_eomodel_property "$bundir" - "$option"
|
|
elif [ "$action" == "a" ]; then
|
|
add_framework "$bundir" "$option"
|
|
elif [ "$action" == "r" ]; then
|
|
remove_framework "$bundir" "$option"
|
|
elif [ "$action" == "s" ]; then
|
|
search="${option%%:*}"
|
|
replace="${option#*:}"
|
|
searchreplace_classpath "$bundir" "$search" "$replace"
|
|
elif [ "$action" == "f" ]; then
|
|
fix_jars_case "$bundir"
|
|
else
|
|
eerror "Commande inconnue: $action"
|
|
fi
|
|
done
|
|
}
|