lib/php/libsdk/SDK/Build/Dependency/Series.php (80 lines of code) (raw):
<?php
namespace SDK\Build\Dependency;
use SDK\Config;
use SDK\Cache;
use SDK\Exception;
class Series
{
protected $fetcher;
protected $stability;
protected $arch;
protected $rawData;
protected $cache;
public function __construct(string $stability, string $arch, Cache $cache, Fetcher $fetcher = NULL)
{/*{{{*/
$this->fetcher = $fetcher;
$this->stability = $stability;
$this->arch = $arch;
$this->cache = $cache;
}/*}}}*/
public function getFetcher() : Fetcher
{/*{{{*/
return $this->fetcher;
}/*}}}*/
public function setFetcher(Fetcher $fetcher) : void
{/*{{{*/
$this->fetcher = $fetcher;
}/*}}}*/
public function getArch() : string
{/*{{{*/
return $this->arch;
}/*}}}*/
public function setArch(string $arch) : void
{/*{{{*/
$this->arch = $arch;
}/*}}}*/
public function getName() : string
{/*{{{*/
$branch_data = Config::getCurrentBranchData();
$file = "packages-" . Config::getCurrentBranchName() . "-{$branch_data['crt']}-{$this->arch}-{$this->stability}.txt";
return $file;
}/*}}}*/
protected function getUri() : string
{/*{{{*/
$base = Config::getDepsBaseUri();
$file = $this->getName();
return "$base/series/$file";
}/*}}}*/
public function getData(bool $raw = false, bool $cache = true)
{/*{{{*/
if ($cache && $this->rawData) {
$ret = $this->rawData;
} else {
if (!$this->fetcher) {
throw new Exception("Fetcher is not set");
}
$ret = $this->fetcher->getByUri($this->getUri());
}
if (!$raw) {
$ret = explode(" ", preg_replace(",[\r\n ]+,", " ", trim($ret)));
}
return $ret;
}/*}}}*/
public function getSavePath() : string
{/*{{{*/
return Config::getCacheDir() . DIRECTORY_SEPARATOR . $this->getname();
}/*}}}*/
public function updatesAvailable() : bool
{/*{{{*/
$series_data = $this->getData(true);
$series_file = $this->getSavePath();
return $this->cache->cachedContentDiffers($series_file, $series_data);
}/*}}}*/
public function cache(string $path = NULL) : void
{/*{{{*/
if (!$path) {
$path = $this->getSavePath();
}
$this->cache->cacheContent($path, $this->getData(true));
}/*}}}*/
}
/*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
* End:
* vim600: sw=4 ts=4 fdm=marker
* vim<600: sw=4 ts=4
*/