drop dependency to bensampo/laravel-enum (#120)

This commit is contained in:
Saeed Vaziry 2024-03-17 12:26:48 +01:00 committed by GitHub
parent b07ae470f9
commit 839e7f496c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
35 changed files with 59 additions and 392 deletions

View File

@ -41,7 +41,6 @@ ## Credits
- Tailwindcss - Tailwindcss
- Alpinejs - Alpinejs
- Vite - Vite
- Laravel Enum by BenSampo
- Log Viewer by Arunas Skirius - Log Viewer by Arunas Skirius
- PHPSecLib - PHPSecLib
- Laravel Blade Icons - Laravel Blade Icons

View File

@ -47,7 +47,7 @@ protected function validate(array $input): void
$rules = [ $rules = [
'type' => [ 'type' => [
'required', 'required',
Rule::in(SslType::getValues()), Rule::in(config('core.ssl_types')),
], ],
]; ];
if (isset($input['type']) && $input['type'] == SslType::CUSTOM) { if (isset($input['type']) && $input['type'] == SslType::CUSTOM) {

View File

@ -42,7 +42,7 @@ private function validate(array $input): void
$rules = [ $rules = [
'provider' => [ 'provider' => [
'required', 'required',
Rule::in(\App\Enums\SourceControl::getValues()), Rule::in(config('core.source_control_providers')),
], ],
'name' => [ 'name' => [
'required', 'required',

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class BackupFileStatus
final class BackupFileStatus extends Enum
{ {
const CREATED = 'created'; const CREATED = 'created';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class BackupStatus
final class BackupStatus extends Enum
{ {
const READY = 'ready'; const READY = 'ready';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class CronjobStatus
final class CronjobStatus extends Enum
{ {
const CREATING = 'creating'; const CREATING = 'creating';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class Database
final class Database extends Enum
{ {
const NONE = 'none'; const NONE = 'none';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class DatabaseStatus
final class DatabaseStatus extends Enum
{ {
const READY = 'ready'; const READY = 'ready';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class DatabaseUserStatus
final class DatabaseUserStatus extends Enum
{ {
const READY = 'ready'; const READY = 'ready';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class DeploymentStatus
final class DeploymentStatus extends Enum
{ {
const DEPLOYING = 'deploying'; const DEPLOYING = 'deploying';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class FirewallRuleStatus
final class FirewallRuleStatus extends Enum
{ {
const CREATING = 'creating'; const CREATING = 'creating';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class LogType
final class LogType extends Enum
{ {
const SERVER = 'server'; const SERVER = 'server';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class NotificationChannel
final class NotificationChannel extends Enum
{ {
const EMAIL = 'email'; const EMAIL = 'email';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class OperatingSystem
final class OperatingSystem extends Enum
{ {
const UBUNTU18 = 'ubuntu_18'; const UBUNTU18 = 'ubuntu_18';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class QueueStatus
final class QueueStatus extends Enum
{ {
const RUNNING = 'running'; const RUNNING = 'running';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class ServerProvider
final class ServerProvider extends Enum
{ {
const CUSTOM = 'custom'; const CUSTOM = 'custom';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class ServerStatus
final class ServerStatus extends Enum
{ {
const READY = 'ready'; const READY = 'ready';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class ServerType
final class ServerType extends Enum
{ {
const REGULAR = 'regular'; const REGULAR = 'regular';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class ServiceStatus
final class ServiceStatus extends Enum
{ {
const READY = 'ready'; const READY = 'ready';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class SiteFeature
final class SiteFeature extends Enum
{ {
const DEPLOYMENT = 'deployment'; const DEPLOYMENT = 'deployment';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class SiteStatus
final class SiteStatus extends Enum
{ {
const READY = 'ready'; const READY = 'ready';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class SiteType
final class SiteType extends Enum
{ {
const PHP = 'php'; const PHP = 'php';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class SourceControl
final class SourceControl extends Enum
{ {
const GITHUB = 'github'; const GITHUB = 'github';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class SshKeyStatus
final class SshKeyStatus extends Enum
{ {
const ADDING = 'adding'; const ADDING = 'adding';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class SslStatus
final class SslStatus extends Enum
{ {
const CREATED = 'created'; const CREATED = 'created';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class SslType
final class SslType extends Enum
{ {
const LETSENCRYPT = 'letsencrypt'; const LETSENCRYPT = 'letsencrypt';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class StorageProvider
final class StorageProvider extends Enum
{ {
const DROPBOX = 'dropbox'; const DROPBOX = 'dropbox';

View File

@ -2,9 +2,7 @@
namespace App\Enums; namespace App\Enums;
use BenSampo\Enum\Enum; final class Webserver
final class Webserver extends Enum
{ {
const NONE = 'none'; const NONE = 'none';

View File

@ -2,7 +2,6 @@
namespace App\ServerProviders; namespace App\ServerProviders;
use App\Enums\OperatingSystem;
use App\Exceptions\CouldNotConnectToProvider; use App\Exceptions\CouldNotConnectToProvider;
use App\Facades\Notifier; use App\Facades\Notifier;
use App\Notifications\FailedToDeleteServerFromProvider; use App\Notifications\FailedToDeleteServerFromProvider;
@ -11,6 +10,7 @@
use Exception; use Exception;
use Illuminate\Filesystem\FilesystemAdapter; use Illuminate\Filesystem\FilesystemAdapter;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Illuminate\Validation\Rule;
use Throwable; use Throwable;
class AWS extends AbstractProvider class AWS extends AbstractProvider
@ -22,7 +22,10 @@ class AWS extends AbstractProvider
public function createRules(array $input): array public function createRules(array $input): array
{ {
$rules = [ $rules = [
'os' => 'required|in:'.implode(',', OperatingSystem::getValues()), 'os' => [
'required',
Rule::in(config('core.operating_systems')),
],
]; ];
// plans // plans
$plans = []; $plans = [];

View File

@ -11,7 +11,6 @@
"php": "^8.2", "php": "^8.2",
"ext-ftp": "*", "ext-ftp": "*",
"aws/aws-sdk-php": "^3.158", "aws/aws-sdk-php": "^3.158",
"bensampo/laravel-enum": "^6.3",
"blade-ui-kit/blade-heroicons": "^2.2", "blade-ui-kit/blade-heroicons": "^2.2",
"guzzlehttp/guzzle": "^7.2", "guzzlehttp/guzzle": "^7.2",
"laravel/fortify": "^1.17", "laravel/fortify": "^1.17",

301
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "3e51f672a4139d2a840cdcd2e48ccaaf", "content-hash": "0b2677968e2517591773c88a9b77a5fe",
"packages": [ "packages": [
{ {
"name": "aws/aws-crt-php", "name": "aws/aws-crt-php",
@ -209,98 +209,6 @@
}, },
"time": "2022-12-07T17:46:57+00:00" "time": "2022-12-07T17:46:57+00:00"
}, },
{
"name": "bensampo/laravel-enum",
"version": "v6.10.0",
"source": {
"type": "git",
"url": "https://github.com/BenSampo/laravel-enum.git",
"reference": "00217d6ff1d70428193ca8e2fba51aad13b7efe9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/BenSampo/laravel-enum/zipball/00217d6ff1d70428193ca8e2fba51aad13b7efe9",
"reference": "00217d6ff1d70428193ca8e2fba51aad13b7efe9",
"shasum": ""
},
"require": {
"composer/class-map-generator": "^1",
"illuminate/contracts": "^9 || ^10",
"illuminate/support": "^9 || ^10",
"laminas/laminas-code": "^3.4 || ^4",
"nikic/php-parser": "^4.13 || ^5",
"php": "^8"
},
"require-dev": {
"doctrine/dbal": "^3.4",
"ergebnis/composer-normalize": "^2.28.3",
"larastan/larastan": "^2.6.3",
"mll-lab/php-cs-fixer-config": "^5.4",
"mockery/mockery": "^1.5",
"orchestra/testbench": "^7.6.1 || ^8",
"phpstan/extension-installer": "^1",
"phpstan/phpstan": "^1.8.2",
"phpstan/phpstan-mockery": "^1.1",
"phpstan/phpstan-phpunit": "^1.1.1",
"phpunit/phpunit": "^9.5.21 || ^10 || ^11",
"rector/rector": "^0.19",
"symplify/rule-doc-generator": "^11 || ^12"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"BenSampo\\Enum\\EnumServiceProvider"
]
},
"phpstan": {
"includes": [
"extension.neon"
]
}
},
"autoload": {
"psr-4": {
"BenSampo\\Enum\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Ben Sampson",
"homepage": "https://sampo.co.uk",
"role": "Developer"
},
{
"name": "Benedikt Franke",
"homepage": "https://franke.tech",
"role": "Developer"
}
],
"description": "Simple, extensible and powerful enumeration implementation for Laravel.",
"homepage": "https://github.com/bensampo/laravel-enum",
"keywords": [
"bensampo",
"enum",
"laravel",
"package",
"validation"
],
"support": {
"issues": "https://github.com/BenSampo/laravel-enum/issues",
"source": "https://github.com/BenSampo/laravel-enum/tree/v6.10.0"
},
"funding": [
{
"url": "https://github.com/bensampo",
"type": "github"
}
],
"time": "2024-02-14T14:12:51+00:00"
},
{ {
"name": "blade-ui-kit/blade-heroicons", "name": "blade-ui-kit/blade-heroicons",
"version": "2.3.0", "version": "2.3.0",
@ -575,150 +483,6 @@
], ],
"time": "2023-12-11T17:09:12+00:00" "time": "2023-12-11T17:09:12+00:00"
}, },
{
"name": "composer/class-map-generator",
"version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/composer/class-map-generator.git",
"reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/class-map-generator/zipball/953cc4ea32e0c31f2185549c7d216d7921f03da9",
"reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9",
"shasum": ""
},
"require": {
"composer/pcre": "^2.1 || ^3.1",
"php": "^7.2 || ^8.0",
"symfony/finder": "^4.4 || ^5.3 || ^6 || ^7"
},
"require-dev": {
"phpstan/phpstan": "^1.6",
"phpstan/phpstan-deprecation-rules": "^1",
"phpstan/phpstan-phpunit": "^1",
"phpstan/phpstan-strict-rules": "^1.1",
"symfony/filesystem": "^5.4 || ^6",
"symfony/phpunit-bridge": "^5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"Composer\\ClassMapGenerator\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "https://seld.be"
}
],
"description": "Utilities to scan PHP code and generate class maps.",
"keywords": [
"classmap"
],
"support": {
"issues": "https://github.com/composer/class-map-generator/issues",
"source": "https://github.com/composer/class-map-generator/tree/1.1.0"
},
"funding": [
{
"url": "https://packagist.com",
"type": "custom"
},
{
"url": "https://github.com/composer",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
"type": "tidelift"
}
],
"time": "2023-06-30T13:58:57+00:00"
},
{
"name": "composer/pcre",
"version": "3.1.2",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
"reference": "4775f35b2d70865807c89d32c8e7385b86eb0ace"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/pcre/zipball/4775f35b2d70865807c89d32c8e7385b86eb0ace",
"reference": "4775f35b2d70865807c89d32c8e7385b86eb0ace",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0"
},
"require-dev": {
"phpstan/phpstan": "^1.3",
"phpstan/phpstan-strict-rules": "^1.1",
"symfony/phpunit-bridge": "^5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "3.x-dev"
}
},
"autoload": {
"psr-4": {
"Composer\\Pcre\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "http://seld.be"
}
],
"description": "PCRE wrapping library that offers type-safe preg_* replacements.",
"keywords": [
"PCRE",
"preg",
"regex",
"regular expression"
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
"source": "https://github.com/composer/pcre/tree/3.1.2"
},
"funding": [
{
"url": "https://packagist.com",
"type": "custom"
},
{
"url": "https://github.com/composer",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
"type": "tidelift"
}
],
"time": "2024-03-07T15:38:35+00:00"
},
{ {
"name": "dasprid/enum", "name": "dasprid/enum",
"version": "1.0.5", "version": "1.0.5",
@ -1684,69 +1448,6 @@
], ],
"time": "2023-12-03T19:50:20+00:00" "time": "2023-12-03T19:50:20+00:00"
}, },
{
"name": "laminas/laminas-code",
"version": "4.13.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-code.git",
"reference": "7353d4099ad5388e84737dd16994316a04f48dbf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laminas/laminas-code/zipball/7353d4099ad5388e84737dd16994316a04f48dbf",
"reference": "7353d4099ad5388e84737dd16994316a04f48dbf",
"shasum": ""
},
"require": {
"php": "~8.1.0 || ~8.2.0 || ~8.3.0"
},
"require-dev": {
"doctrine/annotations": "^2.0.1",
"ext-phar": "*",
"laminas/laminas-coding-standard": "^2.5.0",
"laminas/laminas-stdlib": "^3.17.0",
"phpunit/phpunit": "^10.3.3",
"psalm/plugin-phpunit": "^0.18.4",
"vimeo/psalm": "^5.15.0"
},
"suggest": {
"doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features",
"laminas/laminas-stdlib": "Laminas\\Stdlib component"
},
"type": "library",
"autoload": {
"psr-4": {
"Laminas\\Code\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"description": "Extensions to the PHP Reflection API, static code scanning, and code generation",
"homepage": "https://laminas.dev",
"keywords": [
"code",
"laminas",
"laminasframework"
],
"support": {
"chat": "https://laminas.dev/chat",
"docs": "https://docs.laminas.dev/laminas-code/",
"forum": "https://discourse.laminas.dev",
"issues": "https://github.com/laminas/laminas-code/issues",
"rss": "https://github.com/laminas/laminas-code/releases.atom",
"source": "https://github.com/laminas/laminas-code"
},
"funding": [
{
"url": "https://funding.communitybridge.org/projects/laminas-project",
"type": "community_bridge"
}
],
"time": "2023-10-18T10:00:55+00:00"
},
{ {
"name": "laravel/fortify", "name": "laravel/fortify",
"version": "v1.20.1", "version": "v1.20.1",

View File

@ -1,5 +1,7 @@
<?php <?php
use App\Enums\OperatingSystem;
use App\Enums\StorageProvider;
use App\NotificationChannels\Discord; use App\NotificationChannels\Discord;
use App\NotificationChannels\Email; use App\NotificationChannels\Email;
use App\NotificationChannels\Slack; use App\NotificationChannels\Slack;
@ -41,9 +43,8 @@
* General * General
*/ */
'operating_systems' => [ 'operating_systems' => [
// 'ubuntu_18', OperatingSystem::UBUNTU20,
'ubuntu_20', OperatingSystem::UBUNTU22,
'ubuntu_22',
], ],
'webservers' => ['none', 'nginx'], 'webservers' => ['none', 'nginx'],
'php_versions' => [ 'php_versions' => [
@ -106,12 +107,22 @@
/* /*
* Server * Server
*/ */
'server_types' => \App\Enums\ServerType::getValues(), 'server_types' => [
\App\Enums\ServerType::REGULAR,
\App\Enums\ServerType::DATABASE,
],
'server_types_class' => [ 'server_types_class' => [
\App\Enums\ServerType::REGULAR => \App\ServerTypes\Regular::class, \App\Enums\ServerType::REGULAR => \App\ServerTypes\Regular::class,
\App\Enums\ServerType::DATABASE => \App\ServerTypes\Database::class, \App\Enums\ServerType::DATABASE => \App\ServerTypes\Database::class,
], ],
'server_providers' => \App\Enums\ServerProvider::getValues(), 'server_providers' => [
\App\Enums\ServerProvider::CUSTOM,
\App\Enums\ServerProvider::AWS,
\App\Enums\ServerProvider::LINODE,
\App\Enums\ServerProvider::DIGITALOCEAN,
\App\Enums\ServerProvider::VULTR,
\App\Enums\ServerProvider::HETZNER,
],
'server_providers_class' => [ 'server_providers_class' => [
\App\Enums\ServerProvider::CUSTOM => \App\ServerProviders\Custom::class, \App\Enums\ServerProvider::CUSTOM => \App\ServerProviders\Custom::class,
\App\Enums\ServerProvider::AWS => AWS::class, \App\Enums\ServerProvider::AWS => AWS::class,
@ -324,7 +335,6 @@
'github', 'github',
'gitlab', 'gitlab',
'bitbucket', 'bitbucket',
'custom',
], ],
'source_control_providers_class' => [ 'source_control_providers_class' => [
'github' => Github::class, 'github' => Github::class,
@ -397,11 +407,16 @@
* storage providers * storage providers
*/ */
'storage_providers' => [ 'storage_providers' => [
'dropbox', StorageProvider::DROPBOX,
'ftp', StorageProvider::FTP,
], ],
'storage_providers_class' => [ 'storage_providers_class' => [
'dropbox' => Dropbox::class, 'dropbox' => Dropbox::class,
'ftp' => FTP::class, 'ftp' => FTP::class,
], ],
'ssl_types' => [
\App\Enums\SslType::LETSENCRYPT,
\App\Enums\SslType::CUSTOM,
],
]; ];

View File

@ -14,7 +14,7 @@ public function definition(): array
{ {
return [ return [
'profile' => $this->faker->word(), 'profile' => $this->faker->word(),
'provider' => $this->faker->randomElement(\App\Enums\ServerProvider::getValues()), 'provider' => $this->faker->randomElement(config('core.server_providers')),
'credentials' => [], 'credentials' => [],
'connected' => 1, 'connected' => 1,
'user_id' => User::factory(), 'user_id' => User::factory(),

View File

@ -11,7 +11,7 @@ public function definition(): array
{ {
return [ return [
'profile' => $this->faker->word(), 'profile' => $this->faker->word(),
'provider' => $this->faker->randomElement(\App\Enums\StorageProvider::getValues()), 'provider' => $this->faker->randomElement(config('core.storage_providers')),
'credentials' => [ 'credentials' => [
'token' => 'test-token', 'token' => 'test-token',
], ],

View File

@ -21,7 +21,7 @@ class="p-6"
<option value="" selected disabled> <option value="" selected disabled>
{{ __("Select") }} {{ __("Select") }}
</option> </option>
@foreach (\App\Enums\SslType::getValues() as $t) @foreach (config("core.ssl_types") as $t)
<option value="{{ $t }}" @if($t == old('type')) selected @endif> <option value="{{ $t }}" @if($t == old('type')) selected @endif>
{{ $t }} {{ $t }}
</option> </option>