You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Jack Lu (JIRA)" <ji...@apache.org> on 2018/04/13 10:20:00 UTC
[jira] [Created] (CB-14033) `cordova plugin add` skips directory on
windows
Jack Lu created CB-14033:
----------------------------
Summary: `cordova plugin add` skips directory on windows
Key: CB-14033
URL: https://issues.apache.org/jira/browse/CB-14033
Project: Apache Cordova
Issue Type: Bug
Components: cordova-lib
Environment: Cordova 6.2.0
Reporter: Jack Lu
Suppose we have a cordova plugin project and a test project that are under the same directory. The {color:#333333}cordova plugin project {color}is in directory p, and the test project in directory t. When I run following command in directory t:
{code:java}
cordova plugin add ..\p
{code}
the install fails, and I found it's due to the src directory missing during copying.
After digging into the source, I found it's caused by a special handling in the fetch action{color:#333333} on windows{color}. The source is [here|{color:#333333}https://github.com/apache/cordova-lib/blob/master/src/plugman/fetch.js#L299{color}].
{code:java}
/*
[CB-10423]
This is a special case. On windows we cannot create a symlink unless we are run as admin
The error that we have is because src contains dest, so we end up with a recursive folder explosion
This code avoids copy the one folder that will explode, and allows plugins to contain a demo project
and to install the plugin via `cordova plugin add ../`
*/
var resolvedSrcPath = path.resolve(plugin_dir);
var filenames = fs.readdirSync(resolvedSrcPath);
var relPath = path.relative(resolvedSrcPath,dest);
var relativeRootFolder = relPath.split('\\')[0];
filenames.splice(filenames.indexOf(relativeRootFolder),1);
{code}
in this case {color:#333333}relPath{color} will be "..\t\plugins\\{{plugin id}}", {color:#333333}relativeRootFolder{color} be "..", then {color:#333333}filenames.indexOf(relativeRootFolder){color} be -1, finally filenames lost the last element, which is the src directory in my case.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org