#!/bin/bash
-# Copyright (C) 2007-2008 CEA/DEN, EDF R&D, OPEN CASCADE
+# 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
+# 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 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.
+# 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
+# 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
-#
+
+
+echo "##############################################"
+echo "############### IMPORTANT NOTE ###############"
+echo "##############################################"
+echo "# The runSession script is obsolete. #"
+echo "# Please consider the new salome.py command. #"
+echo "# More info: cedric.aguerre@edf.fr #"
+echo "##############################################"
+
+
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`
. ${HOME}/${APPLI}/envd ${HOME}/${APPLI}
-if test "x$1" == "xNSPORT"; then
- NSPORT=$2
- export NSPORT
- myhost=`hostname`
- OMNIORB_CONFIG=${HOME}/${APPLI}/USERS/.omniORB_${USER}_${myhost}_${NSPORT}.cfg
- export OMNIORB_CONFIG
- NSHOST=${myhost}
- export NSHOST
- shift 2
-else
-
- # --- set omniORB configuration to current session if any
-
- fileOmniConfig=${HOME}/${APPLI}/USERS/.omniORB_${USER}_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
- if [ -f $fileOmniConfig ]; then
- OMNIORB_CONFIG=${HOME}/${APPLI}/USERS/.omniORB_${USER}_last.cfg
- export OMNIORB_CONFIG
+ # 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)
+}
- # --- set environment variables for port and hostname of NamingService
- NSHOST=`${KERNEL_ROOT_DIR}/bin/salome/NSparam.py host`
- export NSHOST
- NSPORT=`${KERNEL_ROOT_DIR}/bin/salome/NSparam.py port`
- export NSPORT
+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
if [ $# -ne 0 ] ; then
- ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py $*
+ ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py -exec $*
else
-
- ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile ${HOME}/${APPLI}/.bashrc
+ ${KERNEL_ROOT_DIR}/bin/salome/envSalome.py /bin/bash --rcfile ${HOME}/${APPLI}/.bashrc
fi