From 3dd36414259873431a7b78374017773e80540ee1 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Fri, 15 May 2015 10:48:18 +0200 Subject: [PATCH 1/6] Revert "Revert "add salesforce modes to cdn"" --- plugins/c9.static/cdn.cli.js | 43 ++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 12 deletions(-) diff --git a/plugins/c9.static/cdn.cli.js b/plugins/c9.static/cdn.cli.js index 8867151e..d28248fc 100644 --- a/plugins/c9.static/cdn.cli.js +++ b/plugins/c9.static/cdn.cli.js @@ -160,19 +160,38 @@ define(function(require, exports, module) { var aceModules = ["vim", "emacs", "sublime"].map(function(x) { return "plugins/c9.ide.ace.keymaps/" + x + "/keymap"; }); - var acePath = __dirname + "/../../node_modules/ace/lib/ace"; - function addAceModules(type, excludePattern) { - var files = fs.readdirSync(acePath + "/" + type); - files.filter(function(p) { - return !excludePattern.test(p) && !/[\s#]/.test(p) && /.*\.js$/.test(p); - }).forEach(function(p) { - aceModules.push("ace/" + type + "/" + p.slice(0, -3)); - }); + var paths = { + ace: __dirname + "/../../node_modules/ace/lib/ace", + plugins: __dirname + "/../../plugins", + }; + function addAceModules(path, excludePattern) { + var parts = path.split("/"); + if (parts[0] == "ace") { + if (parts[1] == "modes" || parts[1] == "themes") + parts[1] = parts[1].slice(0, -1); + } + parts[0] = paths[parts[0]]; + var fsPath = parts.join("/"); + try { + var files = fs.readdirSync(fsPath); + files.filter(function(p) { + return !excludePattern.test(p) && !/[\s#]/.test(p) && /.*\.js$/.test(p); + }).forEach(function(p) { + aceModules.push(path + "/" + p.slice(0, -3)); + }); + } catch(e) {} } - addAceModules("mode", /_highlight_rules|_test|_worker|xml_util|_outdent|behaviour|completions/); - addAceModules("theme", /_test/); - addAceModules("ext", /_test/); - addAceModules("snippets", /_test/); + + var aceModulePaths = [ + "ace", + "plugins/c9.ide.salesforce/salesforce.language" + ]; + aceModulePaths.forEach(function(p) { + addAceModules(p + "/modes", /_highlight_rules|_test|_worker|xml_util|_outdent|behaviour|completions/); + addAceModules(p + "/themes", /_test/); + addAceModules(p + "/ext", /_test/); + addAceModules(p + "/snippets", /_test/); + }); function take() { var p = aceModules.pop(); From 4007b0403ff87b7a738877bc3167e39446b38d06 Mon Sep 17 00:00:00 2001 From: Alex Brausewetter Date: Fri, 15 May 2015 10:37:36 +0000 Subject: [PATCH 2/6] Refactor language module loading --- plugins/c9.static/cdn.cli.js | 85 +++++++++++++++++++++--------------- 1 file changed, 51 insertions(+), 34 deletions(-) diff --git a/plugins/c9.static/cdn.cli.js b/plugins/c9.static/cdn.cli.js index d28248fc..a4c5e2dc 100644 --- a/plugins/c9.static/cdn.cli.js +++ b/plugins/c9.static/cdn.cli.js @@ -155,51 +155,68 @@ define(function(require, exports, module) { process.exit(); } }); + function listAceModules(pathConfig, cb) { - // build async loaded ace modules - var aceModules = ["vim", "emacs", "sublime"].map(function(x) { - return "plugins/c9.ide.ace.keymaps/" + x + "/keymap"; - }); - var paths = { - ace: __dirname + "/../../node_modules/ace/lib/ace", - plugins: __dirname + "/../../plugins", + var result = [ + "plugins/c9.ide.ace.keymaps/vim/keymap", + "plugins/c9.ide.ace.keymaps/emacs/keymap", + "plugins/c9.ide.ace.keymaps/sublime/keymap", + ]; + + // FIXME: this could be resolved via pathConfig: + var pathMap = { + "ace": __dirname + "/../../node_modules/ace/lib/ace", + "plugins": __dirname + "/../../plugins", }; - function addAceModules(path, excludePattern) { - var parts = path.split("/"); - if (parts[0] == "ace") { - if (parts[1] == "modes" || parts[1] == "themes") - parts[1] = parts[1].slice(0, -1); - } - parts[0] = paths[parts[0]]; - var fsPath = parts.join("/"); - try { - var files = fs.readdirSync(fsPath); - files.filter(function(p) { - return !excludePattern.test(p) && !/[\s#]/.test(p) && /.*\.js$/.test(p); - }).forEach(function(p) { - aceModules.push(path + "/" + p.slice(0, -3)); + + var packages = [ + "ace", + "plugins/c9.ide.salesforce/salesforce.language", + ]; + + function readPackage(name, type, excludePattern) { + var targetPath = path.join(name, type); + + var parts = targetPath.split("/"); + var prefix = parts[0]; + + if (!pathMap[prefix]) + throw new Error("Cannot map prefix " + prefix + " for path " + targetPath); + + var sourcePath = path.resolve(pathMap[prefix], path.relative(prefix, targetPath)); + + if (!fs.existsSync(sourcePath)) + return; + + var files = fs + .readdirSync(sourcePath) + .filter(function(p) { + return !excludePattern.test(p) + && !/[\s#]/.test(p) + && /.*\.js$/.test(p); }); - } catch(e) {} + + files.map(function(p) { + result.push(path.join(targetPath, path.basename(p, ".js"))); + }); } - var aceModulePaths = [ - "ace", - "plugins/c9.ide.salesforce/salesforce.language" - ]; - aceModulePaths.forEach(function(p) { - addAceModules(p + "/modes", /_highlight_rules|_test|_worker|xml_util|_outdent|behaviour|completions/); - addAceModules(p + "/themes", /_test/); - addAceModules(p + "/ext", /_test/); - addAceModules(p + "/snippets", /_test/); + packages.forEach(function(name) { + var isAce = (name === "ace"); + readPackage(name, (isAce ? "mode" : "modes"), /_highlight_rules|_test|_worker|xml_util|_outdent|behaviour|completions/); + readPackage(name, (isAce ? "theme" : "themes"), /_test/); + readPackage(name, "ext", /_test/); + readPackage(name, "snippets", /_test/); }); function take() { - var p = aceModules.pop(); - console.log("building ", p, aceModules.length); - cb(p, aceModules.length && take); + var p = result.pop(); + console.log("building ", p, result.length); + cb(p, result.length && take); } take(); } + function copyStaticResources(usedPlugins, pathConfig, next) { var moduleDeps = require("architect-build/module-deps"); var copy = require('architect-build/copy'); From 2144e9701a1eb951cc88c67846749acc39a10fc8 Mon Sep 17 00:00:00 2001 From: Alex Brausewetter Date: Fri, 15 May 2015 10:47:54 +0000 Subject: [PATCH 3/6] Merge additional fixes --- plugins/c9.static/cdn.cli.js | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/plugins/c9.static/cdn.cli.js b/plugins/c9.static/cdn.cli.js index a4c5e2dc..4fe657e8 100644 --- a/plugins/c9.static/cdn.cli.js +++ b/plugins/c9.static/cdn.cli.js @@ -175,13 +175,14 @@ define(function(require, exports, module) { ]; function readPackage(name, type, excludePattern) { + if (!excludePattern) + excludePattern = /_test/; + + var prefix = name.split("/")[0]; var targetPath = path.join(name, type); - var parts = targetPath.split("/"); - var prefix = parts[0]; - if (!pathMap[prefix]) - throw new Error("Cannot map prefix " + prefix + " for path " + targetPath); + throw new Error("Cannot map prefix " + prefix + " for package " + name); var sourcePath = path.resolve(pathMap[prefix], path.relative(prefix, targetPath)); @@ -193,7 +194,7 @@ define(function(require, exports, module) { .filter(function(p) { return !excludePattern.test(p) && !/[\s#]/.test(p) - && /.*\.js$/.test(p); + && /\.js$/.test(p); }); files.map(function(p) { @@ -203,10 +204,12 @@ define(function(require, exports, module) { packages.forEach(function(name) { var isAce = (name === "ace"); - readPackage(name, (isAce ? "mode" : "modes"), /_highlight_rules|_test|_worker|xml_util|_outdent|behaviour|completions/); - readPackage(name, (isAce ? "theme" : "themes"), /_test/); - readPackage(name, "ext", /_test/); - readPackage(name, "snippets", /_test/); + var modesExcludePattern = /_highlight_rules|_test|_worker|xml_util|_outdent|behaviour|completions/; + + readPackage(name, (isAce ? "mode" : "modes"), modesExcludePattern); + readPackage(name, (isAce ? "theme" : "themes")); + readPackage(name, "ext"); + readPackage(name, "snippets"); }); function take() { From 1a397a4a721fec2223164908aa514a981cf2a3dd Mon Sep 17 00:00:00 2001 From: Alex Brausewetter Date: Fri, 15 May 2015 10:57:28 +0000 Subject: [PATCH 4/6] Do not use path to manipulate target --- plugins/c9.static/cdn.cli.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/c9.static/cdn.cli.js b/plugins/c9.static/cdn.cli.js index 4fe657e8..e826d37a 100644 --- a/plugins/c9.static/cdn.cli.js +++ b/plugins/c9.static/cdn.cli.js @@ -179,7 +179,7 @@ define(function(require, exports, module) { excludePattern = /_test/; var prefix = name.split("/")[0]; - var targetPath = path.join(name, type); + var targetPath = name + "/" + type; if (!pathMap[prefix]) throw new Error("Cannot map prefix " + prefix + " for package " + name); @@ -198,7 +198,7 @@ define(function(require, exports, module) { }); files.map(function(p) { - result.push(path.join(targetPath, path.basename(p, ".js"))); + result.push(targetPath + "/" + path.basename(p, ".js")); }); } From d74f1949b8317d5bfee13f1677481c0f1bab90c5 Mon Sep 17 00:00:00 2001 From: Alex Brausewetter Date: Fri, 15 May 2015 11:05:48 +0000 Subject: [PATCH 5/6] Do not use fs.exists and handle error instead --- plugins/c9.static/cdn.cli.js | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/plugins/c9.static/cdn.cli.js b/plugins/c9.static/cdn.cli.js index e826d37a..747e987e 100644 --- a/plugins/c9.static/cdn.cli.js +++ b/plugins/c9.static/cdn.cli.js @@ -186,18 +186,20 @@ define(function(require, exports, module) { var sourcePath = path.resolve(pathMap[prefix], path.relative(prefix, targetPath)); - if (!fs.existsSync(sourcePath)) - return; - - var files = fs - .readdirSync(sourcePath) - .filter(function(p) { - return !excludePattern.test(p) - && !/[\s#]/.test(p) - && /\.js$/.test(p); - }); + try { + var files = fs.readdirSync(sourcePath); + } catch (e) { + if (e.code === "ENOENT") return; + else throw e; + } - files.map(function(p) { + files = files.filter(function(p) { + return !excludePattern.test(p) + && !/[\s#]/.test(p) + && /\.js$/.test(p); + }); + + files.forEach(function(p) { result.push(targetPath + "/" + path.basename(p, ".js")); }); } From 7e74faa38e26c493767b731324d264ba1e166142 Mon Sep 17 00:00:00 2001 From: Alex Brausewetter Date: Fri, 15 May 2015 11:23:09 +0000 Subject: [PATCH 6/6] Use string instead of path --- plugins/c9.static/cdn.cli.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/c9.static/cdn.cli.js b/plugins/c9.static/cdn.cli.js index 747e987e..f9ea95b6 100644 --- a/plugins/c9.static/cdn.cli.js +++ b/plugins/c9.static/cdn.cli.js @@ -184,7 +184,7 @@ define(function(require, exports, module) { if (!pathMap[prefix]) throw new Error("Cannot map prefix " + prefix + " for package " + name); - var sourcePath = path.resolve(pathMap[prefix], path.relative(prefix, targetPath)); + var sourcePath = pathMap[prefix] + "/" + targetPath.substr(prefix.length); try { var files = fs.readdirSync(sourcePath); @@ -200,7 +200,7 @@ define(function(require, exports, module) { }); files.forEach(function(p) { - result.push(targetPath + "/" + path.basename(p, ".js")); + result.push(targetPath + "/" + p.replace(/.js$/, "")); }); }