nodejs-tpkg-builder
Version:
a build tool for node apps using tpkg (http://tpkg.github.io/)
75 lines (61 loc) • 2.03 kB
JavaScript
;
var path = require('path');
var init = function (projectDir) {
var pkg = require(path.join(projectDir, 'package.json'));
var tpkgConfig;
try {
tpkgConfig = require(path.join(projectDir, 'tpkg.json'));
}
catch (err) {
console.error('error - missing tpkg.json config file');
process.exit(-1);
}
var date = new Date();
var iso = date.toISOString().match(/(\d{4})\-(\d{2})\-(\d{2})T(\d{2}):(\d{2}):(\d{2})/);
var timestamp = iso[1] + iso[2] + iso[3] + iso[4] + iso[5];
var homeDir = '/home/' + tpkgConfig.account.runAsUser;
var projectDir = homeDir + "/" + pkg.name;
var nodeVersion = pkg.hasOwnProperty('engines') ? pkg.engines.node : '0.10.36';
var config = {
project: {
name : pkg.name,
description : pkg.description,
version : tpkgConfig.build.version || pkg.version,
nodeVersion : nodeVersion,
startScript : projectDir + '/' + pkg.main,
timestamp : timestamp
},
directory: {
home : homeDir,
project : projectDir,
bin : projectDir + '/bin',
etc : projectDir + '/etc',
run : projectDir + '/run',
log : projectDir + '/log',
cron : projectDir + '/etc/cron.d',
init : projectDir + '/etc/init.d',
sysconfig : projectDir + '/etc/sysconfig',
},
account: {
maintainer : tpkgConfig.account.maintainer,
runAsUser : tpkgConfig.account.runAsUser,
runAsUserGroup : tpkgConfig.account.runAsUserGroup
},
build: {
appFolder : tpkgConfig.build.appFolder,
buildOutputDir : tpkgConfig.build.buildOutputDir
}
};
// check for undefined config values
Object.keys(config).forEach(function (parentKey) {
Object.keys(config[parentKey]).forEach(function (key) {
if (config[parentKey][key] === undefined) {
throw new Error('missing required config value: ' + key);
}
});
});
return config;
};
module.exports = {
init: init
};