#! /bin/sh #+ # # .. program:: project_profile.sh # # .. _project_profile.sh: # # ============================================= # project_profile.sh - define POMME environment # ============================================= # # SYNOPSIS # ======== # # Online usage: # # .. code-block:: bash # # . ./project_profile.sh -d directory -i indir -o outdir -t tempdir -s saxo_dir # # In ${HOME}/.profile, add the following line: # # .. code-block:: bash # # . project_profile.sh -d directory -i indir -o outdir -t tempdir -s saxo_dir # # DESCRIPTION # =========== # # .. option:: -d # .. option:: -i # .. option:: -o # .. option:: -t # .. option:: -s # # define POMME environment # # ${PROJECT} is the base directory of tools. # # ${PROJECT_LOG} is the directory where log files will be written. # # ${PROJECT_ID} is the directory where input files must be. # # ${PROJECT_OD} is the directory where output files will be written. # # ${SAXO_DIR} is the base directory of SAXO tools. # # PATH is completed with ${PROJECT}. # # SEE ALSO # ======== # # for IDL/GDL environment : # # :ref:`project_init.pro` # :ref:`cm_project.pro` # # EXAMPLES # ======== # # For fplod, on aedon.locean-ipsl.upmc.fr: # # .. code-block:: bash # # cd /usr/home/fplod/incas/pomme/pomme_ws/ # . ./src/project_profile.sh \ # -d $(pwd) \ # -i /usr/temp/${LOGNAME}/pomme_d/ \ # -o /usr/temp/${LOGNAME}/pomme_d/ \ # -t /usr/temp/${LOGNAME}/log/ \ # -s /usr/home/fplod/SAXO_DIR/ # # For fplod on cratos.locean-ipsl.umpc.fr: # # .. code-block:: bash # # cd ${HOME}/incas/pomme/pomme_ws/ # . ./src/project_profile.sh \ # -d $(pwd) \ # -i /usr/temp/${LOGNAME}/pomme_d/ \ # -o /usr/temp/${LOGNAME}/pomme_d/ \ # -t /usr/temp/${LOGNAME}/log/ \ # -s ${HOME}/SAXO_DIR/ # # For pinsard on camelot.ipsl.polytechnique.fr or merlin15-c.climserv: # # .. code-block:: bash # # cd ${HOME}/pomme/ # . ./src/project_profile.sh \ # -d $(pwd) \ # -i /homedata/${LOGNAME}/pomme_d/ \ # -o /homedata/${LOGNAME}/pomme_d/ \ # -t /homedata/${LOGNAME}/log/ \ # -s ${HOME}/SAXO_DIR/ # # TODO # ==== # # ++ option bavarde # # ++ machine dependant # # ++ besoin de posix # # ++ pas de MANPATH defini par défaut sur cratos et cerbere # # EVOLUTIONS # ========== # # - fplod 20110426T151058Z cratos.locean-ipsl.upmc.fr (Linux) # # * add IDL and SAXO env. # * replace POMME by PROJECT # * replace zeus by cratos # # - fplod 20101118T171653Z aedon.locean-ipsl.upmc.fr (Darwin) # # * creation # #- system=$(uname) case "${system}" in AIX|IRIX64) echo " www : no specific posix checking" ;; *) set -o posix ;; esac unset system # LANG=C # set -u # # as this script might be launch in .profile, command is forced. command=project_profile.sh # usage=" Usage : ${command} -d directory -i indir -o outdir -t tempdir -s saxo_dir" # pb=0 # minargcount=10 maxargcount=10 narg=${#} # if [ ${narg} -lt ${minargcount} ] then echo "eee : not enought arguments (${narg} vs ${minargcount})" echo "${usage}" # nb : no exit because this file should be launched by login process pb=1 fi unset minargcount # if [ ${narg} -gt ${maxargcount} ] then echo "eee : too many arguments (${narg} vs ${maxargcount})" echo "${usage}" # nb : no exit because this file should be launched by login process pb=1 fi unset maxargcount unset narg # if [ ${pb} -eq 0 ] then while [ ${#} -gt 0 ] do case ${1} in -d) # directory for application choosen by user # (see svn checkout command used) directory=${2} shift ;; -i) # directory for inputs choosen by user indir=${2} shift ;; -o) # directory for outputs choosen by user outdir=${2} shift ;; -t) # directory for temporary outputs choosen by user tempdir=${2} shift ;; -s) saxo_dir=${2} shift ;; *) # other choice echo "eee : unknown option ${1}" echo "${usage}" # nb : no exit because this file should be launched # by login process ;; esac # next flag shift done unset usage fi # if [ ${pb} -eq 0 ] then # check for ${directory} if [ ! -d ${directory} ] then echo " eee : ${directory} not found" # nb : no exit because this file should be launched by login process fi # # check for permission on directory if [ ! -x ${directory} ] then echo " eee : ${directory} not reachable" # nb : no exit because this file should be launched by login process fi # PROJECT=${directory} export PROJECT unset directory # # add PROJECT tools to PATH # if not already done suppath=$(echo ${PROJECT}/src | tr -s "/") echo ${PATH} | grep -q "${suppath}:" test_path=${?} if [ ${test_path} -ne 0 ] then PATH=${suppath}:${PATH} export PATH else # option bavarde oui/non pas encore implantée ++ echo "${command} : iii : ${suppath} already in \${PATH}" fi unset test_path # # add PROJECT manuals to MANPATH # if not already done suppath=$(echo ${PROJECT}/doc/man | tr -s "/") echo ${MANPATH} | grep -q "${suppath}:" test_manpath=${?} if [ ${test_manpath} -ne 0 ] then MANPATH=${suppath}:${MANPATH} export MANPATH else # option bavarde oui/non pas encore implantée ++ echo "${command} : iii : ${suppath} already in \${MANPATH}" fi unset test_manpath unset suppath # PROJECT_LOG=${tempdir} export PROJECT_LOG unset tempdir if [ ! -d ${PROJECT_LOG} ] then mkdir -p ${PROJECT_LOG} status=${?} if [ ${status} -ne 0 ] then echo "${command} : eee : can not create \${POMME_LOG}" # nb : no exit because this file should be launched by login process else echo "${command} : iii : creation of \${PROJECT_LOG}" fi unset status fi # check for permission on PROJECT_LOG if [ ! -x ${PROJECT_LOG} ] then echo " eee : ${PROJECT_LOG} not reachable" # nb : no exit because this file should be launched by login process fi # # check for permission on PROJECT_LOG if [ ! -w ${PROJECT_LOG} ] then echo " eee : ${PROJECT_LOG} not writable" # nb : no exit because this file should reachable be launched # by login process fi # EDITOR=vi export EDITOR # # io directories PROJECT_ID=${indir} export PROJECT_ID unset indir if [ ! -d ${PROJECT_ID} ] then mkdir -p ${PROJECT_ID} echo "${command} : iii : creation of \${PROJECT_ID}" fi # check for permission on PROJECT_ID if [ ! -x ${PROJECT_ID} ] then echo " eee : ${PROJECT_ID} not reachable" # nb : no exit because this file should be launched by login process fi # PROJECT_OD=${outdir} export PROJECT_OD unset outdir if [ ! -d ${PROJECT_OD} ] then mkdir -p ${PROJECT_OD} echo "${command} : iii : creation of \${PROJECT_OD}" fi # check for permission on PROJECT_OD if [ ! -x ${PROJECT_OD} ] then echo " eee : ${PROJECT_OD} not reachable" # nb : no exit because this file should be launched by login process fi if [ ! -w ${PROJECT_OD} ] then echo " eee : ${PROJECT_OD} not writable" # nb : no exit because this file should be launched by login process fi # SAXO_DIR=${saxo_dir} export SAXO_DIR # # IDL startup IDL_STARTUP=${PROJECT}/src/project_init.pro export IDL_STARTUP fi unset pb # end unset command # nb : no exit because this file should be launched by login process