1 # CONFIGURATION MANAGEMENT OF EDF VERSION
2 # ======================================================================
3 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
4 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
5 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
6 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
7 # (AT YOUR OPTION) ANY LATER VERSION.
9 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
10 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
11 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
12 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
14 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
15 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
16 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
19 # ======================================================================
21 Ce module contient des utilitaires divers
28 def substract_list(liste1,liste2):
30 Enlève tous les éléments de liste2 présents dans liste1 et retourne liste1
41 Détermine sur quelle plate-forme s'exécute Eficas et recherche
42 le répertoire de l'utilisateur /$home/Eficas_install
44 if os.name not in ('posix','nt'):
45 print "Système non reconnu par Eficas"
46 print "Prévenir la maintenance"
50 drive = os.environ['HOMEDRIVE']
51 nom_user = os.environ['USERNAME']
52 rep_user_eficas = drive+'\\'+nom_user+'\\'+'Eficas_install'
54 rep_user_eficas = os.path.join('C:','Eficas_install')
56 rep_user_eficas = os.path.join(os.environ['HOME'],'Eficas_install')
57 if os.path.exists(rep_user_eficas):
58 if os.path.isfile(rep_user_eficas) :
59 print "Un fichier de nom %s existe déjà : impossible de créer un répertoire de même nom" %rep_user_eficas
63 os.mkdir(rep_user_eficas)
65 print "Création du répertoire %s impossible\n Vérifiez vos droits d'accès" %rep_user_eficas
66 return rep_user_eficas
70 ouvre le fichier file et retourne son contenu
81 def save_in_file(file,text):
83 crée le fichier file (ou l'écrase s'il existe) et écrit text dedans
84 retourne 1 si OK 0 sinon
87 if type(text) == types.StringType:
90 # Probablement Unicode
91 f=codecs.open(file,'w','iso-8859-1')
98 def extension_fichier(pathAndFile):
99 """ Return ext if path/filename.ext is given """
100 return os.path.splitext(pathAndFile)[1][1:]
102 def stripPath(pathAndFile):
103 """ Return filename.ext if path/filename.ext is given """
104 return os.path.split(pathAndFile)[1]
106 def init_rep_cata_dev(fic_cata,rep_goal):
108 Initialise le répertoire des catalogues développeurs (chemin d'accès donné
109 dans le fichier eficas.ini cad :
110 - le crée s'il n'existe pas encore
111 - copie dedans les 3 fichiers nécessaires :
112 * __init__.py (pour que ce répertoire puisse être interprété comme un package)
113 * entete.py (pour réaliser les import nécessaires à l'interprétation des catalogues)
114 * declaration_concepts.py (idem)
115 - crée le fichier cata_developpeur.py qui sera par la suite importé
118 if not os.path.isdir(rep_goal) :
120 texte_entete = get_entete_cata(fic_cata)
121 # rep_goal doit contenir les catalogues du développeur sous la forme *.capy
122 # il faut créer le catalogue développeur par concaténation de entete,declaration_concepts
123 # et de tous ces fichiers
124 cur_dir = os.getcwd()
126 l_cata_dev = glob.glob('*.capy')
127 if os.path.isfile('cata_developpeur.py') : os.remove('cata_developpeur.py')
129 # des catalogues développeurs sont effectivement présents : on crée cata_dev.py dans rep_goal
131 str = str + texte_entete+'\n'
132 for file in l_cata_dev :
133 str = str + open(file,'r').read() +'\n'
134 open('cata_developpeur.py','w+').write(str)
137 traceback.print_exc()
138 print "Impossible de transférer les fichiers requis dans :",rep_goal
140 def get_entete_cata(fic_cata):
141 """ Retrouve l'entete du catalogue """
142 l_lignes = open(fic_cata,'r').readlines()
145 for ligne in l_lignes :
146 if re.match("# debut entete",ligne) : flag = 1
147 if re.match("# fin entete",ligne) : break
148 if not flag : continue