48 lines
1.2 KiB
PHP
48 lines
1.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file
|
|
* Contains \DrupalComposer\DrupalScaffold\FileFetcher.
|
|
*/
|
|
|
|
namespace DrupalComposer\DrupalScaffold;
|
|
|
|
use Composer\Util\Filesystem;
|
|
use Composer\Util\RemoteFilesystem;
|
|
|
|
class FileFetcher {
|
|
|
|
/**
|
|
* @var \Composer\Util\RemoteFilesystem
|
|
*/
|
|
protected $remoteFilesystem;
|
|
|
|
protected $source;
|
|
protected $filenames;
|
|
protected $fs;
|
|
|
|
public function __construct(RemoteFilesystem $remoteFilesystem, $source, $filenames = []) {
|
|
$this->remoteFilesystem = $remoteFilesystem;
|
|
$this->source = $source;
|
|
$this->filenames = $filenames;
|
|
$this->fs = new Filesystem();
|
|
}
|
|
|
|
public function fetch($version, $destination) {
|
|
array_walk($this->filenames, function ($filename) use ($version, $destination) {
|
|
$url = $this->getUri($filename, $version);
|
|
$this->fs->ensureDirectoryExists($destination . '/' . dirname($filename));
|
|
$this->remoteFilesystem->copy($url, $url, $destination . '/' . $filename);
|
|
});
|
|
}
|
|
|
|
protected function getUri($filename, $version) {
|
|
$map = [
|
|
'{path}' => $filename,
|
|
'{version}' => $version
|
|
];
|
|
return str_replace(array_keys($map), array_values($map), $this->source);
|
|
}
|
|
|
|
}
|