mirror of https://gitee.com/bigwinds/arangodb
Added proof of concept implementation of Foxx App template generator
This commit is contained in:
parent
3ab1fcf4b6
commit
5e6e8caeaa
|
@ -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"
|
||||
}));
|
||||
});
|
|
@ -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;
|
||||
}());
|
|
@ -24,7 +24,8 @@
|
|||
"controllers": {
|
||||
"/": "aardvark.js",
|
||||
"/cluster": "cluster.js",
|
||||
"/statistics": "statistics.js"
|
||||
"/statistics": "statistics.js",
|
||||
"/templates": "foxxTemplates.js"
|
||||
},
|
||||
|
||||
"assets": {
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"author": "<%=author %>"
|
||||
}
|
Loading…
Reference in New Issue