2015-11-05 15 views
9

Dostaję następujący błąd podczas próby uruchomienia skryptu bash w Kompozytor postu instalacji/aktualizacji haki:Kompozytor nie można uruchomić po zainstalowaniu skrypt

> 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 

oryginalny composer.json

Działa, ale po prostu denerwuje się aktualizacja poleceń po instalacji/aktualizacji, które działają w dwóch miejscach.

{ 
    "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/", 
     ... 
     ... 
    ] 
    } 
} 

Według Composer documentation:

scenariuszem, w warunkach kompozytora może być albo zwrotnego PHP (zdefiniowaną jako metoda statyczna) lub jakąkolwiek polecenia wiersza wykonywalnego.

więc moja composer.json powinien móc pracować jako takiej:

poszukiwanych composer.json

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

post-install.sh

wykonywalny przez wszystkich (0775) i znajduje się w tym samym katalogu, co kompozycje er.json

#!/bin/bash 

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

zrobiłeś 'po install.sh' wykonywalny? (np. 'chmod 0755 post-install.sh') Mówisz, że tak, ale pomyślałem, że to potwierdzę. W jaki sposób jest on realizowany przez Composer? To wywołanie go przez jakieś wywołanie 'php'? –

+0

@ DavidC.Rankin Tak, to plik wykonywalny. Skrypt bash nie jest wykonywany przez Composer. (Nie jestem pewien, o co tutaj prosisz) – grim

+0

Jak powinien znaleźć ten skrypt autor? – hek2mgl

Odpowiedz

7

Inny sposób osiągnięcia definicji zadania pojedynczy jest 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", 
     ... 
    ] 
    } 
} 
Powiązane problemy