File: arguments.pyx

package info (click to toggle)
obitools 3.0.1~b26%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 26,756 kB
  • sloc: ansic: 24,299; python: 657; sh: 27; makefile: 21
file content (58 lines) | stat: -rwxr-xr-x 1,748 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#cython: language_level=3

'''
Created on 27 mars 2016

@author: coissac
'''

import argparse
import sys


from .command import getCommandsList

class ObiParser(argparse.ArgumentParser): 
    def error(self, message):
        sys.stderr.write('error: %s\n' % message)
        self.print_help()
        sys.exit(2)

cpdef buildArgumentParser(str configname, 
                          str softname):
    parser = ObiParser()
    
    parser.add_argument('--version',   dest='%s:version' % configname, 
                                       action='store_true', 
                                       default=False, 
                        help='Print the version of %s' % softname)

    parser.add_argument('--log',       dest='%s:log' % configname, 
                                       action='store',
                                       type=str,
                                       default=None, 
                        help='Create a logfile')


    subparsers = parser.add_subparsers(title='subcommands',
                                       description='valid subcommands',
                                       help='additional help')
    
    commands = getCommandsList()
    
    for c in commands:
        module = commands[c]
        
        if hasattr(module, "run"):
            if hasattr(module, "__title__"):
                sub = subparsers.add_parser(c,help=module.__title__)
            else:
                sub = subparsers.add_parser(c)
    
            if hasattr(module, "addOptions"):
                module.addOptions(sub)
            
            sub.set_defaults(**{'%s:module'  % configname : module})
            sub.set_defaults(**{'%s:modulename'  % configname : c})
              
    return parser