Как проверить ввод в функции AskAndValidate композиторов

Эй, ребята, я разрушал Интернет, пытаясь найти ключ к разгадке || пример || подобные.

Я пытаюсь запустить композитор 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,
вместо того, чтобы вернуться к вопросу, он просто останавливает выполнение.

Так что мой вопрос будет —

  1. Что я возвращаю, если не ложь, если аргумент не соответствует моим требованиям проверки.

  2. Также еще одна мысль, с которой я хотел бы помочь, — выяснить, как придать цвет выводу (который в настоящее время по умолчанию консольный белый), так как я хочу, чтобы мои вопросы были зеленого цвета.
    PS — я нашел HtmlOutputFormatter класс, но не мог понять, как использовать его, чтобы изменить цвет. И я знаю, что есть api docs композитора, но это не помогает.

Пожалуйста, кто-нибудь / кто-нибудь может помочь мне здесь?

1

Решение

Следующий https://getcomposer.org/apidoc/master/Composer/IO/IOInterface.html#method_askAndValidate Вы должны бросить \ Exception всякий раз, когда проверка не удалась. В противном случае вернуть данные из пользовательского ввода.
Я полагаю, вы могли бы изменить их, но это должно быть обработано после проверки, вне обратного вызова.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector