overzealous help-links.sh script! (PR#1682)

rjvbertin@hotmail.com rjvbertin@hotmail.com
Mon, 17 Jun 2002 15:11:20 +0200 (MET DST)


Starting html help in the current version of R has a very annoying 
side-effect. It indiscriminantly removes $HOME/.R, and replaces it with a 
virgin copy. I discovered that when all of a sudden I got complaints about 
my startup "library" not being found.
Below is a modified version of the script that doesn't do this. It is not 
perfect yet (it shouldn't try to recreate links that already exists; there 
must be a glitch in the multi-test if lines) but it is safer than the 
previous version!

RenE Bertin


#! /bin/sh

# 20020615 RJVB : I modified this script such that it will not at each 
invocation throw away the ~/.R directory
# with all that it contains (including stuff the user might have 
installed!!)
# Instead, it will create what doesn't exist, and warn whenever an error 
occurs (= a dir can't be made because a file
# with the same name exists.
# For the links, I try to be clever, and put in only those that aren't there 
yet, but this doesn't yet function
# correctly with the single-line-2-test expression. Therefore, all output 
from ln is thrown away :)

USER_R_HOME="${HOME}/.R"
PKGLIST="${USER_R_HOME}/doc/html/packages.html"
SEARCHINDEX="${USER_R_HOME}/doc/html/search/index.txt"
# RJVB: don't do this!!
# rm -rf ${USER_R_HOME}

dirs="${USER_R_HOME} ${USER_R_HOME}/doc ${USER_R_HOME}/doc/html 
${USER_R_HOME}/doc/html/search ${USER_R_HOME}/library"
for d in ${dirs}; do
# RJVB
    if [ ! -e ${d} ] ;then
	    mkdir -p ${d}
	elif [ ! -d ${d} ] ;then
		echo "Warning: ${d} already exists but is not a directory!"
	fi
done

for f in AUTHORS COPYING THANKS; do
# RJVB
  if [ -f ${R_HOME}/${f} -a ! -e ${USER_R_HOME}/${f} ] ;then
    ln -s ${R_HOME}/${f} ${USER_R_HOME}/${f}
  fi
done

# RJVB
if [ -d ${R_HOME}/doc/manual -a ! -e ${USER_R_HOME}/doc/manual ] ;then
  ln -s ${R_HOME}/doc/manual ${USER_R_HOME}/doc/manual
fi

for f in ${R_HOME}/doc/html/*; do
# RJVB
    if [ -f $f -a ! -e ${USER_R_HOME}/doc/html/${f} ] ;then
	ln -s ${f} ${USER_R_HOME}/doc/html 1>/dev/null 2>1
    fi
done

for f in ${R_HOME}/doc/html/search/*; do
# RJVB
    if [ -f $f -a ! -e ${USER_R_HOME}/doc/html/search/${f} ] ;then
	ln -s ${f} ${USER_R_HOME}/doc/html/search 1>/dev/null 2>1
    fi
done

rm -f ${PKGLIST}
rm -f ${SEARCHINDEX}
cp ${R_HOME}/doc/html/packages-head.html ${PKGLIST}

get_unique () {
  if test -r ${1}; then
    x="1"
    while test -r ${1}.${x}; do
      x=`echo "$x+1" | bc`
    done
    echo ${1}.${x}
  else
    echo $1
  fi
}


for lib in $*; do
    echo "<p><h3>Packages in ${lib}</h3>" >> ${PKGLIST}
    echo "<p><table width=\"100%\">" >> ${PKGLIST}
    if test -d ${lib}; then
      for pkg in `ls -d ${lib}/* | sed '/CVS$/d; /profile$/d'`; do
	if test -d ${pkg}; then
	    pkgname=`basename ${pkg}`
	    target=`get_unique ${USER_R_HOME}/library/${pkgname}`
	    targetname=`basename ${target}`
	    ln -s ${pkg} ${target}
	    if test -r ${pkg}/TITLE; then
		pkgtitle=`cat ${pkg}/TITLE | sed "s/^${pkgname}//"`
	    else
		pkgtitle=""
	    fi
	    echo "<tr align=\"left\" valign=\"top\">
		    <td width=\"25%\"><a 
href=\"../../library/${targetname}/html/00Index.html\">
		    ${pkgname}</a><td>${pkgtitle}</td></tr>" \
		>> ${PKGLIST}

	    cat ${pkg}/CONTENTS | \
	      sed "s/\/library\/${pkgname}\//\/library\/${targetname}\//;" \
	      >> ${SEARCHINDEX}


	fi
      done
    fi
    echo "</table>" >> ${PKGLIST}
    echo "" >> ${PKGLIST}
done

echo "</body></html>" >> ${PKGLIST}
ln -s ${R_HOME}/doc/html/R.css ${USER_R_HOME}/library 1>/dev/null 2>1

### Local Variables: ***
### mode: sh ***
### sh-indentation: 2 ***
### End: ***


RenE J.V. Bertin
College de France/LPPA
11, place Marcelin Berthelot
75005 Paris, France

_________________________________________________________________



-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._