2015-11-05 11 views
9

sto ottenendo il seguente errore quando si tenta di eseguire uno script bash in post Compositore installare ganci/aggiornamento:compositore in grado di eseguire posta script di installazione

> post-install.sh 
sh: 1: post-install.sh: not found 
Script post-install.sh handling the post-install-cmd event returned with an error 



    [RuntimeException] 
    Error Output: sh: 1: post-install.sh: not found 

composer.json originale

Funziona ma è solo fastidioso aggiornare i comandi post installazione/aggiornamento per l'esecuzione in due punti.

{ 
    "require": { 
    "twbs/bootstrap": "3.3.5" 
    ... 
    ... 
    }, 
    "scripts": { 
    "post-install-cmd": [ 
     "mkdir -p _libraries", 
     "cp -r vendor/twbs/bootstrap/dist _libraries/bootstrap/", 
     ... 
     ... 
    ], 
    "post-update-cmd": [ 
     "mkdir -p _libraries", 
     "cp -r vendor/twbs/bootstrap/dist _libraries/bootstrap/", 
     ... 
     ... 
    ] 
    } 
} 

Secondo il Composer documentation:

Uno script, in termini di compositore, può essere sia un callback PHP (definito come un metodo statico) o qualsiasi comando di riga di comando eseguibile.

Quindi il mio composer.json dovrebbe essere in grado di lavorare come tale:

composer.json Ricercato

{ 
    "require": { 
    "twbs/bootstrap": "3.3.5" 
    ... 
    ... 
    }, 
    "scripts": { 
    "post-install-cmd": [ 
     "post-install.sh" 
    ], 
    "post-update-cmd": [ 
     "post-install.sh" 
    ] 
    } 
} 

post-install.sh

eseguibile da tutti (0775) e si trova nella stessa directory del compos er.json

#!/bin/bash 

mkdir -p _libraries 
cp -r vendor/twbs/bootstrap/dist _libraries/bootstrap/ 
... 
... 
+0

hanno assegnato 'eseguibile post-install.sh'? (ad es. 'chmod 0755 post-install.sh') Dici che lo è, ma ho solo pensato di confermarlo. Inoltre, come viene eseguito da Composer? Lo chiama con qualche chiamata 'php'? –

+0

@ DavidC.Rankin Sì è eseguibile. Lo script di bash non viene eseguito da Composer. (Non sono sicuro di cosa stai chiedendo qui) – grim

+0

Come dovrebbe il compositore trovare quello script? – hek2mgl

risposta

7

In comments ho suggerito di usare

bash post-install.sh 

Questo sembra funzionare.

7

Altro modo per raggiungere definizione compito singolo è referencing scripts:

{ 
    "require": { 
    "twbs/bootstrap": "3.3.5" 
    ... 
    }, 
    "scripts": { 
    "your-cmd": [ 
     "mkdir -p _libraries", 
     "cp -r vendor/twbs/bootstrap/dist _libraries/bootstrap/", 
     ... 
    ], 
    "post-install-cmd": [ 
     "@your-cmd", 
     ... 
    ], 
    "post-update-cmd": [ 
     "@your-cmd", 
     ... 
    ] 
    } 
} 
Problemi correlati