#!/usr/bin/env php $arg) { if ($index==0) continue; if ($arg=='make') { $make = true; continue; } $packageName = $arg; } if (is_null($packageName)) { echo "A packagename is required\n"; die(1); } if (!is_dir('build/' . $packageName)) { echo "Could not find package directory: build/$packageName\n"; die(2); } // We'll figure out something better for this one day $dependencies = array( array( 'type' => 'php', 'min' => '5.3.1', ), array( 'type' => 'pearinstaller', 'min' => '1.9', ), ); switch($packageName) { case 'Sabre' : $summary = 'Sabretooth base package.'; $description = << 'package', 'name' => 'Sabre', 'channel' => 'pear.sabredav.org', 'min' => '1.0.0', ); $dependencies[] = array( 'type' => 'package', 'name' => 'Sabre_HTTP', 'channel' => 'pear.sabredav.org', 'min' => '1.6.0', ); break; case 'Sabre_HTTP' : $summary = 'Sabre_HTTP provides various HTTP helpers, for input and output and authentication'; $description = << 'package', 'name' => 'Sabre', 'channel' => 'pear.sabredav.org', 'min' => '1.0.0', ); break; case 'Sabre_DAVACL' : $summary = 'Sabre_DAVACL provides rfc3744 support.'; $description = << 'package', 'name' => 'Sabre', 'channel' => 'pear.sabredav.org', 'min' => '1.0.0', ); $dependencies[] = array( 'type' => 'package', 'name' => 'Sabre_DAV', 'channel' => 'pear.sabredav.org', 'min' => '1.6.0', ); break; case 'Sabre_CalDAV' : $summary = 'Sabre_CalDAV provides CalDAV extensions to SabreDAV'; $description = << 'package', 'name' => 'Sabre', 'channel' => 'pear.sabredav.org', 'min' => '1.0.0', ); $dependencies[] = array( 'type' => 'package', 'name' => 'Sabre_HTTP', 'channel' => 'pear.sabredav.org', 'min' => '1.6.0', ); $dependencies[] = array( 'type' => 'package', 'name' => 'Sabre_DAV', 'channel' => 'pear.sabredav.org', 'min' => '1.6.0', ); $dependencies[] = array( 'type' => 'package', 'name' => 'Sabre_DAVACL', 'channel' => 'pear.sabredav.org', 'min' => '1.6.0', ); $dependencies[] = array( 'type' => 'package', 'name' => 'Sabre_VObject', 'channel' => 'pear.sabredav.org', 'min' => '1.3.0', ); break; case 'Sabre_CardDAV' : $summary = 'Sabre_CardDAV provides CardDAV extensions to SabreDAV'; $description = << 'package', 'name' => 'Sabre', 'channel' => 'pear.sabredav.org', 'min' => '1.0.0', ); $dependencies[] = array( 'type' => 'package', 'name' => 'Sabre_HTTP', 'channel' => 'pear.sabredav.org', 'min' => '1.6.0', ); $dependencies[] = array( 'type' => 'package', 'name' => 'Sabre_DAV', 'channel' => 'pear.sabredav.org', 'min' => '1.6.0', ); $dependencies[] = array( 'type' => 'package', 'name' => 'Sabre_DAVACL', 'channel' => 'pear.sabredav.org', 'min' => '1.6.0', ); $dependencies[] = array( 'type' => 'package', 'name' => 'Sabre_VObject', 'channel' => 'pear.sabredav.org', 'min' => '1.3.0', ); break; case 'Sabre_VObject' : $summary = 'Sabre_VObject is a natural-interface iCalendar and vCard reader'; $description = << 'package', 'name' => 'Sabre', 'channel' => 'pear.sabredav.org', 'min' => '1.0.0', ); break; } if (!isset($version)) { include 'lib/' . str_replace('_','/',$packageName) . '/Version.php'; $versionClassName = $packageName . '_Version'; $version = $versionClassName::VERSION; $stability = $versionClassName::STABILITY; } $lead = 'Evert Pot'; $lead_email = 'evert@rooftopsolutions.nl'; $date = date('Y-m-d'); $license = 'Modified BSD'; $licenseuri = 'http://code.google.com/p/sabredav/wiki/License'; $notes = 'New release. Read the ChangeLog and announcement for more details'; $channel = 'pear.sabredav.org'; /* This function is intended to generate the full file list */ function parsePath($fullPath, $role, $padding = 4) { $fileList = ''; $file = basename($fullPath); if (is_dir($fullPath)) { $fileList .= str_repeat(' ', $padding) . "\n"; foreach(scandir($fullPath) as $subPath) {; if ($subPath==='.' || $subPath==='..') continue; $fileList .= parsePath($fullPath. '/' . $subPath,$role, $padding+2); } $fileList .= str_repeat(' ', $padding) . "\n"; } elseif (is_file($fullPath)) { $fileList .= str_repeat(' ', $padding) . "\n"; } return $fileList; } $rootDir = realpath('build/' . $packageName); $fileList = parsePath($rootDir . '/Sabre', 'php'); $fileList .= parsePath($rootDir . '/examples', 'doc'); $fileList .= parsePath($rootDir . '/ChangeLog', 'doc'); $fileList .= parsePath($rootDir . '/LICENSE', 'doc'); $dependenciesXML = "\n"; foreach($dependencies as $dep) { $pad = 8; $dependenciesXML.=str_repeat(' ',$pad) . '<' . $dep['type'] . ">\n"; foreach($dep as $key=>$value) { if ($key=='type') continue; $dependenciesXML.=str_repeat(' ',$pad+2) . "<$key>$value\n"; } $dependenciesXML.=str_repeat(' ',$pad) . '\n"; } $package = << {$packageName} {$channel} {$summary} {$description} {$lead} {$lead} {$lead_email} true {$date} {$version} {$version} {$stability} {$stability} {$license} {$notes} {$fileList} {$dependenciesXML} XML; if (isset($argv) && in_array('make',$argv)) { file_put_contents($rootDir . '/package.xml',$package); } else { echo $package; }