Platformsh\Cli\Local\LocalApplication::getApplications PHP Method

getApplications() public static method

Get a list of applications in a directory.
public static getApplications ( string $directory, CliConfig $config = null ) : LocalApplication[]
$directory string The absolute path to a directory.
$config Platformsh\Cli\CliConfig CLI configuration.
return LocalApplication[]
    public static function getApplications($directory, CliConfig $config = null)
    {
        // Finder can be extremely slow with a deep directory structure. The
        // search depth is limited to safeguard against this.
        $finder = new Finder();
        $config = $config ?: new CliConfig();
        $finder->in($directory)->ignoreDotFiles(false)->name($config->get('service.app_config_file'))->notPath('builds')->notPath($config->get('local.local_dir'))->depth('> 0')->depth('< 5');
        $applications = [];
        if ($finder->count() == 0) {
            $applications[$directory] = new LocalApplication($directory, $config, $directory);
        } else {
            /** @var \Symfony\Component\Finder\SplFileInfo $file */
            foreach ($finder as $file) {
                $appRoot = dirname($file->getRealPath());
                $applications[$appRoot] = new LocalApplication($appRoot, $config, $directory);
            }
        }
        return $applications;
    }

Usage Example

 /**
  * Build a project from any source directory, targeting any destination.
  *
  * @param string $sourceDir   The absolute path to the source directory.
  * @param string $destination Where the web root(s) will be linked (absolute
  *                            path).
  * @param array  $apps        An array of application names to build.
  *
  * @throws \Exception on failure
  *
  * @return bool
  */
 public function build($sourceDir, $destination, array $apps = [])
 {
     $success = true;
     $ids = [];
     foreach (LocalApplication::getApplications($sourceDir) as $app) {
         $id = $app->getId();
         $ids[] = $id;
         if ($apps && !in_array($id, $apps)) {
             continue;
         }
         $success = $this->buildApp($app, $sourceDir, $destination) && $success;
     }
     $notFounds = array_diff($apps, $ids);
     if ($notFounds) {
         foreach ($notFounds as $notFound) {
             $this->output->writeln("Application not found: <comment>{$notFound}</comment>");
         }
     }
     if (empty($this->settings['noClean'])) {
         if (!empty($this->settings['projectRoot'])) {
             $this->output->writeln("Cleaning up...");
             $this->cleanBuilds($this->settings['projectRoot']);
             $this->cleanArchives($this->settings['projectRoot']);
         } else {
             $buildsDir = $sourceDir . '/' . LocalProject::BUILD_DIR;
             if (is_dir($buildsDir)) {
                 $this->output->writeln("Cleaning up...");
                 $this->cleanDirectory($buildsDir);
             }
         }
     }
     return $success;
 }
All Usage Examples Of Platformsh\Cli\Local\LocalApplication::getApplications