public function getInstall(Dispatcher $dispatcher, Installer $installer, Definition $definition)
 {
     $dispatcher->fire(new BeforeInstallEvent($installer, new BufferedOutput()));
     $messages = $installer->testRequirements();
     $tasks = [];
     $versions = $installer->getVersions();
     foreach ($versions as $version) {
         foreach ($installer->getTasksForVersion($version) as $task) {
             $tasks[] = $task;
         }
     }
     return view('larastaller::install')->with(['larastaller' => config('larastaller'), 'version' => $definition->getLatestVersion(), 'requirements_messages' => $messages, 'tasks' => $tasks]);
 }
 public function boot(Definition $definition, Installation $installation, Router $router)
 {
     $configPath = __DIR__ . '/../config/larastaller.php';
     $this->publishes([$configPath => config_path('larastaller.php')], 'config');
     $this->loadViewsFrom(__DIR__ . '/../resources/views', 'larastaller');
     $definition->setRequirements(config('larastaller.requirements'));
     $definition->setVersions(config('larastaller.versions'));
     $this->commands([InstallCommand::class, ChangesCommand::class]);
     if (!$installation->isInstalled()) {
         //redirect none install requests to the installer
         $this->registerMiddleware('LeeMason\\Larastaller\\Middlewares\\InstallMiddleware');
         $router->get('install', ['as' => 'installer.get', 'uses' => Http\Controllers\InstallController::class . '@getInstall']);
         $router->post('install/validate', ['as' => 'installer.validate', 'uses' => Http\Controllers\InstallController::class . '@postInstallValidate']);
         $router->post('install', ['as' => 'installer.post', 'uses' => Http\Controllers\InstallController::class . '@postInstall']);
     } elseif (!$installation->isUpdated()) {
         //redirect none update requests to the installer
         $this->registerMiddleware('LeeMason\\Larastaller\\Middlewares\\UpdateMiddleware');
         $router->get('update', function () {
             return 'updater';
         });
     }
 }