/** * 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)]); } }