#!/usr/bin/php -f
<?php

include("PEAR/PackageFile.php");

function usage() {
	echo "Usage: ".$_SERVER["argv"][0]." dir <command>\n";
	echo "  dir          - Directory containing package.xml file\n";
	echo "\ncommands:\n";
	echo "  version      - Return version of package\n";
	echo "  maintainers  - Return comma separated list of maintainers\n";
}

if($_SERVER["argc"] < 3) {
	usage();
	exit;
}

$config = new PEAR_Config();
$pkg = new PEAR_PackageFile($config);
$pf = $pkg->fromAnyFile($_SERVER["argv"][1], PEAR_VALIDATE_NORMAL);
//echo get_class($pf);
//print_r($pf);
//exit;

//print_r($pf->_packageInfo);
if(get_class($pf) == "PEAR_PackageFile_v1") {
	switch($_SERVER["argv"][2]) {
		case "version":
		case "summary":
		case "description":
		case "packagerversion":
		case "package":
		case "release_license":
		case "date":
			echo $pf->_packageInfo[$_SERVER["argv"][2]];
			break;
		case "license":
			echo $pf->_packageInfo["release_license"];
			break;
		case "maintainers":
			$tmp = array();
			foreach($pf->_packageInfo["maintainers"] as $maintainer)
				$tmp[] = $maintainer["name"];
			echo implode(", ", $tmp);
			break;
		case "changelog":
			$changelog = &$pf->_packageInfo;
			echo "Version ".$changelog["version"]." - ".$changelog["release_date"]." (".$changelog["release_state"].")\n";
			echo "----------------------------------------\n";
			echo "Notes:\n";
			echo "  ".str_replace("\n", "\n  ", wordwrap(ereg_replace("[[:space:]]+", " ", $changelog["release_notes"])))."\n\n";
			foreach($pf->_packageInfo["changelog"] as $changelog) {
				echo "Version ".$changelog["version"]." - ".$changelog["release_date"]." (".$changelog["release_state"].")\n";
				echo "----------------------------------------\n";
				echo "Notes:\n";
				echo "  ".str_replace("\n", "\n  ", wordwrap(ereg_replace("[[:space:]]+", " ", $changelog["release_notes"])))."\n\n";
			}
			break;
		case "all":
			print_r($pf->_packageInfo);
			break;
		default:
	}
} elseif(get_class($pf) == "PEAR_PackageFile_v2") {
	switch($_SERVER["argv"][2]) {
		case "version":
			echo $pf->_packageInfo[$_SERVER["argv"][2]]["release"];
			break;
		case "packagerversion":
			echo $pf->_packageInfo["attribs"][$_SERVER["argv"][2]];
			break;
		case "summary":
		case "description":
		case "release_license":
		case "date":
			echo $pf->_packageInfo[$_SERVER["argv"][2]];
			break;
		case "package":
			echo $pf->_packageInfo["name"];
			break;
		case "license":
			echo $pf->_packageInfo["license"]["_content"];
			break;
		case "maintainers":
			$tmp = array();
			if(isset($pf->_packageInfo["lead"])) {
				if(isset($pf->_packageInfo["lead"]["name"]))
					$tmp[] = $pf->_packageInfo["lead"]["name"];
				else
					foreach($pf->_packageInfo["lead"] as $maintainer)
						$tmp[] = $maintainer["name"];
			}
			if(isset($pf->_packageInfo["developer"])) {
				foreach($pf->_packageInfo["developer"] as $maintainer)
					$tmp[] = $maintainer["name"];
			}
			echo implode(", ", $tmp);
			break;
		case "changelog":
			$changelog = &$pf->_packageInfo;
			echo "Version ".$changelog["version"]["release"]." - ".$changelog["date"]." (".$changelog["stability"]["release"].")\n";
			echo "----------------------------------------\n";
			echo "Notes:\n";
			echo "  ".str_replace("\n", "\n  ", wordwrap(ereg_replace("[[:space:]]+", " ", $changelog["notes"])))."\n\n";
			$tmparr = array_reverse($pf->_packageInfo["changelog"]["release"]);
			foreach($tmparr as $changelog) {
				echo "Version ".$changelog["version"]["release"]." - ".$changelog["date"]." (".$changelog["stability"]["release"].")\n";
				echo "----------------------------------------\n";
				echo "Notes:\n";
				echo "  ".str_replace("\n", "\n  ", wordwrap(ereg_replace("[[:space:]]+", " ", $changelog["notes"])))."\n\n";
			}
			break;
		case "all":
			print_r($pf->_packageInfo);
			break;
		default:
	}
}

?>
