[
https://issues.apache.org/jira/browse/CB-6481?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14090758#comment-14090758
]
ASF GitHub Bot commented on CB-6481:
------------------------------------
Github user csantanapr commented on the pull request:
https://github.com/apache/cordova-lib/pull/55#issuecomment-51601294
@sgrebnov So far I have found one problem.
When I have the hooks tags inside a platform, the second tag for
"after_prepare" doesn't work.
This is because options.plugin get set in the Context.opts when calling
"before_prepare" affecting the search for scripts in "after_prepare"
if the two tags are outside the <platform> tag then it finds the script,
but inside the <platform> tag it doesn't
create a plugin.xml like this:
You will notice that iosAfterPrepare.js never runs
<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android"
id="com.plugin.withhooks"
version="0.0.1">
<name>Plugin with hooks</name>
<platform name="ios">
<hook type="before_prepare" src="scripts/ios/iosBeforePrepare.js" />
<hook type="after_prepare" src="scripts/ios/iosAfterPrepare.js" />
</platform>
</plugin>
One way to fix it is doing a Copy in Context.js, and do a copy of opts,
this way opts can be use in other places without the chance of being modify.
Here is a change I did:
https://github.com/csantanapr/cordova-lib/commit/a0ef4ef172f8818c3bc770899dba5dbab06fa03e#diff-d41d8cd98f00b204e9800998ecf8427e
This might be one, avoid modifying context and doing a copy of opts:
https://github.com/MSOpenTech/cordova-lib/blob/CB-6481-hooks/cordova-lib/src/hooks/HooksRunner.js#L161
> Add unified hooks support for cordova app and plugins
> -----------------------------------------------------
>
> Key: CB-6481
> URL: https://issues.apache.org/jira/browse/CB-6481
> Project: Apache Cordova
> Issue Type: New Feature
> Components: CLI, Plugman
> Reporter: Sergey Grebnov
> Assignee: Sergey Grebnov
>
> As per "Proposal: hooks support for plugins" dev mail thread discussion
> Hi, I have an idea how we can add more flexibility to plugin developers.
> Note, right now we have Application Developers – someone who use Cordova for
> developing applications and Plugin Developers – someone who creates plugins
> so that Application Developers can use them. For Application Developers we
> expose hooks so that they can customize their build/package/etc process. I
> want us to provide similar sort of flexibility to Plugin Developers so that
> they can go beyond of <source/>, <framework/> tags and get mechanism to add
> custom installation, build logic required by a plugin. Example usage will
> include: downloading/compiling additional binaries, marking source file to be
> copied to output dir, changing target build platform, etc. At present time
> the steps described could be only achieved by hooks manually added by
> Application Developer, but the right way is to allow Plugin Developer to
> expose this as part of plugin definition.
> Example configuration could look like
> ```
> <script type="postinstall" src="scripts/postinstall.js" />
> <script type="preinstall" src="scripts/preinstall.js" />
> <script type="install" src="scripts/install.js" />
> ```
> beforeinstall/preinstall – run before plugin is installed
> install/postinstall/afterinstall – run after plugin is installed
> uninstall – run after plugin is uninstalled
--
This message was sent by Atlassian JIRA
(v6.2#6252)