[ 
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)

Reply via email to