%PDF- %GIF98; %PNG;
Server : ApacheSystem : Linux host.digitalbabaji.in 4.18.0-513.11.1.el8_9.x86_64 #1 SMP Wed Jan 17 02:00:40 EST 2024 x86_64 User : addictionfreeind ( 1003) PHP Version : 7.2.34 Disable Function : exec,passthru,shell_exec,system Directory : /home/addictionfreeind/www/admin1/vendor/phpro/grumphp/src/Locator/ |
Upload File : |
<?php
declare(strict_types=1);
namespace GrumPHP\Locator;
use Gitonomy\Git\Diff\Diff;
use Gitonomy\Git\Diff\File;
use GrumPHP\Collection\FilesCollection;
use GrumPHP\Git\GitRepository;
use GrumPHP\Util\Filesystem;
use GrumPHP\Util\Paths;
use Symfony\Component\Finder\SplFileInfo;
/**
* Class Git.
*/
class ChangedFiles
{
/**
* @var GitRepository
*/
private $repository;
/**
* @var Filesystem
*/
private $filesystem;
/**
* @var Paths
*/
private $paths;
public function __construct(GitRepository $repository, Filesystem $filesystem, Paths $paths)
{
$this->repository = $repository;
$this->filesystem = $filesystem;
$this->paths = $paths;
}
public function locateFromGitRepository(): FilesCollection
{
$diff = $this->repository->getWorkingCopy()->getDiffStaged();
return $this->parseFilesFromDiff($diff);
}
public function locateFromRawDiffInput(string $rawDiff): FilesCollection
{
$diff = $this->repository->createRawDiff($rawDiff);
return $this->parseFilesFromDiff($diff);
}
private function parseFilesFromDiff(Diff $diff): FilesCollection
{
$files = [];
/** @var File $file */
foreach ($diff->getFiles() as $file) {
$fileObject = $this->makeFileRelativeToProjectDir($file);
if ($file->isDeletion() || !$this->filesystem->exists($fileObject->getPathname())) {
continue;
}
$files[] = $fileObject;
}
return new FilesCollection($files);
}
private function makeFileRelativeToProjectDir(File $file): SplFileInfo
{
$filePath = $this->paths->makePathRelativeToProjectDir(
$file->isRename() ? $file->getNewName() : $file->getName()
);
return new SplFileInfo($filePath, dirname($filePath), $filePath);
}
}