Migrate to HTMX (#114)

Dropped Livewire
Added HTMX
Added Blade code lint
Drop Mysql and Redis
Migrate to SQLite
This commit is contained in:
Saeed Vaziry
2024-03-06 17:02:59 +01:00
committed by GitHub
parent 5b2c419e91
commit b2083fc6b2
486 changed files with 8609 additions and 8707 deletions

View File

@ -0,0 +1,37 @@
<div>
@if ($site->deploymentScript?->content)
<x-dropdown>
<x-slot name="trigger">
<x-secondary-button>
{{ __("Auto Deployment") }}
</x-secondary-button>
</x-slot>
<x-slot name="content">
<div id="auto-deployment">
<x-dropdown-link
class="cursor-pointer"
hx-post="{{ route('servers.sites.application.auto-deployment', ['server' => $server, 'site' => $site]) }}"
hx-swap="outerHTML"
hx-target="#auto-deployment"
>
{{ __("Enable") }}
@if ($site->auto_deployment)
<x-heroicon-o-check class="ml-1 h-5 w-5 text-green-600" />
@endif
</x-dropdown-link>
<x-dropdown-link
class="cursor-pointer"
hx-delete="{{ route('servers.sites.application.auto-deployment', ['server' => $server, 'site' => $site]) }}"
hx-swap="outerHTML"
hx-target="#auto-deployment"
>
{{ __("Disable") }}
@if (! $site->auto_deployment)
<x-heroicon-o-check class="ml-1 h-5 w-5 text-green-600" />
@endif
</x-dropdown-link>
</div>
</x-slot>
</x-dropdown>
@endif
</div>

View File

@ -0,0 +1,39 @@
<div x-data="">
<x-modal name="change-branch">
<form
id="change-branch-form"
hx-post="{{ route("servers.sites.application.branch", ["server" => $server, "site" => $site]) }}"
hx-select="#change-branch-form"
hx-swap="outerHTML"
class="p-6"
>
<h2 class="text-lg font-medium text-gray-900 dark:text-gray-100">
{{ __("Change Branch") }}
</h2>
<div class="mt-6">
<x-input-label for="branch" :value="__('Branch')" />
<x-text-input
value="{{ old('branch', $site->branch) }}"
id="branch"
name="branch"
type="text"
class="mt-1 w-full"
/>
@error("branch")
<x-input-error class="mt-2" :messages="$message" />
@enderror
</div>
<div class="mt-6 flex items-center justify-end">
<x-secondary-button type="button" x-on:click="$dispatch('close')">
{{ __("Cancel") }}
</x-secondary-button>
<x-primary-button class="ml-3" hx-disable>
{{ __("Save") }}
</x-primary-button>
</div>
</form>
</x-modal>
</div>

View File

@ -0,0 +1,14 @@
<div>
@if ($site->deploymentScript?->content)
<form
id="deploy"
hx-post="{{ route("servers.sites.application.deploy", ["server" => $server, "site" => $site]) }}"
hx-swap="outerHTML"
hx-select="#deploy"
>
<x-primary-button hx-disable>
{{ __("Deploy") }}
</x-primary-button>
</form>
@endif
</div>

View File

@ -0,0 +1,35 @@
<div x-data="">
<x-modal name="deployment-script">
<form
id="deployment-script-form"
hx-post="{{ route("servers.sites.application.deployment-script", ["server" => $server, "site" => $site]) }}"
hx-select="#deployment-script-form"
hx-swap="outerHTML"
class="p-6"
>
<h2 class="text-lg font-medium text-gray-900 dark:text-gray-100">
{{ __("Deployment Script") }}
</h2>
<div class="mt-6">
<x-input-label for="script" :value="__('Script')" />
<x-textarea rows="10" id="script" name="script" class="mt-1 w-full">
{{ old("script", $site->deployment_script_text) }}
</x-textarea>
@error("script")
<x-input-error class="mt-2" :messages="$message" />
@enderror
</div>
<div class="mt-6 flex items-center justify-end">
<x-secondary-button type="button" x-on:click="$dispatch('close')">
{{ __("Cancel") }}
</x-secondary-button>
<x-primary-button class="ml-3" hx-disable>
{{ __("Save") }}
</x-primary-button>
</div>
</form>
</x-modal>
</div>

View File

@ -0,0 +1,69 @@
@php
$deployments = $site
->deployments()
->latest()
->paginate(10);
@endphp
<div x-data="">
<x-card-header>
<x-slot name="title">{{ __("Deployments") }}</x-slot>
</x-card-header>
<x-live id="live-deployments">
<x-table>
<tr>
<x-th>{{ __("Commit") }}</x-th>
<x-th>{{ __("Date") }}</x-th>
<x-th>{{ __("Status") }}</x-th>
<x-th></x-th>
</tr>
@foreach ($deployments as $deployment)
<tr>
<x-td>
<a
href="{{ $deployment->commit_data["url"] }}"
target="_blank"
class="font-semibold text-primary-600"
>
{{ $deployment->commit_data["message"] }}
</a>
</x-td>
<x-td>
<x-datetime :value="$deployment->created_at" />
</x-td>
<x-td>
<div class="inline-flex">
@include("application.partials.deployment-status", ["status" => $deployment->status])
</div>
</x-td>
<x-td>
<x-icon-button
hx-get="{{ route('servers.sites.application.deployment.log', ['server' => $server, 'site' => $site, 'deployment' => $deployment]) }}"
hx-target="#show-log-content"
hx-swap="outerHTML"
hx-disable
>
<x-heroicon-o-eye class="h-5 w-5" />
</x-icon-button>
</x-td>
</tr>
@endforeach
</x-table>
</x-live>
<div class="mt-5">
{{ $deployments->withQueryString()->links() }}
</div>
<x-modal name="show-log" max-width="4xl">
<div class="p-6" id="show-log-content">
<h2 class="mb-5 text-lg font-medium text-gray-900 dark:text-gray-100">
{{ __("View Log") }}
</h2>
<x-console-view>{{ session()->get("content") }}</x-console-view>
<div class="mt-6 flex justify-end">
<x-secondary-button type="button" x-on:click="$dispatch('close')">
{{ __("Close") }}
</x-secondary-button>
</div>
</div>
</x-modal>
</div>

View File

@ -0,0 +1,43 @@
<div x-data="">
<x-modal name="update-env">
<form
id="update-env-form"
hx-post="{{ route("servers.sites.application.env", [$server, $site]) }}"
hx-swap="outerHTML"
hx-select="#update-env-form"
class="p-6"
>
<h2 class="text-lg font-medium text-gray-900 dark:text-gray-100">
{{ __("Update .env File") }}
</h2>
<div
class="mt-6"
id="env-content"
hx-get="{{ route("servers.sites.application.env", [$server, $site]) }}"
hx-trigger="load"
hx-target="#env"
hx-select="#env"
hx-swap="outerHTML"
>
<x-input-label for="env" :value="__('.env')" />
<x-textarea id="env" name="env" rows="10" class="mt-1 block w-full">
{{ old("env", session()->get("env") ?? "Loading...") }}
</x-textarea>
@error("env")
<x-input-error class="mt-2" :messages="$message" />
@enderror
</div>
<div class="mt-6 flex items-center justify-end">
<x-secondary-button type="button" x-on:click="$dispatch('close')">
{{ __("Cancel") }}
</x-secondary-button>
<x-primary-button class="ml-3" hx-disable>
{{ __("Save") }}
</x-primary-button>
</div>
</form>
</x-modal>
</div>

View File

@ -0,0 +1 @@
@include("application.php-app")

View File

@ -0,0 +1,11 @@
@if ($status == \App\Enums\DeploymentStatus::DEPLOYING)
<x-status status="warning">{{ $status }}</x-status>
@endif
@if ($status == \App\Enums\DeploymentStatus::FINISHED)
<x-status status="success">{{ $status }}</x-status>
@endif
@if ($status == \App\Enums\DeploymentStatus::FAILED)
<x-status status="danger">{{ $status }}</x-status>
@endif

View File

@ -0,0 +1,56 @@
<div>
<x-card-header>
<x-slot name="title">{{ __("Application") }}</x-slot>
<x-slot name="description">
{{ __("Here you can manage your application") }}
</x-slot>
<x-slot name="aside">
<div class="flex items-center">
<div class="mr-2">
@include("application.deploy")
</div>
@if ($site->source_control_id)
<div class="mr-2">
@include("application.auto-deployment")
</div>
@endif
<x-dropdown>
<x-slot name="trigger">
<x-secondary-button>
{{ __("Manage") }}
</x-secondary-button>
</x-slot>
<x-slot name="content">
@if ($site->source_control_id)
<x-dropdown-link
class="cursor-pointer"
x-on:click="$dispatch('open-modal', 'change-branch')"
>
{{ __("Branch") }}
</x-dropdown-link>
@endif
<x-dropdown-link
class="cursor-pointer"
x-on:click="$dispatch('open-modal', 'deployment-script')"
>
{{ __("Deployment Script") }}
</x-dropdown-link>
<x-dropdown-link class="cursor-pointer" x-on:click="$dispatch('open-modal', 'update-env')">
{{ __(".env") }}
</x-dropdown-link>
</x-slot>
</x-dropdown>
@if ($site->source_control_id)
@include("application.change-branch")
@endif
@include("application.deployment-script")
@include("application.env")
</div>
</x-slot>
</x-card-header>
@include("application.deployments-list")
</div>

View File

@ -0,0 +1 @@
@include("application.php-app")

View File

@ -0,0 +1,10 @@
<div>
<x-simple-card class="flex items-center justify-between">
<span>
{{ __("Your Wordpress site is installed and ready to use! ") }}
</span>
<x-secondary-button :href="$site->url" target="_blank">
{{ __("Open Website") }}
</x-secondary-button>
</x-simple-card>
</div>