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": {
|
"controllers": {
|
||||||
"/": "aardvark.js",
|
"/": "aardvark.js",
|
||||||
"/cluster": "cluster.js",
|
"/cluster": "cluster.js",
|
||||||
"/statistics": "statistics.js"
|
"/statistics": "statistics.js",
|
||||||
|
"/templates": "foxxTemplates.js"
|
||||||
},
|
},
|
||||||
|
|
||||||
"assets": {
|
"assets": {
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"author": "<%=author %>"
|
||||||
|
}
|
Loading…
Reference in New Issue