From 6af00b670ea08a765b9c0b4ea97e5c40227ff7f8 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sat, 17 Oct 2015 15:44:42 +0400 Subject: [PATCH 1/3] fix stats menu in salesforce workspace --- package.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package.json b/package.json index 3f643434..e23ee803 100644 --- a/package.json +++ b/package.json @@ -108,6 +108,8 @@ "c9.ide.save": "#e00549cb0f", "c9.ide.scm": "#38d2b48b31", "c9.ide.terminal.monitor": "#b76f1c9f24", + "c9.ide.test": "#d312a01ac6", + "c9.ide.test.mocha": "#79ff886c04", "c9.ide.theme.flat": "#2de8414db7", "c9.ide.threewaymerge": "#229382aa0b", "c9.ide.undo": "#b028bcb4d5", From 59a7866b8be14d0ef2b2410a984e657382ed8a71 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sat, 17 Oct 2015 18:33:52 +0400 Subject: [PATCH 2/3] fix c9 publish failing silently --- bin/c9 | 2 -- configs/cli.js | 14 ++++++++------ plugins/c9.cli.publish/publish.js | 20 ++++++++++++++++++-- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/bin/c9 b/bin/c9 index 32d1f9e5..9de38075 100755 --- a/bin/c9 +++ b/bin/c9 @@ -6,8 +6,6 @@ var architect = require("architect"); // Add ability to load AMD modules require("amd-loader"); -var verbose = process.argv.indexOf("--verbose") + 1 - || process.argv.indexOf("-v") + 1; architect.resolveConfig(require("../configs/cli.js")(), __dirname + "/../plugins", function (err, config) { diff --git a/configs/cli.js b/configs/cli.js index 9bfebe48..80a8d3f5 100644 --- a/configs/cli.js +++ b/configs/cli.js @@ -1,12 +1,14 @@ module.exports = function(options) { // workaround for api difference between node and c9 events modules -var EventEmitter = require("events").EventEmitter; -var emit_ = EventEmitter.prototype.emit -EventEmitter.prototype.emit = function() { - emit_.apply(this, arguments); - return true; -} +var EventEmitter = require("../plugins/c9.nodeapi/events").EventEmitter; +var Module = require("module"); +var _resolveFilename_orig = Module._resolveFilename +Module._resolveFilename = function(id, parent) { + if (id == "events" && parent && /c9.core[\\/]ext\.js/.test(parent.id)) + id = "../c9.nodeapi/events"; + return _resolveFilename_orig.call(Module, id, parent); +}; var PID = process.env.C9_PID || 526; var APIHOST = process.env.C9_APIHOST || "api.c9.io"; // "api.c9.io"; diff --git a/plugins/c9.cli.publish/publish.js b/plugins/c9.cli.publish/publish.js index 81cb6459..9c817498 100644 --- a/plugins/c9.cli.publish/publish.js +++ b/plugins/c9.cli.publish/publish.js @@ -44,6 +44,7 @@ define(function(require, exports, module) { var force = false; var dryRun = false; var createTag = false; + var compress = false; // Set up basic auth for api if needed if (BASICAUTH) api.basicAuth = BASICAUTH; @@ -85,6 +86,11 @@ define(function(require, exports, module) { "alias": "t", "default": false, "boolean": true + }, + "compress" : { + "description": "Minify output with uglify.js", + "default": true, + "boolean": true } }, check: function(argv) { @@ -125,9 +131,17 @@ define(function(require, exports, module) { "alias": "d", "default": false, "boolean": true + }, + "compress" : { + "description": "Minify output with uglify.js", + "default": false, + "boolean": true } }, exec: function(argv) { + compress = argv["compress"]; + verbose = argv["verbose"]; + force = argv["force"]; if (argv["devel"]) { var code = function(argument) { /* TODO explain */ @@ -159,13 +173,14 @@ define(function(require, exports, module) { } else { dryRun = true; - publish({local: true}, function(err){ + publish({local: true}, function(err, result){ if (err) { console.error(err); if (!verbose) console.error("\nTry running with --verbose flag for more information"); process.exit(1); } + console.log("Done!"); }); } } @@ -186,6 +201,7 @@ define(function(require, exports, module) { check: function(argv) {}, exec: function(argv) { verbose = argv["verbose"]; + compress = argv["compress"]; unpublish( function(err, data){ @@ -574,7 +590,7 @@ define(function(require, exports, module) { enableBrowser: true, includeConfig: false, noArchitect: true, - compress: !dryRun, + compress: compress, obfuscate: true, oneLine: true, filter: [], From 7126015b1b5b6a47205ab80d3fa89136c206c3b5 Mon Sep 17 00:00:00 2001 From: nightwing Date: Sat, 17 Oct 2015 18:35:09 +0000 Subject: [PATCH 3/3] fix symlink loop detection --- node_modules/vfs-local/localfs.js | 35 +++++++++++++++++-------------- plugins/c9.fs/fs.cache.xml.js | 4 ++-- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/node_modules/vfs-local/localfs.js b/node_modules/vfs-local/localfs.js index f9376f77..1984e00d 100644 --- a/node_modules/vfs-local/localfs.js +++ b/node_modules/vfs-local/localfs.js @@ -350,7 +350,7 @@ module.exports = function setup(fsOptions) { // This helper function doesn't follow node conventions in the callback, // there is no err, only entry. - function createStatEntry(file, fullpath, callback) { + function createStatEntry(file, fullpath, callback, _loop) { fs.lstat(fullpath, function (err, stat) { var entry = { name: file @@ -378,26 +378,29 @@ module.exports = function setup(fsOptions) { return callback(entry); } fs.readlink(fullpath, function (err, link) { - if (entry.name == link) { - entry.linkStatErr = "ELOOP: recursive symlink"; - return callback(entry); - } - if (err) { entry.linkErr = err.stack; return callback(entry); } + var fullLinkPath = pathResolve(dirname(fullpath), link); + if (!_loop) { + _loop = {fullLinkPath: fullpath, max: 100}; + } + if (fullLinkPath.toLowerCase() == _loop.fullLinkPath.toLowerCase() || _loop.max --< 0) { + entry.linkErr = "ELOOP: recursive symlink"; + return callback(entry); + } entry.link = link; - resolvePath(pathResolve(dirname(fullpath), link), {alreadyRooted: true}, function (err, newpath) { - if (err) { - entry.linkStatErr = err; - return callback(entry); - } - createStatEntry(basename(newpath), newpath, function (linkStat) { - entry.linkStat = linkStat; - linkStat.fullPath = newpath.substr(base.length) || "/"; - return callback(entry); - }); + resolvePath(fullLinkPath, {alreadyRooted: true}, function (err, newpath) { + if (err) { + entry.linkErr = err; + return callback(entry); + } + createStatEntry(basename(newpath), newpath, function (linkStat) { + entry.linkStat = linkStat; + linkStat.fullPath = newpath.substr(base.length) || "/"; + return callback(entry); + }, _loop); }); }); } diff --git a/plugins/c9.fs/fs.cache.xml.js b/plugins/c9.fs/fs.cache.xml.js index dda745dd..c9ad1844 100644 --- a/plugins/c9.fs/fs.cache.xml.js +++ b/plugins/c9.fs/fs.cache.xml.js @@ -561,8 +561,8 @@ define(function(require, exports, module) { node.size = stat.size; if (stat.mtime != undefined) node.mtime = stat.mtime; - if (original_stat) - node.link = stat.fullPath; + if (original_stat || stat.linkErr) + node.link = stat.fullPath || stat.linkErr; node.isFolder = isFolder; }