UNPKG

yapm

Version:

package manager for io.js (npm fork)

49 lines (44 loc) 1.3 kB
var Path = require('path') var read = require('../utils').read var write = require('../utils').write var stat = require('../utils').fs.stat module.exports.read = function(path, cb) { read(Path.join(path, 'index.js'), 'utf8', function(err, data) { if (err) return cb(err) data = parseIndex(data) if (data == null) { var er = Error('no package info here') er.code = 'ENOENT' return cb(er) } cb(null, data) }) } module.exports.write = function(path, object, cb) { // think about this as "not implemented", but this is what npm does write(Path.join(path, 'package.json'), JSON.stringify(object, null, 2) + '\n', cb) } module.exports.stat = function(path, cb) { read(path, function(err, data) { if (err) return cb(err) stat(Path.join(path, 'index.js'), function(er, stat) { if (stat) stat.file = Path.join(path, 'index.js') cb(er, stat) }) }) } // /**package { "name": "foo", "version": "1.2.3", ... } **/ function parseIndex (data) { data = data.split(/^\/\*\*package(?:\s|$)/m) if (data.length < 2) return null data = data[1] data = data.split(/\*\*\/$/m) if (data.length < 2) return null data = data[0] data = data.replace(/^\s*\*/mg, "") try { return JSON.parse(data) } catch (er) { return null } }