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
 | 
						|
}
 |