Salome HOME
- Major update for launcher:
[modules/kernel.git] / bin / salome_utils.py
index ab9c0669cce28e74af10ba2be14f93ced6d54c14..63c36ff80b015b9a8a6cad843b29cfa22d65deba 100644 (file)
@@ -1,7 +1,5 @@
-#  Copyright (C) 2007-2008  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
+#  -*- coding: iso-8859-1 -*-
+#  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
 #
 #  This library is free software; you can redistribute it and/or
 #  modify it under the terms of the GNU Lesser General Public
 #
 #  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
+
 # ---
 # File   : salome_utils.py
 # Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
 # ---
-#
-"""
-Set of utility functions used by SALOME python scripts.
-"""
+
+## @package salome_utils
+# \brief Set of utility functions used by SALOME python scripts.
 
 #
 # Exported functions
 #
+
 __all__ = [
     'getORBcfgInfo',
     'getHostFromORBcfg',
@@ -42,6 +41,8 @@ __all__ = [
     'getPortNumber',
     'getTmpDir',
     'generateFileName',
+    'makeTmpDir',
+    'uniteFiles',
     ]
 
 # ---
@@ -180,12 +181,12 @@ def getAppName():
 
 # ---
 
-def getPortNumber():
+def getPortNumber(use_default=True):
     """
     Get current naming server port number:
     1. try NSPORT environment variable
     1. if fails, try to parse config file defined by OMNIORB_CONFIG environment variable
-    2. if fails, return 2809 as default port number
+    2. if fails, return 2809 as default port number (if use_default is True) or None (id use_default is False)
     """
     import os
     try:
@@ -194,7 +195,8 @@ def getPortNumber():
         pass
     port = getPortFromORBcfg()
     if port is not None: return port
-    return 2809      # '2809' is default port number
+    if use_default: return 2809 # '2809' is default port number
+    return None
 
 # ---
 
@@ -345,3 +347,89 @@ def generateFileName( dir, prefix = None, suffix = None, extension = None,
             pass
         pass
     return os.path.normpath(name)
+
+# ---
+
+def makeTmpDir( path, mode=0777 ):
+    """
+    Make temporary directory with the specified path.
+    If the directory exists then clear its contents.
+
+    Parameters:
+    - path : absolute path to the directory to be created.
+    - mode : access mode
+    """
+    import os
+    if os.path.exists( path ):
+        import sys
+        if sys.platform == "win32":
+            os.system( "rmdir /S /Q " + '"' + path + '"' )
+            os.system( "mkdir " + '"' + path + '"' )
+        else:
+            os.system( "rm -rf " + path + "/*" )
+            pass
+        pass
+    else:
+       dirs = path.split("/")
+       shift1 = shift2 = 0
+       if not dirs[0]: shift1 = 1
+       if dirs[-1]: shift2 = 1
+       for i in range(1+shift1,len(dirs)+shift2):
+           p = "/".join(dirs[:i])
+           try:
+               os.mkdir(p, mode)
+               os.chmod(p, mode)
+           except:
+               pass
+           pass
+       pass
+    pass
+
+# ---
+
+def uniteFiles( src_file, dest_file ):
+    """
+    Unite contents of the source file with contents of the destination file
+    and put result of the uniting to the destination file.
+    If the destination file does not exist then the source file is simply
+    copied to its path.
+
+    Parameters:
+    - src_file  : absolute path to the source file
+    - dest_file : absolute path to the destination file
+    """
+    import os
+
+    if not os.path.exists( src_file ):
+        return
+        pass
+
+    if os.path.exists( dest_file ):
+        # add a symbol of new line to contents of the destination file (just in case)
+        dest = open( dest_file, 'r' )
+        dest_lines = dest.readlines()
+        dest.close()
+
+        dest_lines.append( "\n" )
+
+        dest = open( dest_file, 'w' )
+        dest.writelines( dest_lines )
+        dest.close()
+
+        import sys
+        if sys.platform == "win32":
+            command = "type " + '"' + src_file + '"' + " >> " + '"' + dest_file + '"'
+        else:
+            command = "cat " + src_file + " >> " + dest_file
+            pass
+        pass
+    else:
+        import sys
+        if sys.platform == "win32":
+            command = "copy " + '"' + src_file + '"' + " " + '"' + dest_file + '"' + " > nul"
+        else:
+            command = "cp " + src_file + " " + dest_file
+            pass
+        pass
+
+    os.system( command )