I thought we were shelling out that command, not trying to load the file. Then Windows would locate the version.bat file and run it, while Unixy platforms would see the version file with +x, and run it.
Are we no longer going through the shell? (This should be using child_process.exec, not .spawn, for example.) Braden On Wed, Oct 23, 2013 at 10:13 AM, Bryan Higgins <bhigg...@blackberry.com>wrote: > This issue has to do with the host system rather than platform. Android and > BB10 both have version.bat files. > > > On Wed, Oct 23, 2013 at 9:56 AM, Sergey Grebnov (Akvelon) < > v-seg...@microsoft.com> wrote: > > > Hi, > > > > #1 The problem > > Right now the simplest (and also the most correct IMO) way to specify > > plugin restrictions to specific cordova version is the following: > > > > plugin.xml: > > > > <engines> > > <engine name="cordova" version=">=2.7.0" /> > > </engines> > > > > But in this case as per plugman engines definition > > (plugman/src/util/default-engines.js) plugman will always try to find > > version verification script in some predefined location, not taking into > > account currently running platform, and will fail on WP since correct > > script name is version.bat, not just version. > > > > module.exports = function(project_dir){ > > return { > > 'cordova': > > { 'platform':'*', 'scriptSrc': > > path.join(project_dir,'cordova','version') }, <- works in general, but > NOT > > for WP7/8 > > ... > > 'cordova-wp8': > > { 'platform':'wp8', 'scriptSrc': > > path.join(project_dir,'cordova','version.bat') }, <- correct location, > not > > used in case of example above > > > > > > This means that right now there is no way to specify platform dependent > > location of version verification script for 'cordova' engine check which > > is going to be the most popular. > > > > #2 Proposed solution > > > > Taking into account we have platform context when we are looking for the > > appropriate engine > > plugman/src/install.js > > function getEngines(pluginElement, platform, project_dir, > > plugin_dir){ > > > > I propose to think about 'cordova' engine settings (in > default-engines.js) > > as a fallback in case we don't have any platform specific engine for some > > platform. So in case of engine.attrib["name"] == 'cordova' we should > check > > if there is engine with ['cordova-' + platform] name first and if it does > > not exist use 'cordova' engine settings only. For example we already do > > this by the following line, but we need both engines (cordova and > > cordova-wp8) specified in plugin.xml file. Thoughts? > > > > // make sure we check for platform req's and not just cordova reqs > > if(cordovaEngineIndex && cordovaPlatformEngineIndex) > > uncheckedEngines.pop(cordovaEngineIndex); > > > > PS. Another minor potential issue seems to be in check above; > > cordovaEngineIndex && cordovaPlatformEngineIndex will return false if one > > of indexes is zero (zero is valid/correct index in this context so it > must > > be true). > > > > Thx! > > Sergey > > >