-# 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)
# ---
-#
+
## @package salome_utils
# \brief Set of utility functions used by SALOME python scripts.
-#
-#
#
# Exported functions
#
+
__all__ = [
'getORBcfgInfo',
'getHostFromORBcfg',
'getPortNumber',
'getTmpDir',
'generateFileName',
+ 'makeTmpDir',
+ 'uniteFiles',
]
# ---
# ---
-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:
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
# ---
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 )