예제 #1
0
 /**
  * create()
  *
  * @param string $path
  * @param string $nameOfProfile shortName=n
  * @param string $fileOfProfile shortName=f
  */
 public function create($path, $nameOfProfile = null, $fileOfProfile = null)
 {
     if ($path == null) {
         $path = getcwd();
     } else {
         $path = trim($path);
         if (!file_exists($path)) {
             $created = mkdir($path);
             if (!$created) {
                 throw new Client\Exception('Could not create requested project directory \'' . $path . '\'');
             }
         }
         $path = str_replace('\\', '/', realpath($path));
     }
     $profile = $this->_loadProfile(self::NO_PROFILE_RETURN_FALSE, $path);
     if ($profile !== false) {
         throw new Client\Exception('A project already exists here');
     }
     $profileData = null;
     if ($fileOfProfile != null && file_exists($fileOfProfile)) {
         $profileData = file_get_contents($fileOfProfile);
     }
     $storage = $this->_registry->getStorage();
     if ($profileData == '' && $nameOfProfile != null && $storage->isEnabled()) {
         $profileData = $storage->get('project/profiles/' . $nameOfProfile . '.xml');
     }
     if ($profileData == '') {
         $profileData = $this->_getDefaultProfile();
     }
     $newProfile = new \Zend\Tool\Project\Profile(array('projectDirectory' => $path, 'profileData' => $profileData));
     $newProfile->loadFromData();
     $response = $this->_registry->getResponse();
     $response->appendContent('Creating project at ' . $path);
     $response->appendContent('Note: ', array('separator' => false, 'color' => 'yellow'));
     $response->appendContent('This command created a web project, ' . 'for more information setting up your VHOST, please see docs/README');
     foreach ($newProfile->getIterator() as $resource) {
         $resource->create();
     }
 }
예제 #2
0
 /**
  * _getProject is designed to find if there is project file in the context of where
  * the client has been called from..   The search order is as follows..
  *    - traversing downwards from (PWD) - current working directory
  *    - if an enpoint variable has been registered in teh client registry - key=workingDirectory
  *    - if an ENV variable with the key ZFPROJECT_PATH is found
  *
  * @param $loadProfileFlag bool Whether or not to throw an exception when no profile is found
  * @param $projectDirectory string The project directory to use to search
  * @param $searchParentDirectories bool Whether or not to search upper level direcotries
  * @return \Zend\Tool\Project\Profile
  */
 protected function _loadProfile($loadProfileFlag = self::NO_PROFILE_THROW_EXCEPTION, $projectDirectory = null, $searchParentDirectories = true)
 {
     // use the cwd if no directory was provided
     if ($projectDirectory == null) {
         $projectDirectory = getcwd();
     } elseif (realpath($projectDirectory) == false) {
         throw new Exception('The $projectDirectory supplied does not exist.');
     }
     $profile = new \Zend\Tool\Project\Profile();
     $parentDirectoriesArray = explode(DIRECTORY_SEPARATOR, ltrim($projectDirectory, DIRECTORY_SEPARATOR));
     while ($parentDirectoriesArray) {
         $projectDirectoryAssembled = implode(DIRECTORY_SEPARATOR, $parentDirectoriesArray);
         if (DIRECTORY_SEPARATOR !== "\\") {
             $projectDirectoryAssembled = DIRECTORY_SEPARATOR . $projectDirectoryAssembled;
         }
         $profile->setAttribute('projectDirectory', $projectDirectoryAssembled);
         if ($profile->isLoadableFromFile()) {
             chdir($projectDirectoryAssembled);
             $profile->loadFromFile();
             $this->_loadedProfile = $profile;
             break;
         }
         // break after first run if we are not to check upper directories
         if ($searchParentDirectories == false) {
             break;
         }
         array_pop($parentDirectoriesArray);
     }
     if ($this->_loadedProfile == null) {
         if ($loadProfileFlag == self::NO_PROFILE_THROW_EXCEPTION) {
             throw new Exception('A project profile was not found.');
         } elseif ($loadProfileFlag == self::NO_PROFILE_RETURN_FALSE) {
             return false;
         }
     }
     return $profile;
 }