115 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
 | 
						|
source "$(dirname "$0")/lib/ulib/ulib" || exit 1
 | 
						|
urequire DEFAULTS
 | 
						|
 | 
						|
function display_help() {
 | 
						|
    uecho "$scriptname: Changer la version de WebObjects pour le système en cours
 | 
						|
USAGE
 | 
						|
    $scriptname [-f from.files] to-archive.tar.gz
 | 
						|
 | 
						|
OPTIONS
 | 
						|
    -f from.files
 | 
						|
        Spécifier la liste des fichiers pour la version de WebObjects
 | 
						|
        installée. Par défaut, il s'agit de WebObjects-<version>.files
 | 
						|
        La liste doit correspondre à la version en cours.
 | 
						|
 | 
						|
    -F  Forcer l'installation, même si la version en cours ne correspond pas à ce
 | 
						|
        qui est inscrit dans from.files
 | 
						|
 | 
						|
    to-archive.tar.gz
 | 
						|
        Nom de l'archive qui contient la version à installer.
 | 
						|
 | 
						|
Ce script ne fonctionne que sur MacOS X
 | 
						|
Le contenu des répertoires suivants est sauvegardé avant le changement:
 | 
						|
    /Library/WebObject/Applications
 | 
						|
    /Library/WebObject/Configuration
 | 
						|
    /Library/WebObject/Extensions
 | 
						|
Ensuite, les répertoires Applications et Configuration sont restaurés. Il faudra
 | 
						|
restaurer Extensions manuellement."
 | 
						|
}
 | 
						|
 | 
						|
nocheck=
 | 
						|
from=
 | 
						|
to=
 | 
						|
parse_opts "${PRETTYOPTS[@]}" \
 | 
						|
    --help '$exit_with display_help' \
 | 
						|
    -f: from= \
 | 
						|
    -F nocheck=1 \
 | 
						|
    @ args -- "$@" && set -- "${args[@]}" || die "$args"
 | 
						|
 | 
						|
check_sysinfos -s macosx || die "Ce script est fait uniquement pour MacOS X"
 | 
						|
run_as_root -f "$from" ${nocheck:+-F} "$@"
 | 
						|
 | 
						|
version="$(grep -A 1 CFBundleShortVersionString /System/Library/Frameworks/JavaWebObjects.framework/Resources/version.plist | tail -1 | sed 's/^.*<string>\(.*\)<\/string>.*$/\1/')"
 | 
						|
 | 
						|
[ -z "$from" ] && from="WebObjects-$version.files"
 | 
						|
[ -f "$from" ] || die "$from: Fichier inexistant"
 | 
						|
 | 
						|
if [ -z "$nocheck" ]; then
 | 
						|
    fromversion="$(grep '^# version=' "$from")"
 | 
						|
    fromversion="${fromversion#\# version=}"
 | 
						|
    [ "$version" == "$fromversion" ] || die "$from ne correspond pas à la version installée"
 | 
						|
fi
 | 
						|
 | 
						|
to="$1"
 | 
						|
[ -n "$to" ] || die "Il faut spécifier l'archive de la nouvelle version de WebObjects"
 | 
						|
[ -f "$to" ] || die "$to: Fichier inexistant"
 | 
						|
 | 
						|
etitle "Arrêt de wotaskd et du moniteur"
 | 
						|
launchctl unload -w /System/Library/LaunchDaemons/com.apple.womonitor.plist
 | 
						|
launchctl unload -w /System/Library/LaunchDaemons/com.apple.wotaskd.plist
 | 
						|
eend
 | 
						|
 | 
						|
[ "${version#5.4}" != "$version" ] && from54=1 || from54=
 | 
						|
toVersion="${to#WebObjects-}"; toVersion="${to%.tar.gz}"
 | 
						|
[ "${toVersion#5.3}" != "$toVersion" ] && to53=1 || to53=
 | 
						|
ADAPTOR=
 | 
						|
if [ -n "$from54" -a -n "$to53" ]; then
 | 
						|
    ac_set_tmpfile ADAPTOR
 | 
						|
    etitle "Copie de l'adaptor pour Apache 2.2" \
 | 
						|
        tar czf "$ADAPTOR" -C /System/Library/WebObjects/Adaptors Apache2.2
 | 
						|
fi
 | 
						|
ac_set_tmpfile APPCONF
 | 
						|
etitle "Sauvegarde de /Library/WebObjects/{Applications,Configuration}" \
 | 
						|
    tar czf "$APPCONF" -C /Library/WebObjects Applications Configuration
 | 
						|
EXTENSIONS="$HOME/Library-WebObjects-Extensions.tar.gz"
 | 
						|
etitle "Sauvegarde de /Library/WebObjects/Extensions" \
 | 
						|
    tar czf "$EXTENSIONS" -C /Library/WebObjects Extensions
 | 
						|
 | 
						|
etitle "Suppression de WebObjects $version"
 | 
						|
array_from_lines sources "$(grep -v '^#' <"$from")"
 | 
						|
for source in "${sources[@]}"; do
 | 
						|
    ebegin "$source"
 | 
						|
    rm -rf "$source" &
 | 
						|
    ewait $!
 | 
						|
    eend
 | 
						|
done
 | 
						|
eend
 | 
						|
 | 
						|
etitle "Installation de la nouvelle version" \
 | 
						|
    tar xpzf "$to" -C /
 | 
						|
 | 
						|
if [ -n "$ADAPTOR" ]; then
 | 
						|
    etitle "Restauration de l'adaptor pour Apache 2.2" \
 | 
						|
        tar xpzf "$ADAPTOR" -C /System/Library/WebObjects/Adaptors
 | 
						|
fi
 | 
						|
etitle "Restauration de /Library/WebObjects/{Applications,Configuration}" \
 | 
						|
    tar xpzf "$APPCONF" -C /Library/WebObjects
 | 
						|
 | 
						|
eimportant "\
 | 
						|
Les fichiers de /Library/WebObjects/Extensions se trouvent dans l'archive
 | 
						|
 | 
						|
    $(ppath "$EXTENSIONS")
 | 
						|
 | 
						|
Veuillez restaurer les jars utiles aux applications installées."
 | 
						|
 | 
						|
enote "\
 | 
						|
Vous pourrez ensuite relancer wotaskd et le moniteur avec les commandes
 | 
						|
suivantes:
 | 
						|
 | 
						|
# launchctl load -w /System/Library/LaunchDaemons/com.apple.wotaskd.plist &&
 | 
						|
launchctl load -w /System/Library/LaunchDaemons/com.apple.womonitor.plist
 | 
						|
 | 
						|
Attention! ne pas utiliser sudo mais le faire avec le compte root"
 |