#!/bin/bash
+# Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE
#
+# Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+# CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
# Useful shell to run executable progs or shells under Salome env
# Use it with args to run a program : runSession python -i myprog.py
# Use it without args to run an interactive shell under Salome env
-#
-# --- retrieve APPLI path, relative to $HOME
-# on sarge, "which" gives not allways the absolute path...
-
-comName=`which $0`
-aa=${comName:0:1}
-if test x$aa == x\/; then
- mycom=${comName}
-elif test x$aa == x\.; then
- mycom=${PWD}/${comName:2}
-else
- mycom=${PWD}/${comName}
-fi
-APPLI=`echo ${HOME} \`dirname $mycom\` | awk ' { print substr($2,length($1)+2) } '`
-echo $APPLI
-export APPLI
+
+###############################################
+############### IMPORTANT NOTE ################
+###############################################
+# The runConsole script is obsolete. #
+# Please consider the new salome.py launcher. #
+###############################################
+
+
+APPLI_HOME=`dirname $0`
+
+NSPORT=last
+NSHOST=localhost
+
+usage()
+{
+ echo "Connect to a SALOME session (local or remote)"
+ echo ""
+ echo "Usage: $(basename $0) [ -p PORT ] [ -m MACHINE ] [ -h ] [command]"
+ echo ""
+ echo " -p PORT : The port to connect to "
+ echo " -m MACHINE : The machine to connect to "
+ echo " -h : Print this message"
+ echo " command : The command to execute in the SALOME session"
+ echo ""
+ echo "If the command is not given a shell is opened"
+ echo "If PORT and MACHINE are not given, try to connect to the last active session on the local machine"
+ echo "If PORT and MACHINE are given, try to connect to the remote session associated with PORT on MACHINE"
+ echo "If MACHINE is not given, try to connect to the session associated to PORT on the local machine"
+ echo "If PORT is not given, try to connect to the remote session associated to port 2810 on MACHINE"
+ echo ""
+}
+
+while getopts 'm:p:h' OPTION
+ do
+ case $OPTION in
+ m)NSHOST="$OPTARG" ;;
+ p)NSPORT="$OPTARG" ;;
+ h|?) usage
+ exit 1 ;;
+ esac
+ done
+shift $(($OPTIND - 1))
+
+# --- retrieve APPLI path, relative to $HOME, set ${APPLI}
+
+export APPLI=`${APPLI_HOME}/getAppliPath.py`
# --- set the SALOME environment (prerequisites, MODULES_ROOT_DIR...)
. ${HOME}/${APPLI}/envd ${HOME}/${APPLI}
-myhost=`hostname`
-export OMNIORB_CONFIG=${HOME}/${APPLI}/.omniORB_${myhost}_last.cfg
+# --- set the OMNIORB_CONFIG file and environment relative to this run of SALOME
+# Usage: writeConfigFile PORT HOST
+function writeConfigFile
+{
+ if [ $# -ne 2 ]; then
+ echo "Usage: $0 PORT HOST"
+ return
+ fi
+ export NSPORT=$1
+ export NSHOST=$2
-# --- invoque shell with or without args
+ # Get (in bash) the configuration filename from (Python) ORBConfigFile return values
+ RETURN_VALUES=$(${KERNEL_ROOT_DIR}/bin/salome/envSalome.py python ${KERNEL_ROOT_DIR}/bin/salome/ORBConfigFile.py ${HOME}/${APPLI}/USERS ${NSHOST} ${NSPORT} with_username=${USER})
+ export OMNIORB_CONFIG=$(echo ${RETURN_VALUES} | cut -d' ' -f1)
+}
-if [ $# -ne 0 ] ; then
- ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile ${HOME}/${APPLI}/.bashrc -c "$*"
+
+if test "x${NSPORT}" == "xlast"; then
+ #PORT is not given
+ if test "x${NSHOST}" == "xlocalhost"; then
+ #MACHINE and PORT are not given
+ # --- set omniORB configuration to current session if any
+ fileOmniConfig=${HOME}/${APPLI}/USERS/.omniORB_${USER}_last.cfg
+ if [ -f $fileOmniConfig ]; then
+ export OMNIORB_CONFIG=${HOME}/${APPLI}/USERS/.omniORB_${USER}_last.cfg
+ # --- set environment variables for port and hostname of NamingService
+ export NSHOST=`${KERNEL_ROOT_DIR}/bin/salome/NSparam.py host`
+ export NSPORT=`${KERNEL_ROOT_DIR}/bin/salome/NSparam.py port`
+ fi
+ else
+ #MACHINE is given PORT is not given
+ writeConfigFile 2810 ${NSHOST}
+ fi
else
+ #PORT is given
+ if test "x${NSHOST}" == "xlocalhost"; then
+ #MACHINE is not given PORT is given
+ NSHOST=`hostname`
+ fi
+ writeConfigFile ${NSPORT} ${NSHOST}
+fi
+
+# --- invoke shell with or without args
- ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile ${HOME}/${APPLI}/.bashrc
+if [ $# -ne 0 ] ; then
+ ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py -exec $*
+else
+ ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile ${HOME}/${APPLI}/.bashrc
fi