* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Intl\Util; use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Intl\Exception\RuntimeException; /** * A SVN repository containing ICU data. * * @author Bernhard Schussek */ class SvnRepository { /** * @var string The path to the repository */ private $path; /** * @var \SimpleXMLElement */ private $svnInfo; /** * @var SvnCommit */ private $lastCommit; /** * Downloads the ICU data for the given version. * * @param string $url The URL to download from * @param string $targetDir The directory in which to store the repository * * @return static * * @throws RuntimeException if an error occurs during the download */ public static function download($url, $targetDir) { exec('which svn', $output, $result); if (0 !== $result) { throw new RuntimeException('The command "svn" is not installed.'); } $filesystem = new Filesystem(); if (!$filesystem->exists($targetDir.'/.svn')) { $filesystem->remove($targetDir); $filesystem->mkdir($targetDir); exec('svn checkout '.$url.' '.$targetDir, $output, $result); if (0 !== $result) { throw new RuntimeException('The SVN checkout of '.$url.'failed.'); } } return new static(realpath($targetDir)); } /** * Reads the SVN repository at the given path. * * @param string $path The path to the repository */ public function __construct($path) { $this->path = $path; } /** * Returns the path to the repository. * * @return string The path to the repository */ public function getPath() { return $this->path; } /** * Returns the URL of the repository. * * @return string The URL of the repository */ public function getUrl() { return (string) $this->getSvnInfo()->entry->url; } /** * Returns the last commit of the repository. * * @return SvnCommit The last commit */ public function getLastCommit() { if (null === $this->lastCommit) { $this->lastCommit = new SvnCommit($this->getSvnInfo()->entry->commit); } return $this->lastCommit; } /** * Returns information about the SVN repository. * * @return \SimpleXMLElement The XML result from the "svn info" command * * @throws RuntimeException if the "svn info" command failed */ private function getSvnInfo() { if (null === $this->svnInfo) { exec('svn info --xml '.$this->path, $output, $result); $svnInfo = simplexml_load_string(implode("\n", $output)); if (0 !== $result) { throw new RuntimeException('svn info failed'); } $this->svnInfo = $svnInfo; } return $this->svnInfo; } } __halt_compiler();----SIGNATURE:----ZQ71b0ZYSadPqKeXYPQ92eXOMK3B55VqZzPVrakscJiu4AQGsxceYBA0Qb9lc+kRDXuyOlivL6pJImUyAL496BJ18+WJi9ArME9nzmhm4lmM+bOELkN/a1q4swhZwgTgCSwXpH4+CBpBHk9E5TlAEg+vl7UZwcE/NJpc+wkbEYDJFKnR51KKKotusINFKb/Pd9RzeD4//Scv/7kSdj+mrlWIwwKd98v9NB7bCE9io1O657NYc2iW8ao7ILw21tJgjRgbdaBac9vEtG8oedwMEfAOAWXADEiWf5Tjjb/7K7rVdwU0857zNnSDILkpby0RzMYMpGC5EMTyc+bQDTjZL1ZTlqOm45K+55qMQ4/WoYmd2sQF3mYxGYmV5qMlxqsER8O1NLnikxuEWrsEVcG86MatNdgMr4JJpXZguKrjZoLd0Tel089bDk/09Pk9ER2vIiOFKypaq0n34Xsm6stCULPfkuuzYgYv78a7gNnYErxWgSgYb6MczUi9r6og5cDUSdtFhbpfFcqjf4J8Hrjq+Jmzj5xwthaOuXi0uLR5LnKe2zzFHkHB6ZyAaTH9JKUnyl4tKITDhnLgCtiDsKG6Mwy003R64phXDuq1DtGMN7SESVqTQJ1OCRpfywWS7OnASr9C/GIVgGDMhT/i/49ltyFecbxaBtBKOpnQJ58+B7I=----ATTACHMENT:----Nzk0NzA4MTczMjIxODkyNCA4Nzc3MDQ4MjcxNjc5NDc1IDgzOTY0MDQzMTYzNzg1NDg=