UNPKG

nodejs-tpkg-builder

Version:

a build tool for node apps using tpkg (http://tpkg.github.io/)

75 lines (61 loc) 2.03 kB
'use strict'; 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 };