Skip to content

Commit

Permalink
updated status page
Browse files Browse the repository at this point in the history
  • Loading branch information
cadorn committed May 1, 2012
1 parent 55942cd commit f6f5651
Showing 1 changed file with 99 additions and 86 deletions.
185 changes: 99 additions & 86 deletions lib/commands/status.js
@@ -1,5 +1,6 @@

var PATH = require("path");
var FS = require("fs");
var TERM = require("sourcemint-util-js/lib/term");
var UTIL = require("sourcemint-util-js/lib/util");
var Q = require("sourcemint-util-js/lib/q");
Expand Down Expand Up @@ -91,119 +92,127 @@ command.action(function (options) {
ok = false;
notInstalled = true;
summary.push("\0red([\0bold(defined in 'devMappings' but not installed in 'node_modules/' nor 'mapped_packages/'\0)]\0)");
}
else if (parentPkg) {
}

if (parentPkg.descriptor.json.mappings && parentPkg.descriptor.json.mappings[pkgInfo[2][0]]) {
mappingsUriInfo = URI_PARSER.parse(parentPkg.descriptor.json.mappings[pkgInfo[2][0]][1]);
} else
if (parentPkg.descriptor.json.devMappings && parentPkg.descriptor.json.devMappings[pkgInfo[2][0]]) {
mappingsUriInfo = URI_PARSER.parse(parentPkg.descriptor.json.devMappings[pkgInfo[2][0]][1]);
}

function formatProperty() {
if (pkgInfo[1].indexOf("dependencies") >= 0) {
return "d";
}
else if (pkgInfo[1].indexOf("devDependencies") >= 0) {
return "dd";
}
else if (pkgInfo[1].indexOf("mappings") >= 0) {
return "m";
}
else if (pkgInfo[1].indexOf("devMappings") >= 0) {
return "dm";
}
var opts = {
name: pkgInfo[0].descriptor.json.name || names[0],
private: pkgInfo[0].descriptor.json.private,
versionSelector: ((parentPkg)?parentPkg.descriptor.versionSelectorForDependencyName(pkgInfo[0].descriptor.json.name || ""):false),
latest: options.latest
};

return gitStatus(pkgInfo[0].path, opts).then(function(gitInfo) {

var packageSourceStatus = {};
var sourceUriInfo = false;
if (PATH.existsSync(PATH.join(pkgInfo[0].path, ".sourcemint", "source.json"))) {
packageSourceStatus = JSON.parse(FS.readFileSync(PATH.join(pkgInfo[0].path, ".sourcemint", "source.json")));
sourceUriInfo = URI_PARSER.parse(packageSourceStatus.url);
}
if (pkgInfo[1].indexOf("node_modules/") >= 0) {
if (pkgInfo[1].indexOf("dependencies") >= 0) {
summary.push("\0green([" + formatProperty() + ": node_modules/]\0)");

if (ok && parentPkg) {

if (parentPkg.descriptor.json.mappings && parentPkg.descriptor.json.mappings[pkgInfo[2][0]]) {
mappingsUriInfo = URI_PARSER.parse(parentPkg.descriptor.json.mappings[pkgInfo[2][0]][1]);
} else
if (pkgInfo[1].indexOf("devDependencies")) {
summary.push("\0green([" + formatProperty() + ": node_modules/]\0)");
} else {
ok = false;
summary.push("\0red([\0bold(found in 'node_modules/' but not defined in 'dependencies' nor 'devDependencies'\0)]\0)");
if (parentPkg.descriptor.json.devMappings && parentPkg.descriptor.json.devMappings[pkgInfo[2][0]]) {
mappingsUriInfo = URI_PARSER.parse(parentPkg.descriptor.json.devMappings[pkgInfo[2][0]][1]);
}
} else
if (pkgInfo[1].indexOf("dependencies") >= 0 || pkgInfo[1].indexOf("devDependencies") >= 0) {
function findInParent(pkg, level) {
if (pkg.children["node_modules/"][pkgInfo[2][0]] === pkgInfo[0].path) {
foundInParent = true;
var dirs = "";
for (var i=0 ; i<=level ; i++) dirs += "../../";
summary.push("\0green([" + formatProperty() + ": " + dirs + "node_modules/]\0)");
} else
if (pkg.parent) {
findInParent(pkg.parent, level + 1);

function formatProperty() {
if (pkgInfo[1].indexOf("dependencies") >= 0) {
return "d";
}
else if (pkgInfo[1].indexOf("devDependencies") >= 0) {
return "dd";
}
else if (pkgInfo[1].indexOf("mappings") >= 0) {
return "m";
}
else if (pkgInfo[1].indexOf("devMappings") >= 0) {
return "dm";
}
}
findInParent(pkgInfo[0].parent, 0);
if (!foundInParent) {
if (pkgInfo[1].indexOf("node_modules/") >= 0) {
if (pkgInfo[1].indexOf("dependencies") >= 0) {
summary.push("\0green([" + formatProperty() + ": node_modules/]\0)");
} else
if (pkgInfo[1].indexOf("devDependencies")) {
summary.push("\0green([" + formatProperty() + ": node_modules/]\0)");
} else {
ok = false;
notInstalled = true;
summary.push("\0red([\0bold(defined in 'dependencies' but not installed in 'node_modules/'\0)]\0)");
summary.push("\0red([\0bold(found in 'node_modules/' but not defined in 'dependencies' nor 'devDependencies'\0)]\0)");
}
else if (pkgInfo[1].indexOf("devDependencies") >= 0) {
ok = false;
notInstalled = true;
summary.push("\0red([\0bold(defined in 'devDependencies' but not installed in 'node_modules/'\0)]\0)");
} else
if (pkgInfo[1].indexOf("dependencies") >= 0 || pkgInfo[1].indexOf("devDependencies") >= 0) {
function findInParent(pkg, level) {
if (pkg.children["node_modules/"][pkgInfo[2][0]] === pkgInfo[0].path) {
foundInParent = true;
var dirs = "";
for (var i=0 ; i<=level ; i++) dirs += "../../";
summary.push("\0green([" + formatProperty() + ": " + dirs + "node_modules/]\0)");
} else
if (pkg.parent) {
findInParent(pkg.parent, level + 1);
}
}
findInParent(pkgInfo[0].parent, 0);
if (!foundInParent) {
if (pkgInfo[1].indexOf("dependencies") >= 0) {
ok = false;
notInstalled = true;
summary.push("\0red([\0bold(defined in 'dependencies' but not installed in 'node_modules/'\0)]\0)");
}
else if (pkgInfo[1].indexOf("devDependencies") >= 0) {
ok = false;
notInstalled = true;
summary.push("\0red([\0bold(defined in 'devDependencies' but not installed in 'node_modules/'\0)]\0)");
}
}
}
}
if (pkgInfo[1].indexOf("mapped_packages/") >= 0) {
if (pkgInfo[1].indexOf("mappings") >= 0) {
summary.push("\0green([" + formatProperty() + ": mapped_packages/]\0)");
}
if (pkgInfo[1].indexOf("devMappings") >= 0) {
summary.push("\0green([" + formatProperty() + ": mapped_packages/]\0)");
if (pkgInfo[1].indexOf("mapped_packages/") >= 0) {
if (pkgInfo[1].indexOf("mappings") >= 0 || pkgInfo[1].indexOf("devMappings") >= 0) {
summary.push("\0green([" + formatProperty() + ": mapped_packages/]\0)");
}
else if (pkgInfo[1].indexOf("mappings") === -1 && pkgInfo[1].indexOf("devMappings") === -1) {
ok = false;
summary.push("\0red([\0bold(found in 'mapped_packages/' but not defined in 'mappings' nor 'devMappings'\0)]\0)");
}
}
if (pkgInfo[1].indexOf("mappings") === -1 && pkgInfo[1].indexOf("devMappings") === -1) {
ok = false;
summary.push("\0red([\0bold(found in 'mapped_packages/' but not defined in 'mappings' nor 'devMappings'\0)]\0)");
if (mappingsUriInfo && mappingsUriInfo.vendor) {
if (gitInfo.type !== false && gitInfo.rev != mappingsUriInfo.vendor.rev) {
summary.push("\0red([mapping: " + mappingsUriInfo.vendor.rev + " != " + gitInfo.rev + "(git)]\0)");
} else
if (sourceUriInfo && sourceUriInfo.vendor && sourceUriInfo.vendor.rev !== mappingsUriInfo.vendor.rev) {
summary.push("\0red([mapping: " + mappingsUriInfo.vendor.rev + " != " + sourceUriInfo.vendor.rev + "(installed)]\0)");
} else {
summary.push("\0green([mapping: " + mappingsUriInfo.vendor.rev + "]\0)");
}
}
}
if (mappingsUriInfo) {
summary.push("\0green([mapping: " + mappingsUriInfo.vendor.rev + "]\0)");

}
}

var opts = {
name: pkgInfo[0].descriptor.json.name || names[0],
private: pkgInfo[0].descriptor.json.private,
versionSelector: ((parentPkg)?parentPkg.descriptor.versionSelectorForDependencyName(pkgInfo[0].descriptor.json.name || ""):false),
latest: options.latest
};

return gitStatus(pkgInfo[0].path, opts).then(function(gitInfo) {
}

if (gitInfo.type !== false) {
function formatBranch() {
return ((gitInfo.branch !== "master" && (!mappingsUriInfo || !mappingsUriInfo.vendor || gitInfo.branch != mappingsUriInfo.vendor.rev))?("\0orange(" + gitInfo.branch + "\0)"):gitInfo.branch);
return ((gitInfo.branch !== "master" && (!mappingsUriInfo || !mappingsUriInfo.vendor || gitInfo.rev != mappingsUriInfo.vendor.rev))?("\0orange(" + gitInfo.branch + "\0)"):gitInfo.branch);
}
function formatTag() {
return ((gitInfo.tagged)?" "+gitInfo.tagged:"");
}
function formatWritable() {
return ((gitInfo.writable)?"(\0cyan(W\0))":"");
}
if (gitInfo.dirty) {
ok = false;
summary.push("\0red([git" + formatWritable() + ": " + formatBranch() + " \0bold(dirty\0)]\0)");
summary.push("\0red([git: " + formatBranch() + " \0bold(dirty\0)]\0)");
} else
if (gitInfo.remoteAhead) {
if (context.level === 0) {
unsynced = true;
summary.push("\0magenta([git" + formatWritable() + ": " + formatBranch() + " \0bold(unpushed\0)]\0)");
summary.push("\0magenta([git: " + formatBranch() + " \0bold(unpushed\0)]\0)");
} else {
ok = false;
summary.push("\0red([git" + formatWritable() + ": " + formatBranch() + " \0bold(unpushed\0)]\0)");
summary.push("\0red([git: " + formatBranch() + " \0bold(unpushed\0)]\0)");
}
} else
if (gitInfo.branch) {
summary.push("\0green([git" + formatWritable() + ": " + formatBranch() + formatTag() + "]\0)");
summary.push("\0green([git: " + formatBranch() + formatTag() + "]\0)");
}
}

Expand Down Expand Up @@ -332,6 +341,10 @@ command.action(function (options) {
if (!url) return "";
return "( \0yellow(" + url + "\0) )";
}
function formatWritable() {
padding += " ";
return ((gitInfo.writable)?(" \0cyan(W\0) " + padding.substring(3)):padding);
}

if (context.circular && !ok) {
// Remove error info as it was already printed once (circular) so errors for a package only show up once.
Expand All @@ -343,17 +356,17 @@ command.action(function (options) {

if (foundInParent) {
// In parent package.
TERM.stdout.writenl(padding + summary.join(" ") + " \0white(<- " + formatPath() + "\0)" + formatAge() + formatLink());
TERM.stdout.writenl(formatWritable() + summary.join(" ") + " \0white(<- " + formatPath() + "\0)" + formatAge() + formatLink());
} else
if (!parentPkg || pkgInfo[0].path.substring(0, parentPkg.path.length) === parentPkg.path) {
// In package dependency tree.
TERM.stdout.writenl(padding + summary.join(" ") + " \0white(-> " + formatPath() + "\0)" + formatAge() + formatLink());
TERM.stdout.writenl(formatWritable() + summary.join(" ") + " \0white(-> " + formatPath() + "\0)" + formatAge() + formatLink());
} else
if (notInstalled) {
TERM.stdout.writenl(padding + summary.join(" ") + " \0red(-> " + formatPath() + "\0)" + formatAge() + formatLink());
TERM.stdout.writenl(formatWritable() + summary.join(" ") + " \0red(-> " + formatPath() + "\0)" + formatAge() + formatLink());
} else {
// Linked package.
TERM.stdout.writenl(padding + summary.join(" ") + " \0cyan(<- " + formatPath() + "\0)" + formatAge() + formatLink());
TERM.stdout.writenl(formatWritable() + summary.join(" ") + " \0cyan(<- " + formatPath() + "\0)" + formatAge() + formatLink());
}

if (!ok) {
Expand Down

0 comments on commit f6f5651

Please sign in to comment.