diff --git a/Documentation/Makefile.files b/Documentation/Makefile.files index bc7377be92..088aede01f 100644 --- a/Documentation/Makefile.files +++ b/Documentation/Makefile.files @@ -63,18 +63,18 @@ examples: @rm -f /tmp/arangodb.examples python @srcdir@/Documentation/Scripts/generateExamples.py \ - --output-dir @builddir@/Documentation/Examples \ - --only-thisone "$(FILTER_EXAMPLE)" \ - --arangosh-setup @srcdir@/Documentation/Examples/setup-arangosh.js \ - @srcdir@/js/actions \ - @srcdir@/js/client \ - @srcdir@/js/common \ - @srcdir@/js/server \ - @srcdir@/js/apps/system/_api/gharial/APP \ - @srcdir@/Documentation/Books/Users \ - @srcdir@/arangod/RestHandler \ - @srcdir@/arangod/V8Server \ - > /tmp/arangosh.examples.js + --outputDir @builddir@/Documentation/Examples \ + --onlyThisone "$(FILTER_EXAMPLE)" \ + --outputFile /tmp/arangosh.examples.js \ + --arangoshSetup @srcdir@/Documentation/Examples/setup-arangosh.js \ + @srcdir@/js/actions \ + @srcdir@/js/client \ + @srcdir@/js/common \ + @srcdir@/js/server \ + @srcdir@/js/apps/system/_api/gharial/APP \ + @srcdir@/Documentation/Books/Users \ + @srcdir@/arangod/RestHandler \ + @srcdir@/arangod/V8Server if test -z "$(server.endpoint)"; then \ $(MAKE) start-server PID=$(PID) \ diff --git a/Documentation/Scripts/generateExamples.py b/Documentation/Scripts/generateExamples.py index f1fa023aeb..902aa3f654 100644 --- a/Documentation/Scripts/generateExamples.py +++ b/Documentation/Scripts/generateExamples.py @@ -126,6 +126,7 @@ OPTION_NORMAL = 0 OPTION_ARANGOSH_SETUP = 1 OPTION_OUTPUT_DIR = 2 OPTION_FILTER = 3 +OPTION_OUTPUT_FILE = 4 fstate = OPTION_NORMAL @@ -445,16 +446,18 @@ def loopDirectories(): filenames = [] for filename in argv: - if filename == "--arangosh-setup": + if filename == "--arangoshSetup": fstate = OPTION_ARANGOSH_SETUP continue - if filename == "--only-thisone": + if filename == "--onlyThisOne": fstate = OPTION_FILTER continue - if filename == "--output-dir": + if filename == "--outputDir": fstate = OPTION_OUTPUT_DIR continue - + if filename == "--outputFile": + fstate = OPTION_OUTPUT_FILE + continue if fstate == OPTION_NORMAL: if os.path.isdir(filename): for root, dirs, files in os.walk(filename): @@ -481,6 +484,10 @@ def loopDirectories(): elif fstate == OPTION_OUTPUT_DIR: fstate = OPTION_NORMAL OutputDir = filename + elif fstate == OPTION_OUTPUT_FILE: + fstate = OPTION_NORMAL + sys.stdout = open(filename, 'w') + for filename in filenames: if (filename.find("#") < 0): f = open(filename, "r") diff --git a/scripts/generateExamples b/scripts/generateExamples new file mode 120000 index 0000000000..e5224d533e --- /dev/null +++ b/scripts/generateExamples @@ -0,0 +1 @@ +run \ No newline at end of file diff --git a/scripts/generateExamples.js b/scripts/generateExamples.js new file mode 100644 index 0000000000..5fca56aa6b --- /dev/null +++ b/scripts/generateExamples.js @@ -0,0 +1,76 @@ +/*jshint globalstrict:false, unused:false */ +/*global start_pretty_print */ + +var fs = require("fs"); +var internal = require("internal"); +var executeExternalAndWait = internal.executeExternalAndWait; +var print = internal.print; + +var documentationSourceDirs = [ + fs.join(fs.makeAbsolute(''), "Documentation/Examples/setup-arangosh.js"), + fs.join(fs.makeAbsolute(''), "js/actions"), + fs.join(fs.makeAbsolute(''), "js/client"), + fs.join(fs.makeAbsolute(''), "js/common"), + fs.join(fs.makeAbsolute(''), "js/server"), + fs.join(fs.makeAbsolute(''), "js/apps/system/_api/gharial/APP"), + fs.join(fs.makeAbsolute(''), "Documentation/Books/Users"), + fs.join(fs.makeAbsolute(''), "arangod/RestHandler"), + fs.join(fs.makeAbsolute(''), "arangod/V8Server")]; + + + + +var theScript = 'Documentation/Scripts/generateExamples.py'; + +var scriptArguments = { + 'outputDir': fs.join(fs.makeAbsolute(''), "Documentation/Examples"), + 'outputFile': '/tmp/arangosh.examples.js' +}; + +function main (argv) { + "use strict"; + var thePython = 'python'; + var test = argv[1]; + var options = {}; + var serverEndpoint = ''; + var runLocaly = true; + + try { + options = internal.parseArgv(argv, 1); + } + catch (x) { + print("failed to parse the options: " + x.message); + return -1; + } + + if (options.hasOwnProperty('withPython')) { + thePython = options.withPython; + } + + if (options.hasOwnProperty('onlyThisOne')) { + scriptArguments['onlyThisOne'] = options.onlyThisOne; + } + + if (options.hasOwnProperty('server.endpoint')) { + runLocaly = false; + serverEndpoint = options['server.endpoint']; + } + var args = [theScript].concat(internal.toArgv(scriptArguments)); + args = args.concat(['--arangoshSetup']); + args = args.concat(documentationSourceDirs); + + internal.print(JSON.stringify(args)); + + var res = executeExternalAndWait(thePython, args); + + + var arangoshArgs = { + 'configuration': fs.join(fs.makeAbsolute(''), 'etc', 'relative', 'arangosh.conf'), + 'server.password': "", + 'server.endpoint': serverEndpoint, + 'javascript.execute': scriptArguments.outputFile + }; + + res = executeExternalAndWait('bin/arangosh', internal.toArgv(arangoshArgs)); + return 0; +}