Salome HOME
Remove display in console of information messages related to new salome.py launcher
[modules/kernel.git] / bin / appliskel / runSession
index 2ab579ce6d80091da99e6d26e688f40944089969..c6449dc248d8dc0af61fc3fde222e3f629487647 100755 (executable)
 #!/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