# -*- 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 \"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 }