summaryrefslogtreecommitdiffstats
path: root/wscript
diff options
context:
space:
mode:
authorHanoh Haim <hhaim@cisco.com>2015-06-25 10:51:15 +0300
committerHanoh Haim <hhaim@cisco.com>2015-06-25 10:51:15 +0300
commitef209c347bfb99ebe03a0ff2c7947a6ebbe03baf (patch)
tree51a72c0df7a8fd5d2feba6a3126d71e6cba6a34c /wscript
first public version
Diffstat (limited to 'wscript')
-rwxr-xr-xwscript180
1 files changed, 180 insertions, 0 deletions
diff --git a/wscript b/wscript
new file mode 100755
index 00000000..b4fe280c
--- /dev/null
+++ b/wscript
@@ -0,0 +1,180 @@
+#! /usr/bin/env python
+# encoding: utf-8
+# hhaim, 2014 (IL) base on WAF book
+
+"""
+call 'waf --targets=waf.pdf' or use 'waf list' to see the targets available
+"""
+
+VERSION='0.0.1'
+APPNAME='wafdocs'
+
+import os, re, shutil
+
+
+top = '.'
+out = 'build'
+
+re_xi = re.compile('''^(include|image)::([^.]*.(asciidoc|\\{PIC\\}))\[''', re.M)
+def ascii_doc_scan(self):
+ p = self.inputs[0].parent
+ node_lst = [self.inputs[0]]
+ seen = []
+ depnodes = []
+ while node_lst:
+ nd = node_lst.pop(0)
+ if nd in seen: continue
+ seen.append(nd)
+
+ code = nd.read()
+ for m in re_xi.finditer(code):
+ name = m.group(2)
+ if m.group(3) == '{PIC}':
+
+ ext = '.eps'
+ if self.generator.rule.rfind('A2X') > 0:
+ ext = '.png'
+
+ k = p.find_resource(name.replace('{PIC}', ext))
+ if k:
+ depnodes.append(k)
+ else:
+ k = p.find_resource(name)
+ if k:
+ depnodes.append(k)
+ node_lst.append(k)
+ return [depnodes, ()]
+
+
+
+import re
+def scansize(self):
+ name = 'image::%s\\{PIC\\}\\[.*,(width|height)=(\\d+)' % self.inputs[0].name[:-4]
+ re_src = re.compile(name)
+ lst = self.inputs[0].parent.get_src().ant_glob('*.txt')
+ for x in lst:
+ m = re_src.search(x.read())
+ if m:
+ val = str(int(1.6 * int(m.group(2))))
+ if m.group(1) == 'width':
+ w = val
+ h = "800"
+ else:
+ w = "800"
+ h = val
+
+ ext = self.inputs[0].name[-3:]
+ if ext == 'eps':
+ code = '-geometry %sx%s' % (w, h)
+ elif ext == 'dia':
+ if m.group(1) == 'width':
+ h = ''
+ else:
+ w = ''
+ code = '--size %sx%s' % (w, h)
+ else:
+ code = '-Gsize="%s,%s"' % (w, h)
+ break
+ else:
+ return ([], '')
+
+ return ([], code)
+
+def options(opt):
+ opt.add_option('--exe', action='store_true', default=False, help='Execute the program after it is compiled')
+
+def configure(conf):
+ conf.find_program('asciidoc', path='/usr/local/bin/', var='ASCIIDOC')
+ pass;
+
+def convert_to_pdf(task):
+ input_file = task.outputs[0].abspath()
+ out_dir = task.outputs[0].parent.get_bld().abspath()
+ os.system('a2x --no-xmllint -v -f pdf -d article %s -D %s ' %(task.inputs[0].abspath(),out_dir ) )
+ return (0)
+
+def convert_to_pdf_book(task):
+ input_file = task.outputs[0].abspath()
+ out_dir = task.outputs[0].parent.get_bld().abspath()
+ os.system('a2x --no-xmllint -v -f pdf -d book %s -D %s ' %(task.inputs[0].abspath(),out_dir ) )
+ return (0)
+
+
+def ensure_dir(f):
+ if not os.path.exists(f):
+ os.makedirs(f)
+
+
+def my_copy(task):
+ input_file=task.outputs[0].abspath()
+ out_dir=task.outputs[0].parent.get_bld().abspath()
+ ensure_dir(out_dir)
+ shutil.copy2(input_file, out_dir+ os.sep+task.outputs[0].name)
+ return (0)
+
+
+def do_visio(bld):
+ for x in bld.path.ant_glob('visio\\*.vsd'):
+ tg = bld(rule='${VIS} -i ${SRC} -o ${TGT} ', source=x, target=x.change_ext('.png'))
+
+def build(bld):
+ bld(rule=my_copy, target='symbols.lang')
+
+ for x in bld.path.ant_glob('images\\**\**.png'):
+ bld(rule=my_copy, target=x)
+ bld.add_group()
+
+ for x in bld.path.ant_glob('video\\**\**.mp4'):
+ bld(rule=my_copy, target=x)
+ bld.add_group()
+
+
+ for x in bld.path.ant_glob('images\\**\**.jpg'):
+ bld(rule=my_copy, target=x)
+ bld.add_group()
+
+ bld(rule=my_copy, target='my_chart.js')
+
+ bld.add_group() # separator, the documents may require any of the pictures from above
+
+ bld(rule='${ASCIIDOC} -b deckjs -o ${TGT} ${SRC[0].abspath()}',
+ source='trex_config.asciidoc ', target='trex_config_guide.html', scan=ascii_doc_scan)
+
+
+ bld(rule='${ASCIIDOC} -b deckjs -o ${TGT} ${SRC[0].abspath()}',
+ source='trex_preso.asciidoc ', target='trex_preso.html', scan=ascii_doc_scan)
+
+ bld(rule='${ASCIIDOC} -a stylesheet=${SRC[1].abspath()} -a icons=true -a max-width=55em -o ${TGT} ${SRC[0].abspath()}',
+ source='release_notes.asciidoc waf.css', target='release_notes.html', scan=ascii_doc_scan)
+
+
+ bld(rule='${ASCIIDOC} -a docinfo -a stylesheet=${SRC[1].abspath()} -a icons=true -a toc2 -a max-width=55em -d book -o ${TGT} ${SRC[0].abspath()}',
+ source='trex_book.asciidoc waf.css', target='trex_manual.html', scan=ascii_doc_scan)
+
+ bld(rule=convert_to_pdf_book,
+ source='trex_book.asciidoc waf.css', target='trex_book.pdf', scan=ascii_doc_scan)
+
+
+ bld(rule=convert_to_pdf_book,
+ source='trex_vm_manual.asciidoc waf.css', target='trex_vm_manual.pdf', scan=ascii_doc_scan)
+
+ bld(rule=convert_to_pdf_book,
+ source='trex_control_plane_peek.asciidoc waf.css', target='trex_control_plane_peek.pdf', scan=ascii_doc_scan)
+
+ bld(rule=convert_to_pdf_book,
+ source='trex_control_plane_design_phase1.asciidoc waf.css', target='trex_control_plane_design_phase1.pdf', scan=ascii_doc_scan)
+
+ bld(rule='${ASCIIDOC} -a stylesheet=${SRC[1].abspath()} -a icons=true -a toc2 -a max-width=55em -o ${TGT} ${SRC[0].abspath()}',
+ source='trex_vm_manual.asciidoc waf.css', target='trex_vm_manual.html', scan=ascii_doc_scan)
+
+ bld(rule='${ASCIIDOC} -a stylesheet=${SRC[1].abspath()} -a icons=true -a toc2 -a max-width=55em -o ${TGT} ${SRC[0].abspath()}',
+ source='trex_control_plane_design_phase1.asciidoc waf.css', target='trex_control_plane_design_phase1.html', scan=ascii_doc_scan)
+
+ bld(rule='${ASCIIDOC} -a stylesheet=${SRC[1].abspath()} -a icons=true -a toc2 -a max-width=55em -o ${TGT} ${SRC[0].abspath()}',
+ source='trex_control_plane_peek.asciidoc waf.css', target='trex_control_plane_peek.html', scan=ascii_doc_scan)
+
+
+
+
+
+