]> SALOME platform Git repositories - tools/eficas.git/blob - Aster/Cata/cataSTA9/SD/utilsd.py
Salome HOME
97a69935ac07a278201c06a37052c6c6f9b6cf5a
[tools/eficas.git] / Aster / Cata / cataSTA9 / SD / utilsd.py
1 #@ MODIF utilsd SD  DATE 02/04/2007   AUTEUR COURTOIS M.COURTOIS 
2 # -*- coding: iso-8859-1 -*-
3 #            CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2007  EDF R&D                  WWW.CODE-ASTER.ORG
6 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY  
7 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY  
8 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR     
9 # (AT YOUR OPTION) ANY LATER VERSION.                                                  
10 #                                                                       
11 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT   
12 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF            
13 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU      
14 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.                              
15 #                                                                       
16 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE     
17 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,         
18 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.        
19 # ======================================================================
20 # RESPONSABLE COURTOIS M.COURTOIS
21
22 """
23    Utilitaire sur le catalogue des structures de données.
24 """
25
26 __revision__ = "$Id: utilsd.py,v 1.1.2.2 2007-06-08 09:15:34 pnoyret Exp $"
27
28 import sys
29 import os
30 from glob     import glob
31 from optparse import OptionParser
32
33 # ----- get bibpyt location
34 main = sys.argv[0]
35 if os.path.islink(main):
36    main = os.path.realpath(main)
37 bibpyt = os.path.normpath(os.path.join(
38       os.path.dirname(os.path.abspath(main)), os.pardir))
39 sys.path.append(bibpyt)
40
41 # -----------------------------------------------------------------------------
42 def import_sd(nomsd):
43    """Import une SD.
44    """
45    try:
46       mod = __import__('SD.%s' % nomsd, globals(), locals(), [nomsd])
47       klass = getattr(mod, nomsd)
48    except (ImportError, AttributeError), msg:
49       raise ImportError, "impossible d'importer la SD '%s'" % nomsd
50    return klass
51
52 # -----------------------------------------------------------------------------
53 def tree(nom, *args):
54    """Retourne l'arbre des sd en arguments
55    """
56    l = []
57    for i, sd in enumerate(args):
58       if len(args) > 1 and i > 0:
59          l.append('-'*80)
60       sd_class = import_sd(sd)
61       tmpobj = sd_class(nomj=nom)
62       l.append(tmpobj.info())
63    return os.linesep.join(l)
64
65 # -----------------------------------------------------------------------------
66 # -----------------------------------------------------------------------------
67 if __name__ == '__main__':
68    # command arguments parser
69    parser = OptionParser(usage=__doc__)
70    parser.add_option('-t', '--tree', dest='tree',
71          action='store_true', default=False,
72          help="affiche une SD sous forme d'arbre")
73    parser.add_option('--nom', dest='nom',
74          action='store', default='^'*8,
75          help="nom du concept dans les représentations")
76    parser.add_option('-a', '--all', dest='all',
77          action='store_true', default=False,
78          help="construit la liste des SD à partir des fichiers 'sd_*.py' trouvés")
79    
80    opts, l_sd = parser.parse_args()
81    if opts.all:
82       l_fich = glob(os.path.join(bibpyt, 'SD', 'sd_*.py'))
83       l_sd = [os.path.splitext(os.path.basename(f))[0] for f in l_fich]
84    
85    if len(l_sd) == 0:
86       parser.error('quelle(s) structure(s) de données ?')
87
88    if opts.tree:
89       print tree(opts.nom, *l_sd)
90