Example #1
0
 /**
  * Internal routine for parsing the provider part of the command line arguments
  *
  * @return null
  */
 protected function _parseProviderPart()
 {
     // get the cli "word" as the provider name from command line
     $consoleProviderFull = array_shift($this->_argumentsWorking);
     $consoleSpecialtyName = '_global';
     // if there is notation for specialties? If so, break them up
     if (strstr($consoleProviderFull, '.')) {
         list($consoleProviderName, $consoleSpecialtyName) = explode('.', $consoleProviderFull);
     } else {
         $consoleProviderName = $consoleProviderFull;
     }
     if ($consoleProviderName == '?') {
         $this->_help = true;
         return;
     }
     $providerSearchCriteria = array('type' => 'Tool', 'name' => 'providerName', 'value' => $consoleProviderName, 'clientName' => 'console');
     // get the cli provider names from the manifest
     $providerMetadata = $this->_manifestRepository->getMetadata($providerSearchCriteria);
     // check for normalized names as well (all lower, no separators)
     if (!$providerMetadata) {
         $providerSearchCriteria['name'] = 'normalizedProviderName';
         $providerSearchCriteria['value'] = strtolower(str_replace(array('-', '_'), '', $consoleProviderName));
         $providerSearchCriteria['clientName'] = 'all';
         $providerMetadata = $this->_manifestRepository->getMetadata($providerSearchCriteria);
     }
     if (!$providerMetadata) {
         throw new Exception\RuntimeException(sprintf('Provider "%s" is not a valid provider.', $consoleProviderFull));
     }
     $this->_helpKnownProvider = true;
     $this->_request->setProviderName($providerMetadata->getProviderName());
     if ($consoleSpecialtyName == '?') {
         $this->_help = true;
         return;
     }
     $providerSpecialtySearchCriteria = array('type' => 'Tool', 'name' => 'specialtyName', 'value' => $consoleSpecialtyName, 'providerName' => $providerMetadata->getProviderName(), 'clientName' => 'console');
     $providerSpecialtyMetadata = $this->_manifestRepository->getMetadata($providerSpecialtySearchCriteria);
     if (!$providerSpecialtyMetadata) {
         $providerSpecialtySearchCriteria['name'] = 'normalizedSpecialtyName';
         $providerSpecialtySearchCriteria['value'] = strtolower(str_replace(array('-', '_'), '', $consoleSpecialtyName));
         $providerSpecialtySearchCriteria['clientName'] = 'all';
         $providerSpecialtyMetadata = $this->_manifestRepository->getMetadata($providerSpecialtySearchCriteria);
     }
     if (!$providerSpecialtyMetadata) {
         throw new Exception\RuntimeException(sprintf('Provider "%s" is not a valid specialty.', $consoleSpecialtyName));
     }
     $this->_helpKnownSpecialty = true;
     $this->_request->setSpecialtyName($providerSpecialtyMetadata->getSpecialtyName());
     return;
 }