Skip to content

Commit

Permalink
Merge c13c308 into 92bb4a1
Browse files Browse the repository at this point in the history
  • Loading branch information
sorrycc committed Dec 22, 2014
2 parents 92bb4a1 + c13c308 commit d915e5a
Show file tree
Hide file tree
Showing 11 changed files with 56 additions and 7 deletions.
18 changes: 11 additions & 7 deletions lib/spm-package.js
Original file line number Diff line number Diff line change
Expand Up @@ -98,16 +98,20 @@ function resolveDeps(name, deps, pkg) {
var version, dest;
var base = util.getBase(pkg);

// detect root spm_modules
dest = join(base, pkg.options.moduleDir, name);
if (exists(dest)) {
// detech current pkg and father pkg
var levelCount = 2;
while (levelCount-- && !version && pkg) {
dest = join(pkg.dest, pkg.options.moduleDir, name);
version = util.getVersion(deps[name], dest);
pkg = pkg.father;
}

// detect current spm_modules
if (!version && pkg.dest !== base) {
dest = join(pkg.dest, pkg.options.moduleDir, name);
version = util.getVersion(deps[name], dest);
// detect root spm_modules
if (!version && pkg) {
dest = join(base, pkg.options.moduleDir, name);
if (exists(dest)) {
version = util.getVersion(deps[name], dest);
}
}

if (!version) {
Expand Down
3 changes: 3 additions & 0 deletions lib/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ var fs = require('fs');
var semver = require('semver');
var path = require('path');
var join = path.join;
var exists = fs.existsSync;
var dirname = path.dirname;

exports.getVersion = getVersion;
Expand All @@ -13,6 +14,8 @@ exports.isRelative = isRelative;
exports.winPath = winPath;

function getVersion(version, dest) {
if (!exists(dest)) return;

var map = {};
var dirs = fs.readdirSync(dest);
var versions = dirs
Expand Down
1 change: 1 addition & 0 deletions test/fixtures/spm/resolve-deps-in-pkg-deep/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
require('b');
9 changes: 9 additions & 0 deletions test/fixtures/spm/resolve-deps-in-pkg-deep/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"name": "a",
"version": "0.1.0",
"spm": {
"dependencies": {
"b": "0.2.0"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
require('c');
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"name": "b",
"version": "0.2.0",
"spm": {
"dependencies": {
"c": "0.3.0"
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
require('d');
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"name": "c",
"version": "0.3.0",
"spm": {
"dependencies": {
"d": "0.3.0"
}
}
}
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"name": "d",
"version": "0.3.0",
"spm": {
}
}
6 changes: 6 additions & 0 deletions test/spm.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,12 @@ describe('Father.SpmPackage', function() {
pkg.dependencies.b.dependencies.c.version.should.be.equal('0.4.0');
});

it('resolve deps in pkg, deep', function() {
var pkg = getPackage('resolve-deps-in-pkg-deep');
pkg.dependencies.b.dependencies.c.should.be.truthy;
pkg.dependencies.b.dependencies.c.dependencies.d.should.be.truthy;
});

it('css', function() {
var pkg = getPackage('css');
Object.keys(pkg.files).should.eql(['index.css', 'base.css', 'other.css']);
Expand Down

0 comments on commit d915e5a

Please sign in to comment.