[ 
https://issues.apache.org/jira/browse/CB-12738?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Marcus Pridham updated CB-12738:
--------------------------------
    Description: 
You can see this with the cordova-plugin-file-transfer.  When you install this 
plugin and it installs the cordova-plugin-file plugin dependency the CLI writes
Fetching plugin "cordova-plugin-file" via npm

The first problem is in the PluginInfo _parseDependency function
https://git-wip-us.apache.org/repos/asf?p=cordova-lib.git;a=blob;f=cordova-common/src/PluginInfo/PluginInfo.js;h=48174707b0dbf6f60eb65faeb14c51e4b3868b1b;hb=HEAD#l108

It does not parse out the dependency version.  This part:

{code}
        var dep =
            { id : tag.attrib.id
            , url : tag.attrib.url || ''
            , subdir : tag.attrib.subdir || ''
            , commit : tag.attrib.commit
            };
{code}

Should be:

{code}
        var dep =
            { id : tag.attrib.id
            , url : tag.attrib.url || ''
            , subdir : tag.attrib.subdir || ''
            , commit : tag.attrib.commit
            , version : tag.attrib.version
            };
{code}  

The second problem is in the plugman installDependency method
https://git-wip-us.apache.org/repos/asf?p=cordova-lib.git;a=blob;f=cordova-lib/src/plugman/install.js;h=fca77c688d2b8f19ce63cb176f50ecd44c9a9032;hb=HEAD#l603

The dep_src is only constructed using the plugin id.

This:

{code}
var dep_src = dep.url.length ? dep.url : dep.id;
{code}

Should look something like:

{code}
        var dep_src;

        if (dep.url.length) {
            dep_src = dep.url;
        }
        else if (dep.version) {
            dep_src = dep.id + '@' + dep.version;
        } else {
            dep_src = dep.id;
        } 
{code}

With these changes the Cordova CLI correctly reports:

Fetching plugin "cordova-plugin-file@^4.0.0" via npm


  was:
You can see this with the cordova-plugin-file-transfer.  When you install this 
plugin and it installs the cordova-plugin-file plugin dependency the CLI writes
Fetching plugin "cordova-plugin-file" via npm

The first problem is in the PluginInfo _parseDependency function
https://git-wip-us.apache.org/repos/asf?p=cordova-lib.git;a=blob;f=cordova-common/src/PluginInfo/PluginInfo.js;h=48174707b0dbf6f60eb65faeb14c51e4b3868b1b;hb=HEAD#l108

It does not parse out the dependency version.  This part:

{code}
        var dep =
            { id : tag.attrib.id
            , url : tag.attrib.url || ''
            , subdir : tag.attrib.subdir || ''
            , commit : tag.attrib.commit
            };
{code}

Should be:
        var dep =
            { id : tag.attrib.id
            , url : tag.attrib.url || ''
            , subdir : tag.attrib.subdir || ''
            , commit : tag.attrib.commit
            , version : tag.attrib.version
            };
   
The second problem is in the plugman installDependency method
https://git-wip-us.apache.org/repos/asf?p=cordova-lib.git;a=blob;f=cordova-lib/src/plugman/install.js;h=fca77c688d2b8f19ce63cb176f50ecd44c9a9032;hb=HEAD#l603

The dep_src is only constructed using the plugin id.

This:

var dep_src = dep.url.length ? dep.url : dep.id;

Should look something like:

        var dep_src;

        if (dep.url.length) {
            dep_src = dep.url;
        }
        else if (dep.version) {
            dep_src = dep.id + '@' + dep.version;
        } else {
            dep_src = dep.id;
        } 


With these changes the Cordova CLI correctly reports:

Fetching plugin "cordova-plugin-file@^4.0.0" via npm



> cordova ignores plugin dependency version
> -----------------------------------------
>
>                 Key: CB-12738
>                 URL: https://issues.apache.org/jira/browse/CB-12738
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: cordova-cli, cordova-lib
>            Reporter: Marcus Pridham
>
> You can see this with the cordova-plugin-file-transfer.  When you install 
> this plugin and it installs the cordova-plugin-file plugin dependency the CLI 
> writes
> Fetching plugin "cordova-plugin-file" via npm
> The first problem is in the PluginInfo _parseDependency function
> https://git-wip-us.apache.org/repos/asf?p=cordova-lib.git;a=blob;f=cordova-common/src/PluginInfo/PluginInfo.js;h=48174707b0dbf6f60eb65faeb14c51e4b3868b1b;hb=HEAD#l108
> It does not parse out the dependency version.  This part:
> {code}
>         var dep =
>             { id : tag.attrib.id
>             , url : tag.attrib.url || ''
>             , subdir : tag.attrib.subdir || ''
>             , commit : tag.attrib.commit
>             };
> {code}
> Should be:
> {code}
>         var dep =
>             { id : tag.attrib.id
>             , url : tag.attrib.url || ''
>             , subdir : tag.attrib.subdir || ''
>             , commit : tag.attrib.commit
>             , version : tag.attrib.version
>             };
> {code}  
> The second problem is in the plugman installDependency method
> https://git-wip-us.apache.org/repos/asf?p=cordova-lib.git;a=blob;f=cordova-lib/src/plugman/install.js;h=fca77c688d2b8f19ce63cb176f50ecd44c9a9032;hb=HEAD#l603
> The dep_src is only constructed using the plugin id.
> This:
> {code}
> var dep_src = dep.url.length ? dep.url : dep.id;
> {code}
> Should look something like:
> {code}
>         var dep_src;
>         if (dep.url.length) {
>             dep_src = dep.url;
>         }
>         else if (dep.version) {
>             dep_src = dep.id + '@' + dep.version;
>         } else {
>             dep_src = dep.id;
>         } 
> {code}
> With these changes the Cordova CLI correctly reports:
> Fetching plugin "cordova-plugin-file@^4.0.0" via npm



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org
For additional commands, e-mail: issues-h...@cordova.apache.org

Reply via email to