forked from GNUsocial/gnu-social
		
	
		
			
				
	
	
		
			111 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| require_once 'phing/tasks/ext/PearPackage2Task.php';
 | |
| 
 | |
| class PhergiePackageTask extends PearPackage2Task
 | |
| {
 | |
|     protected function setOptions()
 | |
|     {
 | |
|         $this->pkg->addMaintainer('lead', 'team', 'Phergie Development Team', 'team@phergie.org');
 | |
| 
 | |
|         $path = str_replace('_', '/', $this->package) . '.php'; 
 | |
|         if (file_exists($path)) {
 | |
|             $contents = file_get_contents($path);
 | |
|             preg_match_all('#/\*\*(.*)\*/#Ums', $contents, $matches, PREG_SET_ORDER);
 | |
|             $doc = $matches[1][1];
 | |
| 
 | |
|             $have_summary = false;
 | |
|             $have_description = false;
 | |
|             foreach ($this->options as $option) {
 | |
|                 switch ($option->getName()) {
 | |
|                     case 'summary':
 | |
|                         $have_summary = true;
 | |
|                         break;
 | |
|                     case 'description':
 | |
|                         $have_descripion = true;
 | |
|                         break;
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             if (!$have_summary || !$have_description) {
 | |
|                 $description = substr($doc, 0, strpos($doc, '@'));
 | |
|                 $description = trim(preg_replace(array('#^[\h*]*|[\h*]*$#m', '#[\h]+#m'), array('', ' '), $description));
 | |
|                 $split = preg_split('/\v\v+/', $description);
 | |
|                 $summary = trim(array_shift($split));
 | |
|                 if (!$have_summary) {
 | |
|                     $this->pkg->setSummary(htmlentities($summary, ENT_QUOTES));
 | |
|                 }
 | |
|                 if (!$have_description) {
 | |
|                     $this->pkg->setDescription(htmlentities($description, ENT_QUOTES));
 | |
|                 }
 | |
|             }
 | |
| 
 | |
|             $doc = preg_split('/\v+/', $doc);
 | |
|             $doc = preg_grep('/@uses/', $doc);
 | |
|             $doc = preg_replace('/\s*\* @uses\s+|\s+$/', '', $doc);
 | |
|             foreach ($doc as $line) {
 | |
|                 if (strpos($line, 'extension') === 0) {
 | |
|                     $line = explode(' ', $line);
 | |
|                     $name = $line[1];
 | |
|                     $optional = 'required';
 | |
|                     if (isset($line[2])) {
 | |
|                         $optional = $line[2];
 | |
|                     }
 | |
|                     $this->pkg->addExtensionDep(
 | |
|                         $optional,
 | |
|                         $name
 | |
|                     );
 | |
|                 } else {
 | |
|                     $line = explode(' ', $line);
 | |
|                     $name = $line[0];
 | |
|                     $channel = $line[1];
 | |
|                     $optional = 'required';
 | |
|                     if (isset($line[2])) {
 | |
|                         $optional = $line[2];
 | |
|                     }
 | |
|                     $this->pkg->addPackageDepWithChannel(
 | |
|                         $optional,
 | |
|                         $name,
 | |
|                         $channel
 | |
|                     );
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         $newmap = array();
 | |
|         foreach ($this->mappings as $key => $map) {
 | |
|             switch ($map->getName()) {
 | |
|                 case 'releases':
 | |
|                     $releases = $map->getValue();
 | |
|                     foreach ($releases as $release) {
 | |
|                         $this->pkg->addRelease();
 | |
|                         if (isset($release['installconditions'])) {
 | |
|                             if (isset($release['installconditions']['os'])) {
 | |
|                                 $this->pkg->setOsInstallCondition($release['installconditions']['os']);
 | |
|                             }
 | |
|                         }
 | |
|                         if (isset($release['filelist'])) {
 | |
|                             if (isset($release['filelist']['install'])) {
 | |
|                                 foreach ($release['filelist']['install'] as $file => $as) {
 | |
|                                     $this->pkg->addInstallAs($file, $as);
 | |
|                                 }
 | |
|                             }
 | |
|                             if (isset($release['filelist']['ignore'])) {
 | |
|                                 foreach ($release['filelist']['ignore'] as $file) {
 | |
|                                     $this->pkg->addIgnoreToRelease($file);
 | |
|                                 }
 | |
|                             }
 | |
|                         }
 | |
|                     }
 | |
|                     break;
 | |
| 
 | |
|                 default:
 | |
|                     $newmap[] = $map;
 | |
|             }
 | |
|         }
 | |
|         $this->mappings = $newmap;
 | |
| 
 | |
|         parent::setOptions();
 | |
|     }
 | |
| }
 |