loadRootModuleFile() public method

Loads a root module file from a file path.
public loadRootModuleFile ( string $path, Puli\Manager\Api\Config\Config $baseConfig ) : RootModuleFile
$path string The path to the module configuration file.
$baseConfig Puli\Manager\Api\Config\Config The configuration that the module will inherit its configuration values from.
return Puli\Manager\Api\Module\RootModuleFile The loaded module file.
Esempio n. 1
0
 /**
  * Creates the context of a Puli project.
  *
  * The home directory is read from the context variable "PULI_HOME".
  * If this variable is not set, the home directory defaults to:
  *
  *  * `$HOME/.puli` on Linux, where `$HOME` is the context variable
  *    "HOME".
  *  * `$APPDATA/Puli` on Windows, where `$APPDATA` is the context
  *    variable "APPDATA".
  *
  * If none of these variables can be found, an exception is thrown.
  *
  * A .htaccess file is put into the home directory to protect it from web
  * access.
  *
  * @param string $rootDir The path to the project.
  *
  * @return ProjectContext The project context.
  */
 private function createProjectContext($rootDir, $env)
 {
     Assert::fileExists($rootDir, 'Could not load Puli context: The root %s does not exist.');
     Assert::directory($rootDir, 'Could not load Puli context: The root %s is a file. Expected a directory.');
     $baseConfig = new DefaultConfig();
     $homeDir = self::parseHomeDirectory();
     if (null !== ($configFile = $this->loadConfigFile($homeDir, $baseConfig))) {
         $baseConfig = $configFile->getConfig();
     }
     // Create a storage without the factory manager
     $jsonStorage = new JsonStorage($this->getStorage(), new JsonConverterProvider($this), $this->getJsonEncoder(), $this->getJsonDecoder());
     $rootDir = Path::canonicalize($rootDir);
     $rootFilePath = $this->rootDir . '/puli.json';
     try {
         $rootModuleFile = $jsonStorage->loadRootModuleFile($rootFilePath, $baseConfig);
     } catch (FileNotFoundException $e) {
         $rootModuleFile = new RootModuleFile(null, $rootFilePath, $baseConfig);
     }
     $config = new EnvConfig($rootModuleFile->getConfig());
     return new ProjectContext($homeDir, $rootDir, $config, $rootModuleFile, $configFile, $this->dispatcher, $env);
 }