|
Packit |
6d14d2 |
#!/bin/bash
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
# install.sh - Set up user environment for a XML/XSLT distribution
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
# This is as an interactive installer for updating your
|
|
Packit |
6d14d2 |
# environment to use an XML/XSLT distribution such as the DocBook
|
|
Packit |
6d14d2 |
# XSL Stylesheets. Its main purpose is to configure your
|
|
Packit |
6d14d2 |
# environment with XML catalog data and schema "locating rules"
|
|
Packit |
6d14d2 |
# data provided in the XML/XSLT distribution.
|
|
Packit |
6d14d2 |
#
|
|
Packit |
6d14d2 |
# Although this installer was created for the DocBook project, it
|
|
Packit |
6d14d2 |
# is a general-purpose tool that can be used with any XML/XSLT
|
|
Packit |
6d14d2 |
# distribution that provides XML/SGML catalogs and locating rules.
|
|
Packit |
6d14d2 |
#
|
|
Packit |
6d14d2 |
# This script is mainly intended to make things easier for you if
|
|
Packit |
6d14d2 |
# you want to install a particular XML/XSLT distribution that has
|
|
Packit |
6d14d2 |
# not (yet) been packaged for your OS distro (Debian, Fedora,
|
|
Packit |
6d14d2 |
# whatever), or to use "snapshot" or development releases
|
|
Packit |
6d14d2 |
#
|
|
Packit |
6d14d2 |
# It works by updating your shell startup file (e.g., .bashrc and
|
|
Packit |
6d14d2 |
# .cshrc) and .emacs file and by finding or creating a writable
|
|
Packit |
6d14d2 |
# CatalogManager.properties file to update.
|
|
Packit |
6d14d2 |
#
|
|
Packit |
6d14d2 |
# It makes backup copies of any files it touches, and also
|
|
Packit |
6d14d2 |
# generates a uninstall.sh script for reverting its changes.
|
|
Packit |
6d14d2 |
#
|
|
Packit |
6d14d2 |
# In the same directory where it is located, it expects to find
|
|
Packit |
6d14d2 |
# the following four files:
|
|
Packit |
6d14d2 |
# - locatingrules.xml
|
|
Packit |
6d14d2 |
# - catalog.xml
|
|
Packit |
6d14d2 |
# - catalog
|
|
Packit |
6d14d2 |
# - .urilist
|
|
Packit |
6d14d2 |
# And if it's unable to locate a CatalogManager.properties file in
|
|
Packit |
6d14d2 |
# your environment, it expects to find an "example" one in the
|
|
Packit |
6d14d2 |
# same directory as itself, which it copies over to your
|
|
Packit |
6d14d2 |
# ~/.resolver directory.
|
|
Packit |
6d14d2 |
#
|
|
Packit |
6d14d2 |
# If the distribution contains any executables, change the value
|
|
Packit |
6d14d2 |
# of the thisBinDir to a colon-separated list of the pathnames of
|
|
Packit |
6d14d2 |
# the directories that contain those executables.
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
# mydir is the "canonical" absolute pathname for install.sh
|
|
Packit |
6d14d2 |
mydir=$(cd -P $(dirname $0) && pwd -P) || exit 1
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
thisLocatingRules=$mydir/locatingrules.xml
|
|
Packit |
6d14d2 |
thisXmlCatalog=$mydir/catalog.xml
|
|
Packit |
6d14d2 |
thisSgmlCatalog=$mydir/catalog
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
# .urilist file contains a list of pairs of local pathnames and
|
|
Packit |
6d14d2 |
# URIs to test for catalog resolution
|
|
Packit |
6d14d2 |
thisUriList=$mydir/.urilist
|
|
Packit |
6d14d2 |
exampleCatalogManager=$mydir/.CatalogManager.properties.example
|
|
Packit |
6d14d2 |
thisCatalogManager=$HOME/.resolver/CatalogManager.properties
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
# thisBinDir directory is a colon-separated list of the pathnames
|
|
Packit |
6d14d2 |
# to all directories that contain executables provided with the
|
|
Packit |
6d14d2 |
# distribution (for example, the DocBook XSL Stylesheets
|
|
Packit |
6d14d2 |
# distribution contains a "docbook-xsl-update" convenience script
|
|
Packit |
6d14d2 |
# for rsync'ing up to the latest docbook-xsl snapshot). The
|
|
Packit |
6d14d2 |
# install.sh script adds the value of thisBinDir to your PATH
|
|
Packit |
6d14d2 |
# environment variable
|
|
Packit |
6d14d2 |
thisBinDir=$mydir/tools/bin
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
emit_message() {
|
|
Packit |
6d14d2 |
echo "$1" 1>&2
|
|
Packit |
6d14d2 |
}
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
if [ ! "${*#--batch}" = "$*" ]; then
|
|
Packit |
6d14d2 |
batchmode="Yes";
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
batchmode="No";
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
if [ ! "$1" = "--test" ]; then
|
|
Packit |
6d14d2 |
emit_message "NOTE: For non-interactive installs/uninstalls, use --batch"
|
|
Packit |
6d14d2 |
if [ ! "$1" = "--uninstall" ]; then
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
osName="Unidentified"
|
|
Packit |
6d14d2 |
if uname -s | grep -qi "cygwin"; then
|
|
Packit |
6d14d2 |
osName="Cygwin"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
classPathSeparator=":"
|
|
Packit |
6d14d2 |
if [ "$osName" = "Cygwin" ]; then
|
|
Packit |
6d14d2 |
thisJavaXmlCatalog=$(cygpath -m $thisXmlCatalog)
|
|
Packit |
6d14d2 |
classPathSeparator=";"
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
thisJavaXmlCatalog=$thisXmlCatalog
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
main() {
|
|
Packit |
6d14d2 |
removeOldFiles
|
|
Packit |
6d14d2 |
checkRoot
|
|
Packit |
6d14d2 |
updateCatalogManager
|
|
Packit |
6d14d2 |
checkForResolver
|
|
Packit |
6d14d2 |
writeDotFiles
|
|
Packit |
6d14d2 |
updateUserStartupFiles
|
|
Packit |
6d14d2 |
updateUserDotEmacs
|
|
Packit |
6d14d2 |
writeUninstallFile
|
|
Packit |
6d14d2 |
writeTestFile
|
|
Packit |
6d14d2 |
printExitMessage
|
|
Packit |
6d14d2 |
}
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
removeOldFiles() {
|
|
Packit |
6d14d2 |
rm -f $mydir/.profile.incl
|
|
Packit |
6d14d2 |
rm -f $mydir/.cshrc.incl
|
|
Packit |
6d14d2 |
rm -f $mydir/.emacs.el
|
|
Packit |
6d14d2 |
}
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
checkRoot() {
|
|
Packit |
6d14d2 |
if [ $(id -u) == "0" ]; then
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
WARNING: This install script is meant to be run as a non-root
|
|
Packit |
6d14d2 |
user, but you are running it as root.
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
read -s -n1 -p "Are you sure you want to continue? [No] "
|
|
Packit |
6d14d2 |
emit_message "$REPLY"
|
|
Packit |
6d14d2 |
case $REPLY in
|
|
Packit |
6d14d2 |
[yY])
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
*) emit_message "OK, exiting without making changes."
|
|
Packit |
6d14d2 |
exit
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
esac
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
return 0
|
|
Packit |
6d14d2 |
}
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
updateCatalogManager() {
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
# - finds or creates a writable CatalogManager.properties file
|
|
Packit |
6d14d2 |
#
|
|
Packit |
6d14d2 |
# - adds the catalog.xml file for this distribution to the
|
|
Packit |
6d14d2 |
# CatalogManager.properties file found
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
if [ -z "$CLASSPATH" ]; then
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
NOTE: There is no CLASSPATH variable set in your environment.
|
|
Packit |
6d14d2 |
No attempt was made to find a CatalogManager.properties
|
|
Packit |
6d14d2 |
file. Using $thisCatalogManager instead
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
# split CLASSPATH in a list of pathnames by replacing all separator
|
|
Packit |
6d14d2 |
# characters with spaces
|
|
Packit |
6d14d2 |
if [ "$osName" = "Cygwin" ]; then
|
|
Packit |
6d14d2 |
pathnames=$(echo $CLASSPATH | tr ";" " ")
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
pathnames=$(echo $CLASSPATH | tr ":" " ")
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
for path in $pathnames; do
|
|
Packit |
6d14d2 |
if [ "$osName" = "Cygwin" ]; then
|
|
Packit |
6d14d2 |
path=$(cygpath -u $path)
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
# strip out trailing slash from pathname
|
|
Packit |
6d14d2 |
path=$(echo $path | sed 's/\/$//')
|
|
Packit |
6d14d2 |
# find CatalogManager.properties file
|
|
Packit |
6d14d2 |
if [ -f $path/CatalogManager.properties ];
|
|
Packit |
6d14d2 |
then
|
|
Packit |
6d14d2 |
existingCatalogManager=$path/CatalogManager.properties
|
|
Packit |
6d14d2 |
break
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
done
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
# end of CLASSPATH check
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
if [ -w "$existingCatalogManager" ]; then
|
|
Packit |
6d14d2 |
# existing CatalogManager.properties was found and it is
|
|
Packit |
6d14d2 |
# writable, so use it
|
|
Packit |
6d14d2 |
myCatalogManager=$existingCatalogManager
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
if [ -f "$existingCatalogManager" ]; then
|
|
Packit |
6d14d2 |
# a non-writable CatalogManager.properties exists, so emit a
|
|
Packit |
6d14d2 |
# note saying that it won't be used
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
NOTE: $existingCatalogManager file found,
|
|
Packit |
6d14d2 |
but you don't have permission to write to it.
|
|
Packit |
6d14d2 |
Will instead use:
|
|
Packit |
6d14d2 |
$thisCatalogManager
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
# CLASSPATH is set, but no CatalogManager.properties found
|
|
Packit |
6d14d2 |
if [ -n "$CLASSPATH" ]; then
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
NOTE: No CatalogManager.properties found from CLASSPATH.
|
|
Packit |
6d14d2 |
Will instead use:
|
|
Packit |
6d14d2 |
$thisCatalogManager
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
if [ "$batchmode" = "Yes" ]; then
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
# end of check for existing writable CatalogManager.properties
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
if [ -f $thisCatalogManager ]; then
|
|
Packit |
6d14d2 |
myCatalogManager=$thisCatalogManager
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
REPLY=""
|
|
Packit |
6d14d2 |
if [ ! "$batchmode" = "Yes" ]; then
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
read -s -n1 -p "Create $thisCatalogManager file? [Yes] "
|
|
Packit |
6d14d2 |
emit_message "$REPLY"
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
case $REPLY in
|
|
Packit |
6d14d2 |
[nNqQ])
|
|
Packit |
6d14d2 |
emitNoChangeMsg
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
*)
|
|
Packit |
6d14d2 |
if [ ! -d "${thisCatalogManager%/*}" ]; then
|
|
Packit |
6d14d2 |
mkdir -p ${thisCatalogManager%/*}
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
cp $mydir/.CatalogManager.properties.example $thisCatalogManager || exit 1
|
|
Packit |
6d14d2 |
emit_message "NOTE: Created the following file:"
|
|
Packit |
6d14d2 |
emit_message " $thisCatalogManager"
|
|
Packit |
6d14d2 |
myCatalogManager=$thisCatalogManager
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
esac
|
|
Packit |
6d14d2 |
# end of creating "private" CatalogManager.properties
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
# end of check for "private" CatalogManager.properties
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
# end of check finding/creating writable CatalogManager.properties
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
if [ -n "$myCatalogManager" ]; then
|
|
Packit |
6d14d2 |
etcXmlCatalog=
|
|
Packit |
6d14d2 |
catalogsLine=$(grep "^catalogs=" $myCatalogManager)
|
|
Packit |
6d14d2 |
if [ -f /etc/xml/catalog ] && [ "$osName" != "Cygwin" ] \
|
|
Packit |
6d14d2 |
&& [ "${catalogsLine#*/etc/xml/catalog*}" = "$catalogsLine" ]; then
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
WARNING: /etc/xml/catalog exists but was not found in:
|
|
Packit |
6d14d2 |
$myCatalogManager
|
|
Packit |
6d14d2 |
If /etc/xml/catalog file has content, you probably
|
|
Packit |
6d14d2 |
should reference it in:
|
|
Packit |
6d14d2 |
$myCatalogManager
|
|
Packit |
6d14d2 |
This installer can automatically add it for you,
|
|
Packit |
6d14d2 |
but BE WARNED that once it has been added, the
|
|
Packit |
6d14d2 |
uninstaller for this distribution CANNOT REMOVE IT
|
|
Packit |
6d14d2 |
automatically during uninstall. If you no longer want
|
|
Packit |
6d14d2 |
it included, you will need to remove it manually.
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
REPLY=""
|
|
Packit |
6d14d2 |
if [ ! "$batchmode" = "Yes" ]; then
|
|
Packit |
6d14d2 |
read -s -n1 -p "Add /etc/xml/catalog to $myCatalogManager? [Yes] "
|
|
Packit |
6d14d2 |
emit_message "$REPLY"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
case $REPLY in
|
|
Packit |
6d14d2 |
[nNqQ])
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
*)
|
|
Packit |
6d14d2 |
etcXmlCatalog=/etc/xml/catalog
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
esac
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
catalogBackup="$myCatalogManager.$$.bak"
|
|
Packit |
6d14d2 |
if [ ! -w "${myCatalogManager%/*}" ]; then
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
emit_message "WARNING: ${myCatalogManager%/*} directory is not writable."
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
emitNoChangeMsg
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
REPLY=""
|
|
Packit |
6d14d2 |
if [ ! "$batchmode" = "Yes" ]; then
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
emit_message "Add $thisJavaXmlCatalog"
|
|
Packit |
6d14d2 |
read -s -n1 -p "to $myCatalogManager file? [Yes] "
|
|
Packit |
6d14d2 |
emit_message "$REPLY"
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
case $REPLY in
|
|
Packit |
6d14d2 |
[nNqQ])
|
|
Packit |
6d14d2 |
emitNoChangeMsg
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
*)
|
|
Packit |
6d14d2 |
if [ "$catalogsLine" ] ; then
|
|
Packit |
6d14d2 |
if [ "${catalogsLine#*$thisJavaXmlCatalog*}" != "$catalogsLine" ]; then
|
|
Packit |
6d14d2 |
emit_message "NOTE: $thisJavaXmlCatalog"
|
|
Packit |
6d14d2 |
emit_message " already in:"
|
|
Packit |
6d14d2 |
emit_message " $myCatalogManager"
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
mv $myCatalogManager $catalogBackup || exit 1
|
|
Packit |
6d14d2 |
sed "s#^catalogs=\(.*\)\$#catalogs=$thisJavaXmlCatalog;\1;$etcXmlCatalog#" $catalogBackup \
|
|
Packit |
6d14d2 |
| sed 's/;\+/;/' | sed 's/;$//' > $myCatalogManager || exit 1
|
|
Packit |
6d14d2 |
emit_message "NOTE: Successfully updated the following file:"
|
|
Packit |
6d14d2 |
emit_message " $myCatalogManager"
|
|
Packit |
6d14d2 |
emit_message " Backup written to:"
|
|
Packit |
6d14d2 |
emit_message " $catalogBackup"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
mv $myCatalogManager $catalogBackup || exit 1
|
|
Packit |
6d14d2 |
cp $catalogBackup $myCatalogManager
|
|
Packit |
6d14d2 |
echo "catalogs=$thisJavaXmlCatalog;$etcXmlCatalog" \
|
|
Packit |
6d14d2 |
| sed 's/;\+/;/' | sed 's/;$//' >> $myCatalogManager || exit 1
|
|
Packit |
6d14d2 |
emit_message "NOTE: \"catalogs=\" line added to $myCatalogManager."
|
|
Packit |
6d14d2 |
emit_message " Backup written to $catalogBackup"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
esac
|
|
Packit |
6d14d2 |
# end of backing up and updating CatalogManager.properties
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
# end of CatalogManager.properties updates
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
if [ "$osName" = "Cygwin" ]; then
|
|
Packit |
6d14d2 |
myCatalogManager=$(cygpath -m $myCatalogManager)
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
return 0
|
|
Packit |
6d14d2 |
}
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
writeDotFiles() {
|
|
Packit |
6d14d2 |
while read; do
|
|
Packit |
6d14d2 |
echo "$REPLY" >> $mydir/.profile.incl
|
|
Packit |
6d14d2 |
done <
|
|
Packit |
6d14d2 |
# $thisBinDir is not in PATH, so add it
|
|
Packit |
6d14d2 |
if [ "\${PATH#*$thisBinDir*}" = "\$PATH" ]; then
|
|
Packit |
6d14d2 |
PATH="$thisBinDir:\$PATH"
|
|
Packit |
6d14d2 |
export PATH
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
if [ -z "\$XML_CATALOG_FILES" ]; then
|
|
Packit |
6d14d2 |
XML_CATALOG_FILES="$thisXmlCatalog"
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
# $thisXmlCatalog is not in XML_CATALOG_FILES, so add it
|
|
Packit |
6d14d2 |
if [ "\${XML_CATALOG_FILES#*$thisXmlCatalog*}" = "\$XML_CATALOG_FILES" ]; then
|
|
Packit |
6d14d2 |
XML_CATALOG_FILES="$thisXmlCatalog \$XML_CATALOG_FILES"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
# /etc/xml/catalog exists but is not in XML_CATALOG_FILES, so add it
|
|
Packit |
6d14d2 |
if [ -f /etc/xml/catalog ] && \
|
|
Packit |
6d14d2 |
[ "\${XML_CATALOG_FILES#*/etc/xml/catalog*}" = "\$XML_CATALOG_FILES" ]; then
|
|
Packit |
6d14d2 |
XML_CATALOG_FILES="\$XML_CATALOG_FILES /etc/xml/catalog"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
export XML_CATALOG_FILES
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
if [ -z "\$SGML_CATALOG_FILES" ]; then
|
|
Packit |
6d14d2 |
SGML_CATALOG_FILES="$thisSgmlCatalog"
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
# $thisSgmlCatalog is not in SGML_CATALOG_FILES, so add it
|
|
Packit |
6d14d2 |
if [ "\${SGML_CATALOG_FILES#*$thisSgmlCatalog}" = "\$SGML_CATALOG_FILES" ]; then
|
|
Packit |
6d14d2 |
SGML_CATALOG_FILES="$thisSgmlCatalog:\$SGML_CATALOG_FILES"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
# /etc/sgml/catalog exists but is not in SGML_CATALOG_FILES, so add it
|
|
Packit |
6d14d2 |
if [ -f /etc/sgml/catalog ] && \
|
|
Packit |
6d14d2 |
[ "\${SGML_CATALOG_FILES#*/etc/sgml/catalog*}" = "\$SGML_CATALOG_FILES" ]; then
|
|
Packit |
6d14d2 |
SGML_CATALOG_FILES="\$SGML_CATALOG_FILES:/etc/sgml/catalog"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
export SGML_CATALOG_FILES
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
while read; do
|
|
Packit |
6d14d2 |
echo "$REPLY" >> $mydir/.cshrc.incl
|
|
Packit |
6d14d2 |
done <
|
|
Packit |
6d14d2 |
# $thisBinDir is not in PATH, so add it
|
|
Packit |
6d14d2 |
if ( "\\\`echo \$PATH | grep -v $thisBinDir\\\`" != "" ) then
|
|
Packit |
6d14d2 |
setenv PATH "$thisBinDir:\$PATH"
|
|
Packit |
6d14d2 |
endif
|
|
Packit |
6d14d2 |
if ( ! $\?XML_CATALOG_FILES ) then
|
|
Packit |
6d14d2 |
setenv XML_CATALOG_FILES "$thisXmlCatalog"
|
|
Packit |
6d14d2 |
# $thisXmlCatalog is not in XML_CATALOG_FILES, so add it
|
|
Packit |
6d14d2 |
else if ( "\\\`echo \$XML_CATALOG_FILES | grep -v $thisXmlCatalog\\\`" != "" ) then
|
|
Packit |
6d14d2 |
setenv XML_CATALOG_FILES "$thisXmlCatalog \$XML_CATALOG_FILES"
|
|
Packit |
6d14d2 |
endif
|
|
Packit |
6d14d2 |
endif
|
|
Packit |
6d14d2 |
# /etc/xml/catalog exists but is not in XML_CATALOG_FILES, so add it
|
|
Packit |
6d14d2 |
if ( -f /etc/xml/catalog && "\\\`echo \$XML_CATALOG_FILES | grep -v /etc/xml/catalog\\\`" != "" ) then
|
|
Packit |
6d14d2 |
setenv XML_CATALOG_FILES "\$XML_CATALOG_FILES /etc/xml/catalog"
|
|
Packit |
6d14d2 |
endif
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
endif
|
|
Packit |
6d14d2 |
if ( ! $\?SGML_CATALOG_FILES ) then
|
|
Packit |
6d14d2 |
setenv SGML_CATALOG_FILES "$thisSgmlCatalog"
|
|
Packit |
6d14d2 |
else if ( "\\\`echo \$SGML_CATALOG_FILES | grep -v $thisSgmlCatalog\\\`" != "" ) then
|
|
Packit |
6d14d2 |
setenv SGML_CATALOG_FILES "$thisSgmlCatalog:\$SGML_CATALOG_FILES"
|
|
Packit |
6d14d2 |
endif
|
|
Packit |
6d14d2 |
endif
|
|
Packit |
6d14d2 |
# /etc/SGML/catalog exists but is not in SGML_CATALOG_FILES, so add it
|
|
Packit |
6d14d2 |
if ( -f /etc/sgml/catalog && "\\\`echo \$SGML_CATALOG_FILES | grep -v /etc/sgml/catalog\\\`" != "" ) then
|
|
Packit |
6d14d2 |
setenv SGML_CATALOG_FILES {\$SGML_CATALOG_FILES}:/etc/sgml/catalog
|
|
Packit |
6d14d2 |
endif
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
if [ -n "$myCatalogManager" ]; then
|
|
Packit |
6d14d2 |
myCatalogManagerDir=${myCatalogManager%/*}
|
|
Packit |
6d14d2 |
while read; do
|
|
Packit |
6d14d2 |
echo "$REPLY" >> $mydir/.profile.incl
|
|
Packit |
6d14d2 |
done <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
if [ -z "\$CLASSPATH" ]; then
|
|
Packit |
6d14d2 |
CLASSPATH="$myCatalogManagerDir"
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
# $myCatalogManagerDir is not in CLASSPATH, so add it
|
|
Packit |
6d14d2 |
if [ "\${CLASSPATH#*$myCatalogManagerDir*}" = "\$CLASSPATH" ]; then
|
|
Packit |
6d14d2 |
CLASSPATH="$myCatalogManagerDir$classPathSeparator\$CLASSPATH"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
export CLASSPATH
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
while read; do
|
|
Packit |
6d14d2 |
echo "$REPLY" >> $mydir/.cshrc.incl
|
|
Packit |
6d14d2 |
done <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
if ( ! $\?CLASSPATH ) then
|
|
Packit |
6d14d2 |
setenv CLASSPATH "$myCatalogManagerDir"
|
|
Packit |
6d14d2 |
# $myCatalogManagerDir is not in CLASSPATH, so add it
|
|
Packit |
6d14d2 |
else if ( "\\\`echo \$CLASSPATH | grep -v $myCatalogManagerDir\\\`" != "" ) then
|
|
Packit |
6d14d2 |
setenv CLASSPATH "$myCatalogManagerDir$classPathSeparator\$CLASSPATH"
|
|
Packit |
6d14d2 |
endif
|
|
Packit |
6d14d2 |
endif
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
while read; do
|
|
Packit |
6d14d2 |
echo "$REPLY" >> $mydir/.emacs.el
|
|
Packit |
6d14d2 |
done <
|
|
Packit |
6d14d2 |
(add-hook
|
|
Packit |
6d14d2 |
'nxml-mode-hook
|
|
Packit |
6d14d2 |
(lambda ()
|
|
Packit |
6d14d2 |
(setq rng-schema-locating-files-default
|
|
Packit |
6d14d2 |
(append '("$thisLocatingRules")
|
|
Packit |
6d14d2 |
rng-schema-locating-files-default ))))
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
return 0
|
|
Packit |
6d14d2 |
}
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
updateUserStartupFiles() {
|
|
Packit |
6d14d2 |
if [ ! "$batchmode" = "Yes" ]; then
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
NOTE: To source your environment correctly for using the catalog
|
|
Packit |
6d14d2 |
files in this distribution, you need to update one or more
|
|
Packit |
6d14d2 |
of your shell startup files. This installer can
|
|
Packit |
6d14d2 |
automatically make the necessary changes. Or, if you prefer,
|
|
Packit |
6d14d2 |
you can make the changes manually.
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
# if running csh or tcsh, target .cshrc and .tcshrc files for
|
|
Packit |
6d14d2 |
# update; otherwise, target .bash_* and .profiles
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
parent=$(ps -p $PPID | grep "/")
|
|
Packit |
6d14d2 |
if [ "${parent#*csh}" != "$parent" ] || [ "${parent#*tcsh}" != "$parent" ]; then
|
|
Packit |
6d14d2 |
myStartupFiles=".cshrc .tcshrc"
|
|
Packit |
6d14d2 |
appendLine="source $mydir/.cshrc.incl"
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
myStartupFiles=".bash_profile .bash_login .profile .bashrc"
|
|
Packit |
6d14d2 |
appendLine=". $mydir/.profile.incl"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
for file in $myStartupFiles; do
|
|
Packit |
6d14d2 |
if [ -f "$HOME/$file" ]; then
|
|
Packit |
6d14d2 |
dotFileBackup=$HOME/$file.$$.bak
|
|
Packit |
6d14d2 |
REPLY=""
|
|
Packit |
6d14d2 |
if [ ! "$batchmode" = "Yes" ]; then
|
|
Packit |
6d14d2 |
read -s -n1 -p "Update $HOME/$file? [Yes] "
|
|
Packit |
6d14d2 |
emit_message "$REPLY"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
case $REPLY in
|
|
Packit |
6d14d2 |
[nNqQ])
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
NOTE: No change made to $HOME/$file. You either need
|
|
Packit |
6d14d2 |
to add the following line to it, or manually source
|
|
Packit |
6d14d2 |
the shell environment for this distribution each
|
|
Packit |
6d14d2 |
time you want use it.
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
$appendLine
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
*)
|
|
Packit |
6d14d2 |
lineExists="$(grep "$appendLine" $HOME/$file )"
|
|
Packit |
6d14d2 |
if [ ! "$lineExists" ]; then
|
|
Packit |
6d14d2 |
mv $HOME/$file $dotFileBackup || exit 1
|
|
Packit |
6d14d2 |
cp $dotFileBackup $HOME/$file || exit 1
|
|
Packit |
6d14d2 |
echo "$appendLine" >> $HOME/$file || exit 1
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
NOTE: Successfully updated the following file:
|
|
Packit |
6d14d2 |
$HOME/$file
|
|
Packit |
6d14d2 |
Backup written to:
|
|
Packit |
6d14d2 |
$dotFileBackup
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
NOTE: The following file already contains information for this
|
|
Packit |
6d14d2 |
distribution, so I did not update it.
|
|
Packit |
6d14d2 |
$HOME/$file
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
esac
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
done
|
|
Packit |
6d14d2 |
if [ -z "$dotFileBackup" ]; then
|
|
Packit |
6d14d2 |
if [ ! "$batchmode" = "Yes" ]; then
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
NOTE: No shell startup files updated. You can source the
|
|
Packit |
6d14d2 |
environment for this distribution manually, each time you
|
|
Packit |
6d14d2 |
want to use it, by typing the following.
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
$appendLine
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
}
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
updateUserDotEmacs() {
|
|
Packit |
6d14d2 |
if [ -f $thisLocatingRules ]; then
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
NOTE: This distribution includes a "schema locating rules" file
|
|
Packit |
6d14d2 |
for Emacs/nXML. To use it, you should update either your
|
|
Packit |
6d14d2 |
.emacs or .emacs.el file. This installer can automatically
|
|
Packit |
6d14d2 |
make the necessary changes. Or, if you prefer, you can make
|
|
Packit |
6d14d2 |
the changes manually.
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
emacsAppendLine="(load-file \"$mydir/.emacs.el\")"
|
|
Packit |
6d14d2 |
myEmacsFile=
|
|
Packit |
6d14d2 |
for file in .emacs .emacs.el; do
|
|
Packit |
6d14d2 |
if [ -f "$HOME/$file" ]; then
|
|
Packit |
6d14d2 |
myEmacsFile=$HOME/$file
|
|
Packit |
6d14d2 |
break
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
done
|
|
Packit |
6d14d2 |
if [ ! -f "$myEmacsFile" ]; then
|
|
Packit |
6d14d2 |
REPLY=""
|
|
Packit |
6d14d2 |
if [ ! "$batchmode" = "Yes" ]; then
|
|
Packit |
6d14d2 |
read -s -n1 -p "No .emacs or .emacs.el file. Create one? [No] "
|
|
Packit |
6d14d2 |
emit_message "$REPLY"
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
case $REPLY in
|
|
Packit |
6d14d2 |
[yY])
|
|
Packit |
6d14d2 |
myEmacsFile=$HOME/.emacs
|
|
Packit |
6d14d2 |
touch $myEmacsFile
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
*)
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
NOTE: No Emacs changes made. To use this distribution with,
|
|
Packit |
6d14d2 |
Emacs/nXML, you can create a .emacs file and manually add
|
|
Packit |
6d14d2 |
the following line to it, or you can run it as a command
|
|
Packit |
6d14d2 |
within Emacs.
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
$emacsAppendLine
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
esac
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
if [ -n "$myEmacsFile" ]; then
|
|
Packit |
6d14d2 |
REPLY=""
|
|
Packit |
6d14d2 |
if [ ! "$batchmode" = "Yes" ]; then
|
|
Packit |
6d14d2 |
read -s -n1 -p "Update $myEmacsFile? [Yes] "
|
|
Packit |
6d14d2 |
emit_message "$REPLY"
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
case $REPLY in
|
|
Packit |
6d14d2 |
[nNqQ])
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
NOTE: No change made to $myEmacsFile. To use this distribution
|
|
Packit |
6d14d2 |
with Emacs/nXML, you can manually add the following line
|
|
Packit |
6d14d2 |
to your $myEmacsFile, or you can run it as a command
|
|
Packit |
6d14d2 |
within Emacs.
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
$emacsAppendLine
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
*)
|
|
Packit |
6d14d2 |
lineExists="$(grep "$emacsAppendLine" $myEmacsFile)"
|
|
Packit |
6d14d2 |
if [ ! "$lineExists" ]; then
|
|
Packit |
6d14d2 |
dotEmacsBackup=$myEmacsFile.$$.bak
|
|
Packit |
6d14d2 |
mv $myEmacsFile $dotEmacsBackup || exit 1
|
|
Packit |
6d14d2 |
cp $dotEmacsBackup $myEmacsFile || exit 1
|
|
Packit |
6d14d2 |
echo "$emacsAppendLine" >> $myEmacsFile || exit 1
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
NOTE: Successfully updated the following file:
|
|
Packit |
6d14d2 |
$myEmacsFile
|
|
Packit |
6d14d2 |
Backup written to:
|
|
Packit |
6d14d2 |
$dotEmacsBackup
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
NOTE: The following file already contains information for this
|
|
Packit |
6d14d2 |
distribution, so I did not update it.
|
|
Packit |
6d14d2 |
$myEmacsFile
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
esac
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
}
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
uninstall() {
|
|
Packit |
6d14d2 |
if [ ! "$batchmode" = "Yes" ]; then
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
NOTE: To "uninstall" this distribution, the changes made to your
|
|
Packit |
6d14d2 |
CatalogManagers.properties, startup files, and/or .emacs
|
|
Packit |
6d14d2 |
file need to be reverted. This uninstaller can automatically
|
|
Packit |
6d14d2 |
revert them. Or, if you prefer, you can revert them manually.
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
if [ "$osName" = "Cygwin" ]; then
|
|
Packit |
6d14d2 |
thisXmlCatalog=$thisJavaXmlCatalog
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
# make "escaped" version of PWD to use with sed and grep
|
|
Packit |
6d14d2 |
escapedPwd=$(echo $mydir | sed "s#/#\\\\\/#g")
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
# check to see if a non-empty value for catalogManager was fed
|
|
Packit |
6d14d2 |
# to uninstaller.
|
|
Packit |
6d14d2 |
if [ -n ${1#--catalogManager=} ]; then
|
|
Packit |
6d14d2 |
myCatalogManager=${1#--catalogManager=}
|
|
Packit |
6d14d2 |
catalogBackup="$myCatalogManager.$$.bak"
|
|
Packit |
6d14d2 |
catalogsLine=$(grep "^catalogs=" $myCatalogManager)
|
|
Packit |
6d14d2 |
if [ "$catalogsLine" ] ; then
|
|
Packit |
6d14d2 |
if [ "${catalogsLine#*$thisXmlCatalog*}" != "$catalogsLine" ]; then
|
|
Packit |
6d14d2 |
REPLY=""
|
|
Packit |
6d14d2 |
if [ ! "$batchmode" = "Yes" ]; then
|
|
Packit |
6d14d2 |
read -s -n1 -p "Revert $myCatalogManager? [Yes] "
|
|
Packit |
6d14d2 |
emit_message "$REPLY"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
case $REPLY in
|
|
Packit |
6d14d2 |
[nNqQ]*)
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
NOTE: No change made to $myCatalogManager. You need to manually
|
|
Packit |
6d14d2 |
remove the following path from the "catalog=" line.
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
$thisXmlCatalog
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
*)
|
|
Packit |
6d14d2 |
mv $myCatalogManager $catalogBackup || exit 1
|
|
Packit |
6d14d2 |
sed "s#^catalogs=\(.*\)$thisXmlCatalog\(.*\)\$#catalogs=\1\2#" $catalogBackup \
|
|
Packit |
6d14d2 |
| sed 's/;\+/;/' | sed 's/;$//' | sed 's/=;/=/' > $myCatalogManager || exit 1
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
NOTE: Successfully updated the following file:
|
|
Packit |
6d14d2 |
$myCatalogManager
|
|
Packit |
6d14d2 |
Backup written to:
|
|
Packit |
6d14d2 |
$catalogBackup
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
esac
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
emit_message "NOTE: No data for this distribution found in:"
|
|
Packit |
6d14d2 |
emit_message " $myCatalogManager"
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
NOTE: No data for this distribution was found in the following
|
|
Packit |
6d14d2 |
file, so I did not revert it.
|
|
Packit |
6d14d2 |
$myCatalogManager
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
if [ -n "$myEmacsFile" ]; then
|
|
Packit |
6d14d2 |
# check to see if a non-empty value for --dotEmacs file was fed
|
|
Packit |
6d14d2 |
# to uninstaller.
|
|
Packit |
6d14d2 |
if [ -n ${2#--dotEmacs=} ]; then
|
|
Packit |
6d14d2 |
myEmacsFile=${2#--dotEmacs=}
|
|
Packit |
6d14d2 |
revertLine="(load-file \"$escapedPwd\/\.emacs\.el\")"
|
|
Packit |
6d14d2 |
loadLine="$(grep "$revertLine" "$myEmacsFile")"
|
|
Packit |
6d14d2 |
if [ -n "$loadLine" ]; then
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
REPLY=""
|
|
Packit |
6d14d2 |
if [ ! "$batchmode" = "Yes" ]; then
|
|
Packit |
6d14d2 |
read -s -n1 -p "Revert $myEmacsFile? [Yes] "
|
|
Packit |
6d14d2 |
emit_message "$REPLY"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
case $REPLY in
|
|
Packit |
6d14d2 |
[nNqQ]*)
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
NOTE: No change made to $myEmacsFile. You need to manually
|
|
Packit |
6d14d2 |
remove the following line.
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
(load-file \"$mydir/.emacs.el\")
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
*)
|
|
Packit |
6d14d2 |
dotEmacsBackup=$myEmacsFile.$$.bak
|
|
Packit |
6d14d2 |
sed -e "/$revertLine/d" -i".$$.bak" $myEmacsFile || exit 1
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
NOTE: successfully reverted the following file:
|
|
Packit |
6d14d2 |
$myEmacsFile
|
|
Packit |
6d14d2 |
Backup written to:
|
|
Packit |
6d14d2 |
$dotEmacsBackup
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
esac
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
emit_message "NOTE: No data for this distribution found in:"
|
|
Packit |
6d14d2 |
emit_message " $myEmacsFile"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
# check all startup files
|
|
Packit |
6d14d2 |
myStartupFiles=".bash_profile .bash_login .profile .bashrc .cshrc .tcshrc"
|
|
Packit |
6d14d2 |
for file in $myStartupFiles; do
|
|
Packit |
6d14d2 |
if [ -e "$HOME/$file" ]; then
|
|
Packit |
6d14d2 |
case $file in
|
|
Packit |
6d14d2 |
.tcshrc|.cshrc)
|
|
Packit |
6d14d2 |
revertLine="source $mydir/.cshrc.incl"
|
|
Packit |
6d14d2 |
revertLineEsc="source $escapedPwd\/\.cshrc\.incl"
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
*)
|
|
Packit |
6d14d2 |
revertLine=". $mydir/.profile.incl"
|
|
Packit |
6d14d2 |
revertLineEsc="\. $escapedPwd\/\.profile\.incl"
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
esac
|
|
Packit |
6d14d2 |
lineExists="$(grep "$revertLineEsc" $HOME/$file )"
|
|
Packit |
6d14d2 |
if [ "$lineExists" ]; then
|
|
Packit |
6d14d2 |
REPLY=""
|
|
Packit |
6d14d2 |
if [ ! "$batchmode" = "Yes" ]; then
|
|
Packit |
6d14d2 |
read -s -n1 -p "Update $HOME/$file? [Yes] "
|
|
Packit |
6d14d2 |
emit_message "$REPLY"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
case $REPLY in
|
|
Packit |
6d14d2 |
[nNqQ]*)
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
NOTE: No change made to $HOME/$file. You need to manually remove
|
|
Packit |
6d14d2 |
the following line from it.
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
$revertLine
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
*)
|
|
Packit |
6d14d2 |
dotFileBackup=$HOME/$file.$$.bak
|
|
Packit |
6d14d2 |
sed -e "/$revertLineEsc/d" -i".$$.bak" $HOME/$file || exit 1
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
NOTE: Successfully updated the following file:
|
|
Packit |
6d14d2 |
$HOME/$file
|
|
Packit |
6d14d2 |
Backup written to:
|
|
Packit |
6d14d2 |
$dotFileBackup
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
esac
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
emit_message "NOTE: No data for this distribution found in:"
|
|
Packit |
6d14d2 |
emit_message " $HOME/$file"
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
done
|
|
Packit |
6d14d2 |
removeOldFiles
|
|
Packit |
6d14d2 |
emit_message "Done. Deleted uninstall.sh file."
|
|
Packit |
6d14d2 |
rm -f $mydir/test.sh || exit 1
|
|
Packit |
6d14d2 |
rm -f $mydir/uninstall.sh || exit 1
|
|
Packit |
6d14d2 |
}
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
writeUninstallFile() {
|
|
Packit |
6d14d2 |
uninstallFile=$mydir/uninstall.sh
|
|
Packit |
6d14d2 |
echo '#!/bin/bash' > $uninstallFile || exit 1
|
|
Packit |
6d14d2 |
echo 'mydir=$(cd -P $(dirname $0) && pwd -P)' >> $uninstallFile || exit 1
|
|
Packit |
6d14d2 |
echo "\$mydir/install.sh \\" >> $uninstallFile || exit 1
|
|
Packit |
6d14d2 |
echo " --uninstall \\" >> $uninstallFile || exit 1
|
|
Packit |
6d14d2 |
echo " --catalogManager=$myCatalogManager \\" >> $uninstallFile || exit 1
|
|
Packit |
6d14d2 |
echo " --dotEmacs='$myEmacsFile' \\" >> $uninstallFile || exit 1
|
|
Packit |
6d14d2 |
echo ' $@' >> $uninstallFile || exit 1
|
|
Packit |
6d14d2 |
chmod 755 $uninstallFile || exit 1
|
|
Packit |
6d14d2 |
}
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
writeTestFile() {
|
|
Packit |
6d14d2 |
testFile=$mydir/test.sh
|
|
Packit |
6d14d2 |
echo "#!/bin/bash" > $testFile || exit 1
|
|
Packit |
6d14d2 |
echo 'mydir=$(cd -P $(dirname $0) && pwd -P)' >> $testFile || exit 1
|
|
Packit |
6d14d2 |
echo '$mydir/install.sh --test' >> $testFile || exit 1
|
|
Packit |
6d14d2 |
chmod 755 $testFile || exit 1
|
|
Packit |
6d14d2 |
}
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
printExitMessage() {
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
To source your shell environment for this distribution, type the
|
|
Packit |
6d14d2 |
following:
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
$appendLine
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
}
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
checkForResolver() {
|
|
Packit |
6d14d2 |
resolverResponse="$(java org.apache.xml.resolver.apps.resolver uri -u foo 2>/dev/null)"
|
|
Packit |
6d14d2 |
if [ -z "$resolverResponse" ]; then
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
NOTE: Your environment does not seem to contain the Apache XML
|
|
Packit |
6d14d2 |
Commons Resolver; without that, you can't use XML catalogs
|
|
Packit |
6d14d2 |
with Java applications. For more information, see the "How
|
|
Packit |
6d14d2 |
to use a catalog file" section in Bob Stayton's "DocBook
|
|
Packit |
6d14d2 |
XSL: The Complete Guide"
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
http://sagehill.net/docbookxsl/UseCatalog.html
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
}
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
emitNoChangeMsg() {
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
NOTE: No changes were made to CatalogManagers.properties. To
|
|
Packit |
6d14d2 |
provide your Java tools with XML catalog information for
|
|
Packit |
6d14d2 |
this distribution, you will need to make the appropriate
|
|
Packit |
6d14d2 |
changes manually.
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
}
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
testCatalogs() {
|
|
Packit |
6d14d2 |
if [ ! -f "$thisXmlCatalog" ]; then
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
FATAL: $thisXmlCatalog file needed but not found. Stopping.
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
exit
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
if [ -z "$XML_CATALOG_FILES" ]; then
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
emit_message "WARNING: XML_CATALOG_FILES not set. Not testing with xmlcatalog."
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
xmlCatalogResponse="$(xmlcatalog 2>/dev/null)"
|
|
Packit |
6d14d2 |
if [ -z "$xmlCatalogResponse" ]; then
|
|
Packit |
6d14d2 |
cat 1>&2 <
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
WARNING: Cannot locate the "xmlcatalog" command. Make sure that
|
|
Packit |
6d14d2 |
you have libxml2 and its associated utilities installed.
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
http://xmlsoft.org/
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
EOF
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
emit_message "Testing with xmlcatalog..."
|
|
Packit |
6d14d2 |
# read in pathname-uri pairs from .urilist file
|
|
Packit |
6d14d2 |
while read pair; do
|
|
Packit |
6d14d2 |
if [ ! "${pair%* *}" = "." ]; then
|
|
Packit |
6d14d2 |
path=$mydir/${pair%* *}
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
path=$mydir/
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
uri=${pair#* *}
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
emit_message " Tested: $uri"
|
|
Packit |
6d14d2 |
for catalog in $XML_CATALOG_FILES; do
|
|
Packit |
6d14d2 |
response="$(xmlcatalog $catalog $uri| grep -v "No entry")"
|
|
Packit |
6d14d2 |
if [ -n "$response" ]; then
|
|
Packit |
6d14d2 |
if [ "$response" = "$path" ]; then
|
|
Packit |
6d14d2 |
emit_message " Result: $path"
|
|
Packit |
6d14d2 |
break
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
emit_message " Result: FAILED"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
done
|
|
Packit |
6d14d2 |
done < $mydir/.urilist
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
if [ -z "$CLASSPATH" ]; then
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
emit_message "NOTE: CLASSPATH not set. Not testing with Apache XML Commons Resolver."
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
if [ "$(checkForResolver)" ]; then
|
|
Packit |
6d14d2 |
checkForResolver
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
emit_message "Testing with Apache XML Commons Resolver..."
|
|
Packit |
6d14d2 |
# read in pathname-uri pairs from .urilist file
|
|
Packit |
6d14d2 |
while read pair; do
|
|
Packit |
6d14d2 |
if [ ! "${pair%* *}" = "." ]; then
|
|
Packit |
6d14d2 |
path=$mydir/${pair%* *}
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
path=$mydir/
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
uri=${pair#* *}
|
|
Packit |
6d14d2 |
emit_message
|
|
Packit |
6d14d2 |
emit_message " Tested: $uri"
|
|
Packit |
6d14d2 |
if [ ${uri%.dtd} != $uri ]; then
|
|
Packit |
6d14d2 |
response="$(java org.apache.xml.resolver.apps.resolver system -s $uri | grep "Result")"
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
response="$(java org.apache.xml.resolver.apps.resolver uri -u $uri | grep "Result")"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
if [ "$response" ]; then
|
|
Packit |
6d14d2 |
if [ "${response#*$path}" != "$response" ]; then
|
|
Packit |
6d14d2 |
emit_message " Result: $path"
|
|
Packit |
6d14d2 |
else
|
|
Packit |
6d14d2 |
emit_message " Result: FAILED"
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
echo
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
done < $mydir/.urilist
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
fi
|
|
Packit |
6d14d2 |
}
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
# get opts and execute appropriate function
|
|
Packit |
6d14d2 |
case $1 in
|
|
Packit |
6d14d2 |
*-uninstall)
|
|
Packit |
6d14d2 |
uninstall $2 $3 $4
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
*-test)
|
|
Packit |
6d14d2 |
testCatalogs
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
*)
|
|
Packit |
6d14d2 |
main
|
|
Packit |
6d14d2 |
;;
|
|
Packit |
6d14d2 |
esac
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
# Copyright
|
|
Packit |
6d14d2 |
# ---------
|
|
Packit |
6d14d2 |
# Copyright 2005-2007 Michael(tm) Smith <smith@sideshowbarker.net>
|
|
Packit |
6d14d2 |
#
|
|
Packit |
6d14d2 |
# Permission is hereby granted, free of charge, to any person
|
|
Packit |
6d14d2 |
# obtaining a copy of this software and associated documentation
|
|
Packit |
6d14d2 |
# files (the "Software"), to deal in the Software without
|
|
Packit |
6d14d2 |
# restriction, including without limitation the rights to use, copy,
|
|
Packit |
6d14d2 |
# modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
Packit |
6d14d2 |
# of the Software, and to permit persons to whom the Software is
|
|
Packit |
6d14d2 |
# furnished to do so, subject to the following conditions:
|
|
Packit |
6d14d2 |
#
|
|
Packit |
6d14d2 |
# The above copyright notice and this permission notice shall be
|
|
Packit |
6d14d2 |
# included in all copies or substantial portions of the Software.
|
|
Packit |
6d14d2 |
#
|
|
Packit |
6d14d2 |
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
Packit |
6d14d2 |
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
Packit |
6d14d2 |
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
Packit |
6d14d2 |
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
Packit |
6d14d2 |
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
Packit |
6d14d2 |
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
Packit |
6d14d2 |
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
Packit |
6d14d2 |
# DEALINGS IN THE SOFTWARE.
|
|
Packit |
6d14d2 |
|
|
Packit |
6d14d2 |
# vim: number
|