Convert RepositoryType constants to enum cases

This commit is contained in:
netkas 2024-09-14 00:40:59 -04:00
parent d884d0fbda
commit 71ffed1a3f
2 changed files with 15 additions and 21 deletions

View file

@ -22,20 +22,13 @@
namespace ncc\Enums\Types;
final class RepositoryType
enum RepositoryType : string
{
public const GITLAB = 'gitlab';
case GITLAB = 'gitlab';
public const GITHUB = 'github';
case GITHUB = 'github';
public const GITEA = 'gitea';
case GITEA = 'gitea';
public const PACKAGIST = 'packagist';
public const ALL = [
self::GITLAB,
self::GITHUB,
self::GITEA,
self::PACKAGIST
];
case PACKAGIST = 'packagist';
}

View file

@ -117,7 +117,8 @@
*/
public function setType(string $type): void
{
if(!in_array(strtolower($type), RepositoryType::ALL, true))
// TODO: Fix this, not a proper use of cases()
if(!in_array(strtolower($type), RepositoryType::cases(), true))
{
throw new InvalidArgumentException(sprintf('Invalid repository type \'%s\'', $type));
}
@ -182,10 +183,10 @@
{
return match(strtolower($this->type))
{
RepositoryType::GITHUB => GithubRepository::fetchPackage($this, $vendor, $project, $version, $authentication, $options),
RepositoryType::GITLAB => GitlabRepository::fetchPackage($this, $vendor, $project, $version, $authentication, $options),
RepositoryType::GITEA => GiteaRepository::fetchPackage($this, $vendor, $project, $version, $authentication, $options),
RepositoryType::PACKAGIST => throw new NotSupportedException('Fetching ncc packages from Packagist is not supported'),
RepositoryType::GITHUB->value => GithubRepository::fetchPackage($this, $vendor, $project, $version, $authentication, $options),
RepositoryType::GITLAB->value => GitlabRepository::fetchPackage($this, $vendor, $project, $version, $authentication, $options),
RepositoryType::GITEA->value => GiteaRepository::fetchPackage($this, $vendor, $project, $version, $authentication, $options),
RepositoryType::PACKAGIST->value => throw new NotSupportedException('Fetching ncc packages from Packagist is not supported'),
default => throw new InvalidArgumentException(sprintf('Invalid repository type \'%s\'', $this->type)),
};
}
@ -206,10 +207,10 @@
{
return match(strtolower($this->type))
{
RepositoryType::GITHUB => GithubRepository::fetchSourceArchive($this, $vendor, $project, $version, $authentication, $options),
RepositoryType::GITLAB => GitlabRepository::fetchSourceArchive($this, $vendor, $project, $version, $authentication, $options),
RepositoryType::GITEA => GiteaRepository::fetchSourceArchive($this, $vendor, $project, $version, $authentication, $options),
RepositoryType::PACKAGIST => PackagistRepository::fetchSourceArchive($this, $vendor, $project, $version, $authentication, $options),
RepositoryType::GITHUB->value => GithubRepository::fetchSourceArchive($this, $vendor, $project, $version, $authentication, $options),
RepositoryType::GITLAB->value => GitlabRepository::fetchSourceArchive($this, $vendor, $project, $version, $authentication, $options),
RepositoryType::GITEA->value => GiteaRepository::fetchSourceArchive($this, $vendor, $project, $version, $authentication, $options),
RepositoryType::PACKAGIST->value => PackagistRepository::fetchSourceArchive($this, $vendor, $project, $version, $authentication, $options),
default => throw new InvalidArgumentException(sprintf('Invalid repository type \'%s\'', $this->type)),
};
}