Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
ncou committed Mar 13, 2021
1 parent 38530e0 commit 00417f6
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 12 deletions.
16 changes: 6 additions & 10 deletions src/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,7 @@ public function addBootloader(BootloaderInterface $bootloader): void
public function run()
{
// TODO : il faudrait surement mettre un try/catch autour de la méthode boot() et dans le catch utiliser la classe ErrorHandler::handleException($e) pour afficher les erreurs, ca permettrait d'aoir une gestion des erreurs même si l'utilisateur n'a pas utilisé la méthode init() avec le paramétre $handleErrors à true !!! https://github.com/spiral/framework/blob/e63b9218501ce882e661acac284b7167b79da30a/src/Boot/src/AbstractKernel.php#L146
//$this->boot();
$this->serviceManager->boot();
$this->boot();

// TODO : mettre ce code dans une méthode private "dispatch()" ????
foreach ($this->dispatchers as $dispatcher) {
Expand All @@ -162,29 +161,26 @@ public function run()
// TODO : pourquoi ne pas mettre cette méthode en private ????
public function boot(): void
{
$this->serviceManager->boot();

/*
if (! $this->isBooted) {
$this->isBooted = true;
foreach ($this->bootloaders as $bootloader) {
//$bootloader->bootload();
$bootloader->bootload($this->container);
}
}
}*/
}

// TODO : ajouter un paramétre boolen $debug pour savoir si on active ou non le error handler->register()
// TODO : tester le cas ou on appel plusieurs fois cette méthode. Il faudra surement éviter de réinsérer plusieurs fois les bootloaders et autres service provider
// TODO : passer en paramétre un tableau de "environment" values qui permettra d'initialiser le bootloader DotEnvBootloader::class
// TODO : permettre de passer en paramétre une liste de "providers" ??? ca permettrait de facilement initialiser l'application avec une redéfinition de certains service par l'utilisateur !!!
// TODO : il faudrait automatiquement ajouter le ConsoleDispatcher à l'application car on aura toujours le package chiron/console de présent pour ce framework et on doit pourvoir utiliser la console, donc ajouter d'office cette classe au tableau des dispatchers ca nous fera gagner du temps (et donc la classe Console\Bootloader\ConsoleDispatcherBootloader n'est plus nécessaire !!!!)
public static function init(array $paths, array $values = [], bool $handleErrors = true): self
public static function init(array $paths, array $values = []): self
{
// TODO : attention il faudrait pouvoir faire un register une seule fois pour les error handlers !!!!
// used to handle errors in the bootloaders processing.
if ($handleErrors) {
ErrorHandler::enable();
}

// TODO : il faudrait gérer le cas ou l'application est déjà "create" et qu'on récupére cette instance plutot que de rappeller la méthode. (c'est dans le cas ou l'utilisateur fait un App::create qu'il ajoute des providers ou autre et qu'ensuite il fasse un App::init pour finaliser l'initialisation !!!) Je suppose qu'il faudra garder un constante public de classe static avec l'instance (comme pour Container::$instance). Cela permettra aussi de créer une fonction globale "app()" qui retournera l'instance de la classe Application::class. Cela permettra en plus de la facade Facade\Application de passer par cette méthode pour injecter des bootloader par exemple.
$app = self::create();

Expand Down
2 changes: 2 additions & 0 deletions src/Bootloader/EnvironmentBootloader.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ public function boot(Environment $environment, Directories $directories): void

/**
* Read the dot env file and insert the values in $_ENV and $_SERVER.
* If the dot env file isn't presents the load fail silently and return an empty array.
*
* @param string $path The directory path containing the dot env file.
*
Expand All @@ -73,6 +74,7 @@ private static function loadDotEnvFile(string $path): array

$dotenv = Dotenv::createImmutable($path, '.env');

// TODO : vérifier que cela retourne bien un tableau vide si le fichier .env n'est pas trouvé (cad lors du silent fail).
try {
// Load environment file in given directory path, silently failing if it doesn't exist.
return $dotenv->safeLoad();
Expand Down
14 changes: 12 additions & 2 deletions src/Command/PublishCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
use Chiron\Core\Exception\PublishException;
use Closure;

// DOCUMENTATION : https://stillat.com/blog/2016/12/07/laravel-artisan-vendor-command-the-vendorpublish-command

//https://github.com/laravelista/lumen-vendor-publish/blob/master/src/VendorPublishCommand.php
//https://github.com/illuminate/support/blob/master/ServiceProvider.php#L370

Expand Down Expand Up @@ -46,7 +48,7 @@ public function perform(Publisher $publisher, Filesystem $filesystem, Directorie

$publisher->setCallback(Closure::fromCallable([$this, 'status']));

try{
try {
$publisher->publish($this->option('force'));
} catch(PublishException $e){
$this->error($e->getMessage());
Expand All @@ -66,14 +68,22 @@ public function perform(Publisher $publisher, Filesystem $filesystem, Directorie
* @param string $to
* @param string $type
*/
// TODO : ne pas afficher le $type, il suffit d'aficher une ligne seulement lors de la copie d'un fichier, on s'en fiche de la création d'un "Directory"
// TODO : afficher plus ou moins d'infos selon le niveau de debug.
// TODO : utiliser un compteur (variable de classe qu'on passerait à la closure via l'instruction use) qui serait incrémenté pour afficher à la fin de la commande le nombre de fichiers copiés ???
private function status(string $from, string $to, string $type)
{
$rootPath = $this->directories->get('@root');
$from = $this->filesystem->relativePath($from, $rootPath);
$to = $this->filesystem->relativePath($to, $rootPath);

// TODO : utiliser plutot ce bout de code ??? Ca évitera de mettre dans les paramétres de la méthode perform une instance Directories et Filesystem, donc une signature de méthode plus propre !!!!
//$from = str_replace(directory('@root'), '', $from);
//$to = str_replace(directory('@root'), '', $to);

// TODO : Attention on n'est pas sur que la console support le UTF8, utiliser plutot un "tiret" à la place du signe checked.
$this->line(
sprintf('<info> ✔ Copied %s</info> <comment>[%s]</comment> <info>To</info> <comment>[%s]</comment>',
sprintf('<info> ✔ Copied %s </info><comment>%s</comment> <info>To</info> <comment>%s</comment>',
$type,
$from,
$to)
Expand Down

0 comments on commit 00417f6

Please sign in to comment.