Example #1
0
 /**
  * resolveProjects
  *
  * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
  */
 protected function resolveProjects()
 {
     if (!$this->projects->isEmpty()) {
         return;
     }
     /**
      * @var \Codex\Codex\Menus\Node $projectsMenu
      */
     $projectsMenu = $this->menus->add('projects_menu');
     $finder = new Finder();
     $projects = $finder->in($this->rootDir)->files()->name('config.php')->depth('<= 1')->followLinks();
     foreach ($projects as $projectDir) {
         /** @var \SplFileInfo $projectDir */
         $name = Path::getDirectoryName($projectDir->getPath());
         $config = $this->container->make('fs')->getRequire($projectDir->getRealPath());
         $config = array_replace_recursive($this->config('default_project_config'), $config);
         $project = $this->container->make(Project::class, ['factory' => $this, 'name' => $name, 'config' => $config]);
         $this->runHook('project:make', [$this, $project]);
         $this->projects->put($name, $project);
         $projectsMenu->add($name, $name, 'root', [], ['href' => $this->url($project)]);
     }
 }