You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ag...@apache.org on 2015/05/05 21:50:27 UTC

cordova-lib git commit: CB-8757 Resolve symlinks in order to avoid relative path issues (close #212)

Repository: cordova-lib
Updated Branches:
  refs/heads/master cf037c850 -> 7f38e617f


CB-8757 Resolve symlinks in order to avoid relative path issues (close #212)


Project: http://git-wip-us.apache.org/repos/asf/cordova-lib/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-lib/commit/7f38e617
Tree: http://git-wip-us.apache.org/repos/asf/cordova-lib/tree/7f38e617
Diff: http://git-wip-us.apache.org/repos/asf/cordova-lib/diff/7f38e617

Branch: refs/heads/master
Commit: 7f38e617f707b36c921984dd8b90d874579627e1
Parents: cf037c8
Author: Martin Bektchiev <ma...@telerik.com>
Authored: Tue May 5 18:37:14 2015 +0300
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Tue May 5 15:49:44 2015 -0400

----------------------------------------------------------------------
 cordova-lib/spec-plugman/install.spec.js |  2 +-
 cordova-lib/src/cordova/util.js          | 10 ++++++++++
 cordova-lib/src/plugman/install.js       |  7 +++++++
 cordova-lib/src/plugman/uninstall.js     |  8 ++++++++
 4 files changed, 26 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/7f38e617/cordova-lib/spec-plugman/install.spec.js
----------------------------------------------------------------------
diff --git a/cordova-lib/spec-plugman/install.spec.js b/cordova-lib/spec-plugman/install.spec.js
index 1266449..75efcd7 100644
--- a/cordova-lib/spec-plugman/install.spec.js
+++ b/cordova-lib/spec-plugman/install.spec.js
@@ -36,7 +36,7 @@ var install = require('../src/plugman/install'),
     spec    = __dirname,
     done    = false,
     srcProject = path.join(spec, 'projects', 'android_install'),
-    temp_dir = path.join(os.tmpdir(), 'plugman-test'),
+    temp_dir = path.join(fs.realpathSync(os.tmpdir()), 'plugman-test'),
     project = path.join(temp_dir, 'android_install'),
     plugins_dir = path.join(spec, 'plugins'),
     plugins_install_dir = path.join(project, 'cordova', 'plugins'),

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/7f38e617/cordova-lib/src/cordova/util.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/util.js b/cordova-lib/src/cordova/util.js
index d6e768e..2707b85 100644
--- a/cordova-lib/src/cordova/util.js
+++ b/cordova-lib/src/cordova/util.js
@@ -53,6 +53,7 @@ exports.preProcessOptions = preProcessOptions;
 exports.addModuleProperty = addModuleProperty;
 exports.getOrigWorkingDirectory = getOrigWorkingDirectory;
 exports.fixRelativePath = fixRelativePath;
+exports.convertToRealPathSafe = convertToRealPathSafe;
 exports.isDirectory = isDirectory;
 exports.isUrl = isUrl;
 
@@ -143,6 +144,15 @@ function fixRelativePath(value, /* optional */ cwd) {
     return ret;
 }
 
+// Resolve any symlinks in order to avoid relative path issues. See https://issues.apache.org/jira/browse/CB-8757
+function convertToRealPathSafe(path) {
+    if (path && fs.existsSync(path)) {
+        return fs.realpathSync(path);
+    }
+
+    return path;
+}
+
 // Recursively deletes .svn folders from a target path
 function deleteSvnFolders(dir) {
     var contents = fs.readdirSync(dir);

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/7f38e617/cordova-lib/src/plugman/install.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/plugman/install.js b/cordova-lib/src/plugman/install.js
index ca15809..169a5d3 100644
--- a/cordova-lib/src/plugman/install.js
+++ b/cordova-lib/src/plugman/install.js
@@ -66,6 +66,9 @@ var PluginInfoProvider = require('../PluginInfoProvider');
 // possible options: subdir, cli_variables, www_dir
 // Returns a promise.
 module.exports = function installPlugin(platform, project_dir, id, plugins_dir, options) {
+    project_dir = cordovaUtil.convertToRealPathSafe(project_dir);
+    plugins_dir = cordovaUtil.convertToRealPathSafe(plugins_dir);
+
     options = options || {};
     options.is_top_level = true;
     plugins_dir = plugins_dir || path.join(project_dir, 'cordova', 'plugins');
@@ -246,6 +249,10 @@ function getEngines(pluginInfo, platform, project_dir, plugin_dir){
 // Returns a promise.
 module.exports.runInstall = runInstall;
 function runInstall(actions, platform, project_dir, plugin_dir, plugins_dir, options) {
+    project_dir = cordovaUtil.convertToRealPathSafe(project_dir);
+    plugin_dir = cordovaUtil.convertToRealPathSafe(plugin_dir);
+    plugins_dir = cordovaUtil.convertToRealPathSafe(plugins_dir);
+
     options = options || {};
     options.graph = options.graph || new dep_graph();
     options.pluginInfoProvider = options.pluginInfoProvider || new PluginInfoProvider();

http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/7f38e617/cordova-lib/src/plugman/uninstall.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/plugman/uninstall.js b/cordova-lib/src/plugman/uninstall.js
index 341a97b..ea8b087 100644
--- a/cordova-lib/src/plugman/uninstall.js
+++ b/cordova-lib/src/plugman/uninstall.js
@@ -43,6 +43,9 @@ var PluginInfoProvider = require('../PluginInfoProvider');
 // Returns a promise.
 module.exports = uninstall;
 function uninstall(platform, project_dir, id, plugins_dir, options) {
+    project_dir = cordovaUtil.convertToRealPathSafe(project_dir);
+    plugins_dir = cordovaUtil.convertToRealPathSafe(plugins_dir);
+
     options = options || {};
     options.is_top_level = true;
     options.pluginInfoProvider = options.pluginInfoProvider || new PluginInfoProvider();
@@ -62,6 +65,9 @@ function uninstall(platform, project_dir, id, plugins_dir, options) {
 
 // Returns a promise.
 module.exports.uninstallPlatform = function(platform, project_dir, id, plugins_dir, options) {
+    project_dir = cordovaUtil.convertToRealPathSafe(project_dir);
+    plugins_dir = cordovaUtil.convertToRealPathSafe(plugins_dir);
+
     options = options || {};
     options.is_top_level = true;
     options.pluginInfoProvider = options.pluginInfoProvider || new PluginInfoProvider();
@@ -91,6 +97,8 @@ module.exports.uninstallPlatform = function(platform, project_dir, id, plugins_d
 
 // Returns a promise.
 module.exports.uninstallPlugin = function(id, plugins_dir, options) {
+    plugins_dir = cordovaUtil.convertToRealPathSafe(plugins_dir);
+
     options = options || {};
     options.pluginInfoProvider = options.pluginInfoProvider || new PluginInfoProvider();
     var pluginInfoProvider = options.pluginInfoProvider;


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org