11# -*- coding: UTF-8 -*-
22
3+ from dbcookbook .categories import resolvecategories
4+ from dbcookbook .env import initenv
5+ from dbcookbook .formats import html , fo
6+ from dbcookbook .log import logger
7+ from dbcookbook .zip import createzip
8+
9+
10+ def func_html (parserobj , args ):
11+ logger .debug ("-- Create HTML with %s --" % args )
12+ initenv (parserobj , args )
13+ resolvecategories (parserobj , args )
14+ result = html (parserobj , args )
15+ if args .archive :
16+ result = createzip (parserobj , args )
17+ else :
18+ logger .info ("Skipping compressed archive creation" )
19+ return result
20+
21+
22+ def func_pdf (parserobj , args ):
23+ logger .debug ("-- Create PDF with %s --" , args )
24+ initenv (parserobj , args )
25+ resolvecategories (parserobj , args )
26+ return fo (parserobj , args )
27+
328
429def parsecommandline ():
530 """Parses commandline and returns parser and parsed arguments
@@ -9,9 +34,15 @@ def parsecommandline():
934 import argparse
1035 from .config import __version__ , __author__ , LOGFILE , MAINFILE
1136
37+ mainfile = dict (help = "Use main XML file (default: %(default)r)" ,
38+ default = MAINFILE ,
39+ nargs = '?' ,
40+ )
1241 parser = argparse .ArgumentParser (
1342 description = 'Transforms an DocBook XML file into a target format' ,
1443 )
44+ # Subparsers
45+ sp = parser .add_subparsers (dest = 'subcmd' , help = 'sub-command help' )
1546
1647 parser .add_argument ('--version' ,
1748 action = 'version' ,
@@ -60,27 +91,51 @@ def parsecommandline():
6091 type = int ,
6192 default = 1 ,
6293 )
63- parser .add_argument ('-A' , '--archive' ,
64- help = "Create compressed files of the HTML build (default: %(default)s)" ,
65- action = 'store_true' ,
66- default = False ,
67- )
68- parser .add_argument ('mainfile' ,
69- help = "Use main XML file (default: %(default)s)" ,
70- default = MAINFILE ,
71- nargs = '?' ,
72- )
94+
7395 # Should go away as soon as the script is stable
7496 parser .add_argument ('--test' ,
7597 help = "Just for testing" ,
7698 action = 'store_true' ,
7799 default = False ,
78100 )
79-
101+
102+ # HTML Subparser
103+ htmlsub = sp .add_parser ('html' ,
104+ help = 'Generate HTML' )
105+ # sp.set_defaults(subcommand=None)
106+ htmlsub .set_defaults (func = func_html )
107+ htmlsub .add_argument ('-A' , '--archive' ,
108+ help = ("Create compressed files of the HTML build "
109+ "(default: %(default)s)" ),
110+ action = 'store_true' ,
111+ default = False ,
112+ )
113+ htmlsub .add_argument ('mainfile' , ** mainfile )
114+
115+ # FO Subparser
116+ fosub = sp .add_parser ('pdf' ,
117+ help = 'Generate PDF from FO' )
118+ fosub .set_defaults (func = func_pdf )
119+ fosub .add_argument ('-f' , '--formatter' ,
120+ choices = ('fop' , 'xep' ), # axf
121+ default = 'fop' ,
122+ help = 'Format the FO with formatter (default %(default)r)' ,
123+ )
124+ fosub .add_argument ('-o' , '--output' ,
125+ # required=False,
126+ help = "Save result PDF in OUTPUT"
127+ )
128+ fosub .add_argument ('--opts' ,
129+ help = ("Pass special options to formatter; "
130+ "keep in mind to quote it correctly" )
131+ )
132+ fosub .add_argument ('mainfile' , ** mainfile )
133+
134+
80135 args = parser .parse_args ()
81-
136+
82137 if args .jobs < 0 :
83138 parser .error ("argument -j/--job: negative int value: {}. "
84139 "Job values have to be positive." .format (args .jobs ))
85-
140+
86141 return parser , args
0 commit comments