Created a JIRA issue to implement Andrew's strawman
https://issues.apache.org/jira/browse/CB-8461



2015-02-11 1:27 GMT+01:00 Michal Mocny <[email protected]>:

> Indeed.  No platform tag kinda implies js-only plugin, so captures the
> spirit of the intent well!
>
> On Tue, Feb 10, 2015 at 5:11 PM, Steven Gill <[email protected]>
> wrote:
>
> > Sounds like a smart change.
> > On Feb 10, 2015 2:10 PM, "tommy-carlos williams" <[email protected]>
> > wrote:
> >
> > > Nice
> > >
> > > +1
> > >
> > > One change in Cordova is a lot bette than expecting all plugins to
> change
> > > ;)
> > >
> > >
> > > --
> > > tommy-carlos williams
> > >
> > > On 11 February 2015 at 07:54:17, Andrew Grieve ([email protected])
> > > wrote:
> > >
> > > Strawman:
> > >
> > > If plugin.xml has *any* <platform>s, then only apply global tags to
> those
> > > platforms.
> > > If plugin.xml has *no* <platform>s, then apply global tags to all
> > > platforms.
> > >
> > > On Tue, Feb 10, 2015 at 2:18 PM, Tommy Williams <[email protected]>
> > > wrote:
> > >
> > > > This won't actually help right now, but that feature detection would
> > > > actually be possible if the plugin's "clobbers" was always a child of
> > the
> > > > "platform" in plugin.xml.
> > > >
> > > > Right now, most plugins have their clobbers global to all platforms,
> > > > supported or not. If the clobbers is a child of the platform, then
> the
> > > > relevant js function/object would be undefined on an unsupported
> > > platform.
> > > >
> > > > This practice would also help in a situation where you might want
> > > different
> > > > plugins for different platforms, but exposing similar functionality
> on
> > > one
> > > > clobbered function/object (eg: the popular barcode scanner plugin +
> the
> > > > blackberry barcode scanner plugin).
> > > >
> > > > Unfortunately, most plugins don't do this, even though it is
> possible.
> > > > The natural way to determine whether some functionality is available
> is
> > > to
> > > > use the "feature detection" pattern. That is, if you want to call
> some
> > > > function normally found at "myobj.myfunc", you write code like this:
> > > >
> > > > If (myobj && (typeof myobj.myfunc === 'function')) ...
> > > >
> > > > For this to work you must take care to remove plugins that don't
> > support
> > > > your platform before you build for that platform. For example, before
> > you
> > > > build for firefoxos, you must remove the barcodescanner plugin (and
> > then
> > > > add it back when you build for supported platforms). Granted, this is
> > > > awkward, but I think it's worse to read the package.json file.
> > > >
> > > > Really the CLI should make the feature detection pattern work without
> > > > having to exclude plugins on unsupported platforms. That is, if a
> > plugin
> > > > doesn't support a platform, then it should contribute nothing when
> you
> > > > build for that platform.
> > > >
> > > > Julian
> > > >
> > > > -----Original Message-----
> > > > From: Axel Nennker [mailto:[email protected]]
> > > > Sent: Tuesday, February 10, 2015 11:48 AM
> > > > To: dev
> > > > Subject: Re: Does this plugin support the current platform?
> > > >
> > > > And then the app has to load that package.json ?
> > > > On Feb 10, 2015 5:28 PM, "Steven Gill" <[email protected]>
> wrote:
> > > >
> > > > > Plugin.xml has a platforms tag for what platforms it supports. That
> > > > > info gets uploaded to the Cordova plugins registry when publishing.
> > > > >
> > > > > Soon this info will be available in package.json file each plugin
> > has.
> > > > > On Feb 10, 2015 7:25 AM, "Axel Nennker" <[email protected]>
> > wrote:
> > > > >
> > > > > > Hi,
> > > > > >
> > > > > > is there a way how an app can determine whether a plugin supports
> > > > > > the current platform?
> > > > > >
> > > > > > E.g.: the barcodescanner plugin is not supporting firefoxos How
> > > > > > could an app know that which out hardcoding this into the app?
> > > > > >
> > > > > > If there is a standard way in Cordova then this is a userland
> > > question.
> > > > > > If not then this is a feature request to add this info to e.g.
> > > > > > cordova/plugin_list exports.metadata ?!
> > > > > >
> > > > > > -Axel
> > > > > >
> > > > >
> > > >
> > >
> >
>

Reply via email to