1#!/bin/sh
2
3# enter - set up project-specific environment
4
5# @(#) enter.sh 1.5 11/4/89 15:56:03
6
7# initialize
8
9IFS=" 	
10"
11
12: ${HOME?} ${SHELL=/bin/sh} make sure these are set
13
14# sanity checks...
15
16test $# = 1 || { 
17    echo "Usage: ${0} project" 1>&2; exit 1
18}
19
20test -r ${HOME}/.${1} || { 
21    echo "${0}: can't read environment file: '${HOME}/.${1}'" 1>&2; exit 1
22}
23
24test -x ${SHELL} || { 
25    echo "${0}: can't execute command shell: '${SHELL}'" 1>&2; exit 1
26}
27
28# set up default Bourne-shell prompt
29
30export PS1; PS1="$1%${PS1- }"
31
32# load environment 
33
34. ${HOME}/.${1}
35
36# define UPPER and lower-case environment variables with the project name
37
38_PNAME_=`echo ${1} | case \`echo -n\` in		# assume $1 lower case
39			"") tr a-z A-Z;;		# this is for V7, BSD
40			 *) tr '[a-z]' '[A-Z]';;	# and this is for SYSV
41		     esac`
42eval ${1}=\${${_PNAME_}=\${${1}}}
43
44eval test "X\${${1}}" != X || { 
45    echo "${0}: ${HOME}/.${1} should set '${1}' or '${_PNAME_}'" 1>&2; exit 1
46}
47
48export ${1} MANPATH PATH ${_PNAME_}
49
50# become a new shell
51
52echo "Entering project '${1}' - leave with 'exit' or 'control-d'" 1>&2
53
54exec ${SHELL} 
55
56echo "project ${1} NOT entered" 1>&2; exit 1;
57
58#++
59# NAME
60#	enter 1
61# SUMMARY
62#	set up a project-specific environment
63# PROJECT
64#	sdetools
65# SYNOPSIS
66#	enter project
67#	exit
68# DESCRIPTION
69#	The \fIenter\fR command sets up an environment that makes
70#	it easy to access \fIproject\fR-specific programs and files.
71#
72#	\fIenter\fP consults a file with environment information
73#	($HOME/.\fIproject\fR, Bourne-shell syntax) and invokes 
74#	a new command shell of the same type as the login shell.
75#	Typically, project environment files are maintained and 
76#	given out by the project administrator.
77#
78#	In order to leave the project environment use the \fIexit\fP 
79#	command or type a control-d;
80#	the details may depend on the type of login shell involved.
81#
82#	As a minimum, the environment file should set an environment
83#	variable with the same name as the \fIproject\fP. The variable 
84#	name can be either be identical to \fIproject\fP or in upper case.
85#	For consistency, \fIenter\fP will set both variables to the same value.
86# EXAMPLE
87# .fi
88# .ad
89#	In this example, 
90#	all files pertaining to a project \fIfoobar\fR are located under the
91#	directory \fI/usr/foo/bar/foobar\fR. For example, there
92#	are subdirectories
93#	\fI/usr/foo/bar/foobar/man\fR with manual pages, 
94#	\fI/usr/foo/bar/foobar/bin\fR with executable 
95#	programs, other directories for object libraries and include files, 
96#	and so on.
97#
98#	In order to enter a project \fIfoobar\fR, the command
99# .PP
100# .ti +5
101# .ft C
102#	enter foobar
103# .ft 
104# .PP
105#	consults a file \fI.foobar\fR (in the user\'s home directory) 
106#	with contents:
107# .PP
108# .ft C
109# .nf
110# .in +5
111#	export FOOBAR;	FOOBAR=/usr/foo/bar/foobar
112#	export PATH;	PATH=$PATH:$FOOBAR/bin
113#	export MANPATH;	MANPATH=$MANPATH:$FOOBAR/man
114# .ft 
115# .fi
116# .PP
117#	The second line automatically makes all project-specific 
118#	executable programs accessible. The third line makes it possible 
119#	to use the standard UNIX \fIman\fR command for retrieval of 
120#	project-specific manual pages. The \fIenter\fR command
121#	makes sure that both the \fIfoobar\fR and \fIFOOBAR\fR
122#	environment variables are set to the same value.
123# COMMANDS
124#	sh(1), echo(1), test(1), tr(1), login shell
125# FILES
126#	$HOME/.\fIproject\fR
127# ENVIRONMENT VARIABLES
128#	SHELL, login shell
129#	HOME, login directory
130#	PATH, search path for commands
131#	MANPATH, search path for the \fIman\fR command.
132# BUGS
133#	Name clashes may occur if people have entered several projects
134#	at the same time. This can be avoided by using unique project names,
135#	which is a good idea anyway.
136# AUTHOR(S)
137#	W.Z. Venema
138#	Eindhoven University of Technology
139#	Department of Mathematics and Computer Science
140#	Den Dolech 2, P.O. Box 513, 5600 MB Eindhoven, The Netherlands
141# CREATION DATE
142#	Tue Apr 19 15:35:41 MET DST 1988
143# STATUS
144#	enter.sh 1.5 11/4/89 15:56:03 (draft)
145#--
146