Salome HOME
8e4980be6be5a34623adfeb828c6dfebe457ba77
[tools/eficas.git] / Aster / Cata / cataSTA9 / SD / utilsd.py
1 #@ MODIF utilsd SD  DATE 10/09/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.2.6.3.4.2 2008-10-10 13:32:10 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       print msg
50       raise ImportError, "impossible d'importer la SD '%s'" % nomsd
51    return klass
52
53 # -----------------------------------------------------------------------------
54 def tree(nom, *args):
55    """Retourne l'arbre des sd en arguments
56    """
57    l = []
58    for i, sd in enumerate(args):
59       if len(args) > 1 and i > 0:
60          l.append('-'*80)
61       sd_class = import_sd(sd)
62       tmpobj = sd_class(nomj=nom)
63       l.append(tmpobj.dump())
64    return os.linesep.join(l)
65
66 # -----------------------------------------------------------------------------
67 # -----------------------------------------------------------------------------
68 if __name__ == '__main__':
69    # command arguments parser
70    parser = OptionParser(usage=__doc__)
71    parser.add_option('-t', '--tree', dest='tree',
72          action='store_true', default=False,
73          help="affiche une SD sous forme d'arbre")
74    parser.add_option('--nom', dest='nom',
75          action='store', default='^'*8,
76          help="nom du concept dans les représentations")
77    parser.add_option('-a', '--all', dest='all',
78          action='store_true', default=False,
79          help="construit la liste des SD à partir des fichiers 'sd_*.py' trouvés")
80    
81    opts, l_sd = parser.parse_args()
82    if opts.all:
83       l_fich = glob(os.path.join(bibpyt, 'SD', 'sd_*.py'))
84       l_sd = [os.path.splitext(os.path.basename(f))[0] for f in l_fich]
85    
86    if len(l_sd) == 0:
87       parser.error('quelle(s) structure(s) de données ?')
88
89    if opts.tree:
90       print tree(opts.nom, *l_sd)
91