diff --git a/js/apps/system/aardvark/foxxTemplates.js b/js/apps/system/aardvark/foxxTemplates.js new file mode 100644 index 0000000000..7fb9b39228 --- /dev/null +++ b/js/apps/system/aardvark/foxxTemplates.js @@ -0,0 +1,59 @@ +/*global require, applicationContext*/ + +//////////////////////////////////////////////////////////////////////////////// +/// @brief A Foxx.Controller to generate new FoxxApps +/// +/// @file +/// +/// DISCLAIMER +/// +/// Copyright 2010-2014 triagens GmbH, Cologne, Germany +/// +/// Licensed under the Apache License, Version 2.0 (the "License"); +/// you may not use this file except in compliance with the License. +/// You may obtain a copy of the License at +/// +/// http://www.apache.org/licenses/LICENSE-2.0 +/// +/// Unless required by applicable law or agreed to in writing, software +/// distributed under the License is distributed on an "AS IS" BASIS, +/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +/// See the License for the specific language governing permissions and +/// limitations under the License. +/// +/// Copyright holder is triAGENS GmbH, Cologne, Germany +/// +/// @author Michael Hackstein +/// @author Copyright 2011-2013, triAGENS GmbH, Cologne, Germany +//////////////////////////////////////////////////////////////////////////////// + +"use strict"; + +var FoxxController = require("org/arangodb/foxx").Controller, + controller = new FoxxController(applicationContext), + internal = require("internal"), + templateEngine = new (require("lib/foxxTemplateEngine").Engine)(applicationContext.foxxFilename("templates")), + fs = require("fs"), + isDevMode = function() { + return internal.developmentMode; + }; + +controller.get("/devMode", function(req, res) { + res.json(isDevMode()); +}); + +controller.post("/generate", function(req, res) { + var path, + name = "hansilein"; + if (isDevMode()) { + path = module.devAppPath(); + } else { + path = module.appPath(); + } + var folder = fs.join(path, name); + fs.makeDirectory(folder); + var manifest = fs.join(folder, "manifest.json"); + fs.write(manifest, templateEngine.buildManifest({ + author: "Peterle" + })); +}); diff --git a/js/apps/system/aardvark/lib/foxxTemplateEngine.js b/js/apps/system/aardvark/lib/foxxTemplateEngine.js new file mode 100644 index 0000000000..f1b8030a9b --- /dev/null +++ b/js/apps/system/aardvark/lib/foxxTemplateEngine.js @@ -0,0 +1,21 @@ +(function() { + "use strict"; + + var fs = require("fs"); + var _ = require("underscore"); + + var Engine = function(path) { + this._path = path; + }; + + Engine.prototype.buildManifest = function(info) { + if (!this.hasOwnProperty("_manifest")) { + this._manifest = _.template( + fs.read(fs.join(this._path, "manifest.json.tmpl")) + ); + } + return this._manifest(info); + }; + + exports.Engine = Engine; +}()); diff --git a/js/apps/system/aardvark/manifest.json b/js/apps/system/aardvark/manifest.json index 7707d390d5..0150dd6d94 100644 --- a/js/apps/system/aardvark/manifest.json +++ b/js/apps/system/aardvark/manifest.json @@ -24,7 +24,8 @@ "controllers": { "/": "aardvark.js", "/cluster": "cluster.js", - "/statistics": "statistics.js" + "/statistics": "statistics.js", + "/templates": "foxxTemplates.js" }, "assets": { diff --git a/js/apps/system/aardvark/templates/manifest.json.tmpl b/js/apps/system/aardvark/templates/manifest.json.tmpl new file mode 100644 index 0000000000..42640230cc --- /dev/null +++ b/js/apps/system/aardvark/templates/manifest.json.tmpl @@ -0,0 +1,3 @@ +{ + "author": "<%=author %>" +}