summaryrefslogtreecommitdiffstats
path: root/mantools/enter
diff options
context:
space:
mode:
Diffstat (limited to 'mantools/enter')
-rwxr-xr-xmantools/enter145
1 files changed, 145 insertions, 0 deletions
diff --git a/mantools/enter b/mantools/enter
new file mode 100755
index 0000000..4287c1a
--- /dev/null
+++ b/mantools/enter
@@ -0,0 +1,145 @@
+#!/bin/sh
+
+# enter - set up project-specific environment
+
+# @(#) enter.sh 1.5 11/4/89 15:56:03
+
+# initialize
+
+IFS="
+"
+
+: ${HOME?} ${SHELL=/bin/sh} make sure these are set
+
+# sanity checks...
+
+test $# = 1 || {
+ echo "Usage: ${0} project" 1>&2; exit 1
+}
+
+test -r ${HOME}/.${1} || {
+ echo "${0}: can't read environment file: '${HOME}/.${1}'" 1>&2; exit 1
+}
+
+test -x ${SHELL} || {
+ echo "${0}: can't execute command shell: '${SHELL}'" 1>&2; exit 1
+}
+
+# set up default Bourne-shell prompt
+
+export PS1; PS1="$1%${PS1- }"
+
+# load environment
+
+. ${HOME}/.${1}
+
+# define UPPER and lower-case environment variables with the project name
+
+_PNAME_=`echo ${1} | case \`echo -n\` in # assume $1 lower case
+ "") tr a-z A-Z;; # this is for V7, BSD
+ *) tr '[a-z]' '[A-Z]';; # and this is for SYSV
+ esac`
+eval ${1}=\${${_PNAME_}=\${${1}}}
+
+eval test "X\${${1}}" != X || {
+ echo "${0}: ${HOME}/.${1} should set '${1}' or '${_PNAME_}'" 1>&2; exit 1
+}
+
+export ${1} MANPATH PATH ${_PNAME_}
+
+# become a new shell
+
+echo "Entering project '${1}' - leave with 'exit' or 'control-d'" 1>&2
+
+exec ${SHELL}
+
+echo "project ${1} NOT entered" 1>&2; exit 1;
+
+#++
+# NAME
+# enter 1
+# SUMMARY
+# set up a project-specific environment
+# PROJECT
+# sdetools
+# SYNOPSIS
+# enter project
+# exit
+# DESCRIPTION
+# The \fIenter\fR command sets up an environment that makes
+# it easy to access \fIproject\fR-specific programs and files.
+#
+# \fIenter\fP consults a file with environment information
+# ($HOME/.\fIproject\fR, Bourne-shell syntax) and invokes
+# a new command shell of the same type as the login shell.
+# Typically, project environment files are maintained and
+# given out by the project administrator.
+#
+# In order to leave the project environment use the \fIexit\fP
+# command or type a control-d;
+# the details may depend on the type of login shell involved.
+#
+# As a minimum, the environment file should set an environment
+# variable with the same name as the \fIproject\fP. The variable
+# name can be either be identical to \fIproject\fP or in upper case.
+# For consistency, \fIenter\fP will set both variables to the same value.
+# EXAMPLE
+# .fi
+# .ad
+# In this example,
+# all files pertaining to a project \fIfoobar\fR are located under the
+# directory \fI/usr/foo/bar/foobar\fR. For example, there
+# are subdirectories
+# \fI/usr/foo/bar/foobar/man\fR with manual pages,
+# \fI/usr/foo/bar/foobar/bin\fR with executable
+# programs, other directories for object libraries and include files,
+# and so on.
+#
+# In order to enter a project \fIfoobar\fR, the command
+# .PP
+# .ti +5
+# .ft C
+# enter foobar
+# .ft
+# .PP
+# consults a file \fI.foobar\fR (in the user\'s home directory)
+# with contents:
+# .PP
+# .ft C
+# .nf
+# .in +5
+# export FOOBAR; FOOBAR=/usr/foo/bar/foobar
+# export PATH; PATH=$PATH:$FOOBAR/bin
+# export MANPATH; MANPATH=$MANPATH:$FOOBAR/man
+# .ft
+# .fi
+# .PP
+# The second line automatically makes all project-specific
+# executable programs accessible. The third line makes it possible
+# to use the standard UNIX \fIman\fR command for retrieval of
+# project-specific manual pages. The \fIenter\fR command
+# makes sure that both the \fIfoobar\fR and \fIFOOBAR\fR
+# environment variables are set to the same value.
+# COMMANDS
+# sh(1), echo(1), test(1), tr(1), login shell
+# FILES
+# $HOME/.\fIproject\fR
+# ENVIRONMENT VARIABLES
+# SHELL, login shell
+# HOME, login directory
+# PATH, search path for commands
+# MANPATH, search path for the \fIman\fR command.
+# BUGS
+# Name clashes may occur if people have entered several projects
+# at the same time. This can be avoided by using unique project names,
+# which is a good idea anyway.
+# AUTHOR(S)
+# W.Z. Venema
+# Eindhoven University of Technology
+# Department of Mathematics and Computer Science
+# Den Dolech 2, P.O. Box 513, 5600 MB Eindhoven, The Netherlands
+# CREATION DATE
+# Tue Apr 19 15:35:41 MET DST 1988
+# STATUS
+# enter.sh 1.5 11/4/89 15:56:03 (draft)
+#--