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