Example #1
0
 return Promised(when(getRoot(path), function(root) {
   return when(fs.read(fs.join(root, DESCRIPTOR_FILE)), JSON.parse)
 }))
Example #2
0
'use strict'

var fs =  require('promised-fs')
  , packageUtils = require('./common/utils/package')
  , Trait = require('light-traits').Trait
  , CONST = require('./strings')
  , Q = require('q'), when = Q.when, reject = Q.reject
  , pu = require('promised-utils'), Promised = pu.Promised, all = pu.all
  , PackageModules = require('./module').PackageModules

  , DESCRIPTOR_PATH = fs.join(CONST.VERSION, CONST.PREFIX)
  , DESCRIPTOR_FILE = CONST.DESCRIPTOR_FILE
  , JSON_PARSE_ERROR = 'Failed to parse package descriptor: '
  , ERR_NOT_IN_PACKAGE = CONST.ERR_NOT_IN_PACKAGE
  , DEPENDENCIES_DIR = 'support'


/**
 * Finds the root of the project package. Optionally takes `path` in the
 * under the project directory (if not provided `pwd` is used).
 * @param {String} path
 * @returns {Promise(String)}
 */
var getRoot = Promised.sync(function getRoot(path) {
  path = path ? fs.Path(String(path)) : fs.workingDirectoryPath()
  return when(path.list(), function(entries) {
    if (0 <= entries.indexOf(DESCRIPTOR_FILE)) return String(path)
    var directory = path.directory()
    if (String(path) == String(directory)) return reject(ERR_NOT_IN_PACKAGE)
    return getRoot(directory)
  })
Example #3
0
 return when(getRoot(path), function onPath(path) {
   return fs.join(path, DEPENDENCIES_DIR)
 })
Example #4
0
,   Module = require('./module').Module
,   Package = require('./package').Package

,   EXTENSION = CONST.EXTENSION
,   SEPARATOR = CONST.SEPARATOR
,   VERSION_MARK = CONST.VERSION_MARK
,   VERSION = CONST.VERSION
,   PREFIX = CONST.PREFIX
,   LIB = CONST.LIB
,   TRANSPORT_WRAPPER = CONST.TRANSPORT_WRAPPER
,   MODULE_NOT_FOUND_ERROR = CONST.MODULE_NOT_FOUND_ERROR
,   PACKAGE_NOT_FOUND_ERROR = CONST.PACKAGE_NOT_FOUND_ERROR
,   COMMENTS_MATCH = CONST.COMMENTS_MATCH
,   REQUIRE_MATCH = CONST.REQUIRE_MATCH
,   root = CONST.NPM_DIR
,   DESCRIPTOR_PATH = fs.join(VERSION, PREFIX, CONST.DESCRIPTOR_FILE)

var PromisedJSON = Promised(JSON)

var RegistryTrait = Trait(
{ packages: Trait.required
, root: root
, toJSON: function toJSON() {
    var json, packages, descriptors
    if (!this._json) {
      json = {}
      packages = this.packages
      descriptors = Object.keys(packages).map(function (key) {
        return when
        ( packages[key].invoke('toJSON')
        , function (descriptor) { json[key] = descriptor }