/**
* Generate a package json from a apemanfile.
* @function task.worker.generatePackageJson
* @param {object} config - Task configuration
* @param {string} config.src - Apemanfile file name.
* @param {string} config.dest - Destination file name.
* @param {function} callback - Callback when done.
* @author Taka Okunishi
*/
var path = require('path'),
debug = require('./_debug'),
apeman = require('apeman'),
lib = require('../../lib'),
EOL = require('os').EOL,
file = lib.file,
writeReadonlyFile = file.writeReadonlyFile;
exports = module.exports = function (config, callback) {
var apemanfile = require(config.src)(apeman),
meta = apemanfile.meta(),
dest = path.resolve(config.dest);
var data = {};
exports._packageJsonKeys.forEach(function (key) {
data[key] = meta[key];
});
var tasks = apemanfile.tasks();
data.dependencies = tasks.installNodePackages.config.packages || {};
data.devDependencies = tasks.installNodeDevPackages.config.packages || {};
data.main = 'Apemanfile.js';
writeReadonlyFile(dest, JSON.stringify(data, null, 4) + EOL, function (err) {
if (!err) debug.didCreateFile(dest);
callback(err);
});
};
exports._packageJsonKeys = [
'name',
'version',
'description',
'author',
'dependencies',
'devDependencies',
'repository'
];