Эй, ребята, я разрушал Интернет, пытаясь найти ключ к разгадке || пример || подобные.
Я пытаюсь запустить композитор post-install-cmd скрипт
мой текущий код —
namespace Core\Scripts;
define('DS', DIRECTORY_SEPARATOR);
use Composer\Script\Event;
use Composer\Console\HtmlOutputFormatter;class installer {
public static function install(Event $event){
$callback = (function($arg){
if(is_dir($arg)){
return true;
}else{
return false;
}
});
$composer = $event->getComposer();
$IO = $event->getIO();
$currentDir = getcwd();
$resp = $IO->ask('Is `'.$currentDir.'` the path to project root? :', true);
var_dump($resp);
if($resp === false || strtolower($resp) === 'no'){
$resp2 = $IO->askAndValidate('Please enter the path to project root :', $callback ,3);
define('_pROOT', $resp2);
}else{
define('_pROOT', $currentDir);
}
print_r(_pROOT);
}
}
Здесь я пытаюсь получить пользовательский ввод с консоли и проверить его. Код выполняется правильно до $callback
функция. Но с функцией обратного вызова на return false
,
вместо того, чтобы вернуться к вопросу, он просто останавливает выполнение.
Так что мой вопрос будет —
Что я возвращаю, если не ложь, если аргумент не соответствует моим требованиям проверки.
Также еще одна мысль, с которой я хотел бы помочь, — выяснить, как придать цвет выводу (который в настоящее время по умолчанию консольный белый), так как я хочу, чтобы мои вопросы были зеленого цвета.
PS — я нашел HtmlOutputFormatter
класс, но не мог понять, как использовать его, чтобы изменить цвет. И я знаю, что есть api docs композитора, но это не помогает.
Пожалуйста, кто-нибудь / кто-нибудь может помочь мне здесь?
Следующий https://getcomposer.org/apidoc/master/Composer/IO/IOInterface.html#method_askAndValidate Вы должны бросить \ Exception всякий раз, когда проверка не удалась. В противном случае вернуть данные из пользовательского ввода.
Я полагаю, вы могли бы изменить их, но это должно быть обработано после проверки, вне обратного вызова.
Других решений пока нет …