allexsdk
Version:
AllexJS sdk
77 lines (58 loc) • 2.82 kB
JavaScript
;
var MANDATORY_DIRS = [
'allexdev',
'css',
'js',
'pages'
];
function createWebAppInit (lib, Node) {
'use strict';
var Bower = require('allex_bowerhelperssdklib')(lib),
Q = lib.q,
Fs = Node.Fs,
Path = Node.Path;
function resolvePath (dirname, path) {
return Path.resolve(dirname, path);
}
function dirCreator (basedirname, dirname) {
Fs.ensureDirSync(resolvePath(basedirname, dirname));
}
function init (dirname, bower, frameworks) {
dirname = Path.resolve(process.cwd(), dirname);
//TODO: skip this one if force is given
if (Fs.dirExists (dirname)){
throw new Error ('webapp '+dirname+' already exists');
}
Fs.recreateDir(dirname);
var sdk_common = Path.resolve (__dirname, '..', '..', 'templates', 'webapps'),
template_root = Path.resolve(__dirname, '..', '..', 'templates', 'webalizer', 'web'),
framework_root = Path.resolve(__dirname, '..', '..', 'templates', 'webapp', 'frameworks');
Fs.copySync (Path.join (template_root, '*'), dirname);
Fs.copySync (Path.join (template_root, '.bowerrc'), dirname);
Fs.symlinkSync (Path.join (sdk_common, 'layouts'), Path.join (dirname, 'layouts'));
Fs.symlinkSync (Path.join (sdk_common, 'includes'), Path.join (dirname, 'includes'));
MANDATORY_DIRS.forEach(dirCreator.bind(null, dirname));
process.chdir(dirname);
Bower.commands.link();
var framework_path = null;
if (frameworks) {
for (var i = 0; i < frameworks.length; i++) {
framework_path = Path.resolve(framework_root, frameworks[i]);
if (!Fs.dirExists(framework_path)) throw new Error ('Unknown framework: '+frameworks[i]);
Fs.ensureDirSync (Path.resolve (dirname, 'frameworks'));
Fs.symlinkSync (framework_path, Path.resolve (dirname, 'frameworks', frameworks[i]));
}
var pb = Fs.readJSONSync (Path.resolve(dirname, 'protoboard.json'));
if (!pb.public_dirs) pb.public_dirs = [];
if (pb.public_dirs.indexOf('frameworks') < 0) pb.public_dirs.push ('frameworks');
Fs.writeJSONSync(Path.resolve(dirname, 'protoboard.json'),pb);
}
Fs.writeJSONSync(Path.resolve(dirname, '.allexns.json'),[
{"username": "allex", "namespace": null, "group": "services", "type": "git", "user": "git", "server": "github.com", "repogroup": "allex-services"},
{"username": "allex", "namespace": null, "group": "libs", "type": "git", "user": "git", "server": "github.com", "repogroup": "allex-libs"},
{"username": "allex", "namespace": null, "group": "webcomponents", "type": "git", "user": "git", "server": "github.com", "repogroup": "allex-web-components"}
]);
}
return init;
}
module.exports = createWebAppInit;