117 lines
3.9 KiB
Bash
Executable File
117 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
|
|
|
|
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."
|
|
}
|
|
|
|
source "$(dirname "$0")/ulib/ulib" &&
|
|
urequire DEFAULTS ||
|
|
exit 1
|
|
|
|
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"
|