X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/0c9c28efcd43f53ac54aa60b2dfefa69c70dbadf..6b6d9b29e9e9e91f79507a8bf193fb30de311dcc:/doc/help/xslt/install.sh diff --git a/doc/help/xslt/install.sh b/doc/help/xslt/install.sh new file mode 100755 index 00000000..40716191 --- /dev/null +++ b/doc/help/xslt/install.sh @@ -0,0 +1,977 @@ +#!/bin/bash +# $Id: install.sh 7942 2008-03-26 06:08:08Z xmldoc $ +# $Source$ # + +# install.sh - Set up user environment for a XML/XSLT distribution + +# This is as an interactive installer for updating your +# environment to use an XML/XSLT distribution such as the DocBook +# XSL Stylesheets. Its main purpose is to configure your +# environment with XML catalog data and schema "locating rules" +# data provided in the XML/XSLT distribution. +# +# Although this installer was created for the DocBook project, it +# is a general-purpose tool that can be used with any XML/XSLT +# distribution that provides XML/SGML catalogs and locating rules. +# +# This script is mainly intended to make things easier for you if +# you want to install a particular XML/XSLT distribution that has +# not (yet) been packaged for your OS distro (Debian, Fedora, +# whatever), or to use "snapshot" or development releases +# +# It works by updating your shell startup file (e.g., .bashrc and +# .cshrc) and .emacs file and by finding or creating a writable +# CatalogManager.properties file to update. +# +# It makes backup copies of any files it touches, and also +# generates a uninstall.sh script for reverting its changes. +# +# In the same directory where it is located, it expects to find +# the following four files: +# - locatingrules.xml +# - catalog.xml +# - catalog +# - .urilist +# And if it's unable to locate a CatalogManager.properties file in +# your environment, it expects to find an "example" one in the +# same directory as itself, which it copies over to your +# ~/.resolver directory. +# +# If the distribution contains any executables, change the value +# of the thisBinDir to a colon-separated list of the pathnames of +# the directories that contain those executables. + +# mydir is the "canonical" absolute pathname for install.sh +mydir=$(cd -P $(dirname $0) && pwd -P) || exit 1 + +thisLocatingRules=$mydir/locatingrules.xml +thisXmlCatalog=$mydir/catalog.xml +thisSgmlCatalog=$mydir/catalog + +# .urilist file contains a list of pairs of local pathnames and +# URIs to test for catalog resolution +thisUriList=$mydir/.urilist +exampleCatalogManager=$mydir/.CatalogManager.properties.example +thisCatalogManager=$HOME/.resolver/CatalogManager.properties + +# thisBinDir directory is a colon-separated list of the pathnames +# to all directories that contain executables provided with the +# distribution (for example, the DocBook XSL Stylesheets +# distribution contains a "docbook-xsl-update" convenience script +# for rsync'ing up to the latest docbook-xsl snapshot). The +# install.sh script adds the value of thisBinDir to your PATH +# environment variable +thisBinDir=$mydir/tools/bin + +emit_message() { + echo "$1" 1>&2 +} + +if [ ! "${*#--batch}" = "$*" ]; then + batchmode="Yes"; +else + batchmode="No"; + emit_message + if [ ! "$1" = "--test" ]; then + emit_message "NOTE: For non-interactive installs/uninstalls, use --batch" + if [ ! "$1" = "--uninstall" ]; then + emit_message + fi + fi +fi + +osName="Unidentified" +if uname -s | grep -qi "cygwin"; then + osName="Cygwin" +fi + +classPathSeparator=":" +if [ "$osName" = "Cygwin" ]; then + thisJavaXmlCatalog=$(cygpath -m $thisXmlCatalog) + classPathSeparator=";" +else + thisJavaXmlCatalog=$thisXmlCatalog +fi + +main() { + removeOldFiles + checkRoot + updateCatalogManager + checkForResolver + writeDotFiles + updateUserStartupFiles + updateUserDotEmacs + writeUninstallFile + writeTestFile + printExitMessage +} + +removeOldFiles() { + rm -f $mydir/.profile.incl + rm -f $mydir/.cshrc.incl + rm -f $mydir/.emacs.el +} + +checkRoot() { + if [ $(id -u) == "0" ]; then + cat 1>&2 <&2 <&2 <&2 <&2 < $myCatalogManager || exit 1 + emit_message "NOTE: Successfully updated the following file:" + emit_message " $myCatalogManager" + emit_message " Backup written to:" + emit_message " $catalogBackup" + fi + else + mv $myCatalogManager $catalogBackup || exit 1 + cp $catalogBackup $myCatalogManager + echo "catalogs=$thisJavaXmlCatalog;$etcXmlCatalog" \ + | sed 's/;\+/;/' | sed 's/;$//' >> $myCatalogManager || exit 1 + emit_message "NOTE: \"catalogs=\" line added to $myCatalogManager." + emit_message " Backup written to $catalogBackup" + fi + ;; + esac + # end of backing up and updating CatalogManager.properties + fi + fi + # end of CatalogManager.properties updates + + if [ "$osName" = "Cygwin" ]; then + myCatalogManager=$(cygpath -m $myCatalogManager) + fi + return 0 +} + +writeDotFiles() { + while read; do + echo "$REPLY" >> $mydir/.profile.incl + done <> $mydir/.cshrc.incl +done <> $mydir/.profile.incl + done <> $mydir/.cshrc.incl + done <> $mydir/.emacs.el +done <&2 <&2 <> $HOME/$file || exit 1 + cat 1>&2 <&2 <&2 <&2 <&2 <&2 <> $myEmacsFile || exit 1 + cat 1>&2 <&2 <&2 <&2 < $myCatalogManager || exit 1 + cat 1>&2 <&2 <&2 <&2 <&2 <&2 < $uninstallFile || exit 1 + echo 'mydir=$(cd -P $(dirname $0) && pwd -P)' >> $uninstallFile || exit 1 + echo "\$mydir/install.sh \\" >> $uninstallFile || exit 1 + echo " --uninstall \\" >> $uninstallFile || exit 1 + echo " --catalogManager=$myCatalogManager \\" >> $uninstallFile || exit 1 + echo " --dotEmacs='$myEmacsFile' \\" >> $uninstallFile || exit 1 + echo ' $@' >> $uninstallFile || exit 1 + chmod 755 $uninstallFile || exit 1 +} + +writeTestFile() { + testFile=$mydir/test.sh + echo "#!/bin/bash" > $testFile || exit 1 + echo 'mydir=$(cd -P $(dirname $0) && pwd -P)' >> $testFile || exit 1 + echo '$mydir/install.sh --test' >> $testFile || exit 1 + chmod 755 $testFile || exit 1 +} + +printExitMessage() { + cat 1>&2 <&2 <&2 <&2 <&2 < +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, copy, +# modify, merge, publish, distribute, sublicense, and/or sell copies +# of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +# DEALINGS IN THE SOFTWARE. + +# vim: number