/
supertoll_python_application.py
101 lines (69 loc) · 2.85 KB
/
supertoll_python_application.py
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#! /usr/bin/python
import os
import helpers
import copyright_notes
filename_help = "Output python name(s)"
postgres_help = "Include postgres in argument parser."
template = """#! /usr/bin/python
\"\"\" $FILENAME \"\"\"
__date__ = "$DATE"
__author__ = "$AUTHOR"
__email__ = "$AUTHOREMAIL"
$INCLUDES
$ARGPARSE
$MAIN
if __name__ == "__main__" :
main( sys.argv )
"""
argparsetemplate = """def parseCmd( argv ):
parser = argparse.ArgumentParser( description = "Application description" , formatter_class = argparse.ArgumentDefaultsHelpFormatter )
addCommonArguments( parser )
addLogArguments( parser )
args = parser.parse_args( argv[1:] )
return args"""
argparsetemplatedb = """def parseCmd( argv ):
parser = argparse.ArgumentParser( description = "Application description" , formatter_class = argparse.ArgumentDefaultsHelpFormatter )
addCommonArguments( parser )
addLogArguments( parser )
addDatabaseArguments( parser )
args = parser.parse_args( argv[1:] )
return args"""
includes = """from SuperToll.Util.CmdLineArguments import *
from SuperToll.Util.InitLogging import *
import sys
import argparse
import logging
"""
main = """def main( argv ):
args = parseCmd( argv )
initLogging( args )
"""
class supertoll_python_application_template():
def __init__( self , name , description , path = [] ):
self.name = name
self.description = description
self.path = path
def register_in_arg_parser( self , subparsers ):
parser = helpers.create_subparser( self , subparsers )
parser.add_argument( "filename" , nargs = "+" , help = filename_help )
parser.add_argument( "-p" , "--postgres" , action="store_true" , help = postgres_help )
def do_work( self , args , replacements ):
print "Creating " + self.name + " template(s) ..."
path = helpers.find_path( self.path )
replacements[ "INCLUDES" ] = includes
replacements[ "MAIN" ] = main
if args.postgres :
replacements[ "INCLUDES" ] += "import psycopg2"
replacements[ "ARGPARSE" ] = argparsetemplatedb
replacements[ "MAIN" ] += """\n logging.info( "Connect to db " + args.dbname )
db = psycopg2.connect( host=args.dbhost , port=args.dbport , database=args.dbname , user=args.dbuser , password=args.dbpw )"""
if not args.postgres :
replacements[ "ARGPARSE" ] = argparsetemplate
if hasattr( args , "filename" ) :
for filename in args.filename:
p = path
p.append( filename )
f = helpers.full_join( p )
helpers.add_filename_replacements( replacements , filename )
replacements[ "FILENAME" ] = f
helpers.default_processing( filename , replacements , template )