Code coverage report for father/lib/component-package.js

Statements: 100% (23 / 23)      Branches: 75% (3 / 4)      Functions: 100% (5 / 5)      Lines: 100% (23 / 23)      Ignored: none     

All files » father/lib/ » component-package.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54    1 1 1   1   4 4   4   4       1   1 4 4 4                 4     1 4 4 4   4               1 4 2   4    
'use strict';
 
var path = require('path');
var join = path.join;
var Package = require('./package');
 
var ComponentPackage = Package.extend({
  readPackage: function() {
    var pkg = normalize(join(this.dest, 'component.json'));
    Object.keys(pkg.dependencies)
      .forEach(function(name) {
        pkg.dependencies[name] = resolveDeps(name, this);
      }.bind(this));
    return pkg;
  }
});
 
module.exports = ComponentPackage;
 
function normalize(pkg) {
  var dest = path.dirname(pkg);
  pkg = require(pkg);
  var ret = {
    id: pkg.name,
    name: pkg.name,
    version: pkg.version,
    dependencies: pkg.dependencies || {},
    main: pkg.main || 'index.js',
    dest: dest,
    origin: pkg
  };
  return ret;
}
 
function resolveDeps(name, self) {
  var ancestor = getAncestor(self);
  var dest = join(ancestor.dest, 'components', name.replace('/', '-'));
  var pkg = require(join(dest, 'component.json'));
 
  return {
    id: pkg.name,
    name: pkg.name,
    version: pkg.version,
    dest: dest
  };
}
 
function getAncestor(self) {
  while(self.father) {
    self = self.father;
  }
  return self;
}