- From: SVG Working Group repository <cam+svgwgrepo@mcc.id.au>
- Date: Thu, 04 Apr 2013 22:57:47 -0700
- To: public-svg-wg@w3.org
Move directories-to-copy from build.pl to publish.xml.
diffstat:
build.py | 25 ++++++++++++-------------
publish/config.js | 7 +++++++
publish/publish.js | 13 ++++++++++++-
3 files changed, 31 insertions(+), 14 deletions(-)
diffs (204 lines):
diff --git a/build.py b/build.py
--- a/build.py
+++ b/build.py
@@ -5,29 +5,19 @@
# Note that we have to change directory below to make sure that build output
# goes in the 'build' directory, not in the 'master' directory. For that
# reason it's important that we use absolute paths!
'''
'''
-# It would be good if "tocopy" list could be extracted from
-# publish.xml instead of being hard coded here.
-
-tocopy = """
- style
- images
- examples
-""".split()
-
-
-
import os, sys, signal, commands
from os.path import isfile, abspath, getmtime, exists, join, normpath
+from xml.dom import minidom
import shutil
def exit(code, *message):
if len(message):
if code == 0:
print message[0]
else:
sys.stderr.write(message[0] + '\n')
@@ -110,27 +100,36 @@ if len(sys.argv) == 2 and sys.argv[1] ==
for file in files[:]:
file = join(parent, file)
if file != readme:
os.remove(file)
for dir in dirs[:]:
os.rmdir(join(parent, dir))
sys.exit(0)
-# Get all the pages from publish.xml:
+# Get all the pages and resources from publish.xml:
os.chdir(master_dir)
status, output = getstatusoutput("node \"" +
native_path(join(tools_dir, "publish/publish.js")) + "\" --list-pages")
os.chdir(repo_dir)
if status != 0:
exit(1, 'FAIL: could not get list of specification pages')
all = output.split()
+os.chdir(master_dir)
+status, output = getstatusoutput("node \"" +
+ native_path(join(tools_dir, "publish/publish.js")) + "\" --list-resources")
+os.chdir(repo_dir)
+if status != 0:
+ exit(1, 'FAIL: could not get list of resources')
+
+resources = output.split()
+
# Build chapters as required:
deps = [
join(master_dir, "publish.xml"),
join(master_dir, "definitions.xml"),
]
for filename in os.listdir(publishjs_dir):
path = join(publishjs_dir, filename)
@@ -181,17 +180,17 @@ else:
if buildSinglePage:
os.chdir(master_dir)
run("node \"" +
native_path(join(tools_dir, join("publish","publish.js"))) +
"\" --build-single-page")
os.chdir(repo_dir) # chdir back
# Copy over anything else that needs to be copied to 'publish':
-for f in tocopy:
+for f in resources:
tocopypath = join(master_dir, f)
if os.path.exists(tocopypath):
copyto = os.path.join(publish_dir,os.path.basename(tocopypath))
shutil.rmtree(copyto, ignore_errors=True)
shutil.copytree(tocopypath, copyto)
# Done:
diff --git a/publish/config.js b/publish/config.js
--- a/publish/config.js
+++ b/publish/config.js
@@ -142,16 +142,23 @@ function Config(filename) {
var definitionsFilenamesAndBases = [];
for (var n = root.firstChild; n; n = n.nextSibling) {
if (n.nodeName == 'definitions') {
definitionsFilenamesAndBases.push([n.getAttribute('href'), n.getAttribute('base') || null]);
}
}
this.definitions = definitions.load(definitionsFilenamesAndBases.reverse());
+ this.resources = [];
+ for (var n = root.firstChild; n; n = n.nextSibling) {
+ if (n.nodeName == 'resource') {
+ this.resources.push(n.getAttribute('href'));
+ }
+ }
+
this.interfacesFile = attr(root, 'interfaces', 'idl');
this.pages = { };
this.pageOrder = [];
var chapter = 1, appendix = 1;
for (var n = root.firstChild; n; n = n.nextSibling) {
if (n.nodeType != 1) continue;
var name = n.getAttribute('name');
diff --git a/publish/publish.js b/publish/publish.js
--- a/publish/publish.js
+++ b/publish/publish.js
@@ -7,30 +7,35 @@ var config = require('./config.js'),
var conf;
function syntax() {
console.error('Usage: node publish.js options');
console.error('');
console.error('Options:');
console.error(' --list-pages Print the names of all pages of the specification.');
+ console.error(' --list-resources Print the names of all resource files/directories');
+ console.error(' to be copied to the publish directory.');
console.error(' --build [PAGE ...] Builds the specified pages, or all pages if');
console.error(' none specified.');
console.error(' --build-single-page Builds the single page version of the specification.');
console.error(' --local-style Link to local W3C style sheets rather than w3.org.');
console.error(' --help Show this message.');
}
function parseOptions() {
var opts = { rest: [] };
for (var i = 2; i < process.argv.length; i++) {
switch (process.argv[i]) {
case '--list-pages':
opts.listPages = true;
break;
+ case '--list-resources':
+ opts.listResources = true;
+ break;
case '--build':
opts.build = true;
break;
case '--build-single-page':
opts.buildSinglePage = true;
break;
case '--local-style':
opts.localStyle = true;
@@ -48,16 +53,20 @@ function parseOptions() {
}
return opts;
}
function listPages() {
console.log(conf.pageOrder.join('\n'));
}
+function listResources() {
+ console.log(conf.resources.join('\n'));
+}
+
function checkAllPagesValid(pages) {
for (var i = 0; i < pages.length; i++) {
if (!conf.pages[pages[i]]) {
var invalid = [pages[i]];
while (++i < pages.length) {
if (!conf.pages[pages[i]]) {
invalid.push(pages[i]);
}
@@ -188,22 +197,24 @@ function buildSinglePage() {
if (foundMathjax) {
head.appendChild(utils.parse('<script src="style/load-mathjax.js"></script>'));
}
fs.writeFileSync(outputFilename, doc.toString());
}
var opts = parseOptions();
-if (opts.help || (!!opts.listPages + !!opts.build + !!opts.buildSinglePage) != 1) {
+if (opts.help || (!!opts.listPages + !!opts.listResources + !!opts.build + !!opts.buildSinglePage) != 1) {
syntax();
process.exit(opts.help ? 0 : 1);
} else {
conf = config.load('publish.xml');
conf.localStyleSheets = opts.localStyle;
if (opts.listPages) {
listPages();
+ } else if (opts.listResources) {
+ listResources();
} else if (opts.build) {
buildPages(opts.rest);
} else if (opts.buildSinglePage) {
buildSinglePage();
}
}
Received on Friday, 5 April 2013 07:34:18 UTC