lib/php/libsdk/SDK/Build/Dependency/Package.php (43 lines of code) (raw):
<?php
namespace SDK\Build\Dependency;
use SDK\{Config, Exception, FileOps};
class Package
{
use FileOps;
protected $name;
protected $series;
protected $fetcher;
protected $filepath;
public function __construct(string $name, Series $series, Fetcher $fetcher)
{/*{{{*/
$this->name = $name;
$this->series = $series;
$this->fetcher = $fetcher;
}/*}}}*/
public function getUri() : string
{/*{{{*/
$base = Config::getDepsBaseUri();
$branch_data = Config::getCurrentBranchData();
$arch = $this->series->getArch();
return "$base/{$branch_data['crt']}/$arch/{$this->name}";
}/*}}}*/
public function retrieve(string $path) : void
{/*{{{*/
$this->filepath = $path . DIRECTORY_SEPARATOR . $this->name;
$cont = $this->fetcher->getByUri($this->getUri());
$fd = fopen($this->filepath, "wb");
fwrite($fd, $cont);
fclose($fd);
}/*}}}*/
public function unpack(string $path) : void
{/*{{{*/
if (!$this->filepath || !file_exists($this->filepath)) {
throw new Exception("Invalid filepath '{$this->filepath}'");
}
$this->unzip($this->filepath, $path);
}/*}}}*/
public function cleanup() : void
{/*{{{*/
unlink($this->filepath);
}/*}}}*/
}
/*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
* End:
* vim600: sw=4 ts=4 fdm=marker
* vim<600: sw=4 ts=4
*/