mirror of
https://git.rtems.org/rtems-docs/
synced 2025-05-14 20:29:22 +08:00
waf: Add support to build PlantUML and Ditaa images.
This commit is contained in:
parent
bb13624065
commit
21c1a4492a
17
README.txt
17
README.txt
@ -115,6 +115,16 @@ Single HTML:
|
|||||||
# pkg install npm
|
# pkg install npm
|
||||||
# npm install -g inliner
|
# npm install -g inliner
|
||||||
|
|
||||||
|
Plant UML:
|
||||||
|
|
||||||
|
Install NPM as shown in Single HTML then:
|
||||||
|
|
||||||
|
# npm install -g node-plantuml
|
||||||
|
|
||||||
|
Ditaa:
|
||||||
|
|
||||||
|
# pkg install ditaa
|
||||||
|
|
||||||
CentOS 6 and 7
|
CentOS 6 and 7
|
||||||
~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
@ -151,10 +161,15 @@ Single HTML:
|
|||||||
NOTE: npm appears to be part of the EPEL repository for RHEL and CentOS.
|
NOTE: npm appears to be part of the EPEL repository for RHEL and CentOS.
|
||||||
You may have to add that repository to your configuration.
|
You may have to add that repository to your configuration.
|
||||||
|
|
||||||
|
|
||||||
# yum install npm
|
# yum install npm
|
||||||
# npm install -g inliner
|
# npm install -g inliner
|
||||||
|
|
||||||
|
Plant UML:
|
||||||
|
|
||||||
|
Install NPM as shown in Single HTML then:
|
||||||
|
|
||||||
|
# npm install -g node-plantuml
|
||||||
|
|
||||||
Spell check:
|
Spell check:
|
||||||
|
|
||||||
# yum install aspell
|
# yum install aspell
|
||||||
|
@ -257,9 +257,37 @@ def cmd_configure(ctx):
|
|||||||
ctx.env.BUILD_SINGLEHTML = 'yes'
|
ctx.env.BUILD_SINGLEHTML = 'yes'
|
||||||
ctx.find_program("inliner", var = "BIN_INLINER", mandatory = False)
|
ctx.find_program("inliner", var = "BIN_INLINER", mandatory = False)
|
||||||
if not ctx.env.BIN_INLINER:
|
if not ctx.env.BIN_INLINER:
|
||||||
ctx.fatal("Node inliner is required install with 'npm install -g inliner' " +
|
ctx.fatal("Node.js inliner is required install with 'npm install -g inliner' " +
|
||||||
"(https://github.com/remy/inliner)")
|
"(https://github.com/remy/inliner)")
|
||||||
|
|
||||||
|
ctx.envBUILD_PLANTUML = 'no'
|
||||||
|
if ctx.options.plantuml:
|
||||||
|
check_plantuml = not ctx.env.BIN_PUML
|
||||||
|
if check_plantuml:
|
||||||
|
ctx.env.BUILD_PLANTUML = 'yes'
|
||||||
|
ctx.find_program("puml", var = "BIN_PUML", mandatory = False)
|
||||||
|
if not ctx.env.BIN_PUML:
|
||||||
|
ctx.fatal("Node.js puml is required install with 'npm install -g node-plantuml' " +
|
||||||
|
"(https://www.npmjs.com/package/node-plantuml)")
|
||||||
|
|
||||||
|
ctx.envBUILD_DITAA = 'no'
|
||||||
|
if ctx.options.ditaa:
|
||||||
|
#
|
||||||
|
# We use DITAA via PlantUML
|
||||||
|
#
|
||||||
|
if not ctx.env.BIN_PUML:
|
||||||
|
ctx.find_program("puml", var = "BIN_PUML", mandatory = False)
|
||||||
|
if not ctx.env.BIN_PUML:
|
||||||
|
ctx.fatal("DITAA uses PlantUML; " +
|
||||||
|
"Node.js puml is required install with 'npm install -g node-plantuml' " +
|
||||||
|
"(https://www.npmjs.com/package/node-plantuml)")
|
||||||
|
check_ditaa = not ctx.env.BIN_DITAA
|
||||||
|
if check_ditaa:
|
||||||
|
ctx.env.BUILD_DITAA = 'yes'
|
||||||
|
ctx.find_program("ditaa", var = "BIN_DITAA", mandatory = False)
|
||||||
|
if not ctx.env.BIN_DITAA:
|
||||||
|
ctx.fatal("DITAA not found, plase install")
|
||||||
|
|
||||||
def doc_pdf(ctx, source_dir, conf_dir, extra_source):
|
def doc_pdf(ctx, source_dir, conf_dir, extra_source):
|
||||||
buildtype = 'latex'
|
buildtype = 'latex'
|
||||||
build_dir, output_node, output_dir, doctrees = build_dir_setup(ctx, buildtype)
|
build_dir, output_node, output_dir, doctrees = build_dir_setup(ctx, buildtype)
|
||||||
@ -353,6 +381,30 @@ def doc_html(ctx, source_dir, conf_dir, extra_source):
|
|||||||
relative_trick = True,
|
relative_trick = True,
|
||||||
quiet = True)
|
quiet = True)
|
||||||
|
|
||||||
|
def images_plantuml(ctx, source_dir, conf_dir, ext):
|
||||||
|
#
|
||||||
|
# Use a run command to handle stdout and stderr output from puml.
|
||||||
|
#
|
||||||
|
def run(task):
|
||||||
|
src = task.inputs[0].abspath()
|
||||||
|
tgt = task.outputs[0].abspath()
|
||||||
|
cmd = '%s generate %s -o %s' % (task.env.BIN_PUML[0], src, tgt)
|
||||||
|
so = open(tgt + '.out', 'w')
|
||||||
|
r = task.exec_command(cmd, stdout = so, stderr = so)
|
||||||
|
so.close()
|
||||||
|
return r
|
||||||
|
|
||||||
|
for src in ctx.path.ant_glob('**/*' + ext):
|
||||||
|
tgt = src.abspath()[: - len(ext)] + '.png'
|
||||||
|
ctx(
|
||||||
|
rule = run,
|
||||||
|
inliner = ctx.env.BIN_PUML,
|
||||||
|
source = src,
|
||||||
|
target = tgt,
|
||||||
|
install_path = None
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def cmd_build(ctx, extra_source = []):
|
def cmd_build(ctx, extra_source = []):
|
||||||
conf_dir = ctx.path.get_src()
|
conf_dir = ctx.path.get_src()
|
||||||
source_dir = ctx.path.get_src()
|
source_dir = ctx.path.get_src()
|
||||||
@ -365,6 +417,14 @@ def cmd_build(ctx, extra_source = []):
|
|||||||
|
|
||||||
doc_html(ctx, source_dir, conf_dir, extra_source)
|
doc_html(ctx, source_dir, conf_dir, extra_source)
|
||||||
|
|
||||||
|
def cmd_build_images(ctx):
|
||||||
|
conf_dir = ctx.path.get_src()
|
||||||
|
source_dir = ctx.path.get_src()
|
||||||
|
if ctx.env.BUILD_PLANTUML == 'yes':
|
||||||
|
images_plantuml(ctx, source_dir, conf_dir, '.puml')
|
||||||
|
if ctx.env.BUILD_DITAA == 'yes':
|
||||||
|
images_plantuml(ctx, source_dir, conf_dir, '.ditaa')
|
||||||
|
|
||||||
def cmd_options(ctx):
|
def cmd_options(ctx):
|
||||||
ctx.add_option('--disable-extra-fonts',
|
ctx.add_option('--disable-extra-fonts',
|
||||||
action = 'store_true',
|
action = 'store_true',
|
||||||
@ -382,6 +442,14 @@ def cmd_options(ctx):
|
|||||||
action = 'store_true',
|
action = 'store_true',
|
||||||
default = False,
|
default = False,
|
||||||
help = "Build Single HTML file, requires Node Inliner")
|
help = "Build Single HTML file, requires Node Inliner")
|
||||||
|
ctx.add_option('--plantuml',
|
||||||
|
action = 'store_true',
|
||||||
|
default = False,
|
||||||
|
help = "Build PlantUML images from source, need puml from npm")
|
||||||
|
ctx.add_option('--ditaa',
|
||||||
|
action = 'store_true',
|
||||||
|
default = False,
|
||||||
|
help = "Build DITAA images using PlantUML from source, need ditaa and puml")
|
||||||
|
|
||||||
def cmd_options_path(ctx):
|
def cmd_options_path(ctx):
|
||||||
cmd_options(ctx)
|
cmd_options(ctx)
|
||||||
|
1
images/.gitignore
vendored
Normal file
1
images/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
*.out
|
7
images/wscript
Normal file
7
images/wscript
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
from sys import path
|
||||||
|
from os.path import abspath
|
||||||
|
path.append(abspath('../common/'))
|
||||||
|
|
||||||
|
from waf import cmd_configure as configure
|
||||||
|
from waf import cmd_build_images as build
|
||||||
|
from waf import cmd_options as options
|
6
wscript
6
wscript
@ -53,6 +53,12 @@ def coverpage_js(ctx):
|
|||||||
o.write(js.replace('@CATALOGUE', xml))
|
o.write(js.replace('@CATALOGUE', xml))
|
||||||
|
|
||||||
def build(ctx):
|
def build(ctx):
|
||||||
|
#
|
||||||
|
# Generate any PlantUML images if enabled.
|
||||||
|
#
|
||||||
|
ctx.recurse('images')
|
||||||
|
ctx.add_group('images')
|
||||||
|
|
||||||
for b in building:
|
for b in building:
|
||||||
ctx.recurse(b)
|
ctx.recurse(b)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user