1
0
Fork 0

Added proof of concept implementation of Foxx App template generator

This commit is contained in:
Michael Hackstein 2014-12-13 20:03:33 +01:00
parent 3ab1fcf4b6
commit 5e6e8caeaa
4 changed files with 85 additions and 1 deletions

View File

@ -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"
}));
});

View File

@ -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;
}());

View File

@ -24,7 +24,8 @@
"controllers": {
"/": "aardvark.js",
"/cluster": "cluster.js",
"/statistics": "statistics.js"
"/statistics": "statistics.js",
"/templates": "foxxTemplates.js"
},
"assets": {

View File

@ -0,0 +1,3 @@
{
"author": "<%=author %>"
}