Add build pack selection and show/hide static site options

This commit is contained in:
Andras Bacsai 2024-01-17 15:41:32 +01:00
parent 8a91395472
commit c620bb58ed
2 changed files with 44 additions and 10 deletions

View File

@ -30,18 +30,22 @@ class PublicGitRepository extends Component
public GithubApp|GitlabApp|string $git_source = 'other'; public GithubApp|GitlabApp|string $git_source = 'other';
public string $git_host; public string $git_host;
public string $git_repository; public string $git_repository;
public $build_pack;
public bool $show_is_static = true;
protected $rules = [ protected $rules = [
'repository_url' => 'required|url', 'repository_url' => 'required|url',
'port' => 'required|numeric', 'port' => 'required|numeric',
'is_static' => 'required|boolean', 'is_static' => 'required|boolean',
'publish_directory' => 'nullable|string', 'publish_directory' => 'nullable|string',
'build_pack' => 'required|string',
]; ];
protected $validationAttributes = [ protected $validationAttributes = [
'repository_url' => 'repository', 'repository_url' => 'repository',
'port' => 'port', 'port' => 'port',
'is_static' => 'static', 'is_static' => 'static',
'publish_directory' => 'publish directory', 'publish_directory' => 'publish directory',
'build_pack' => 'build pack',
]; ];
public function mount() public function mount()
@ -53,7 +57,18 @@ class PublicGitRepository extends Component
$this->parameters = get_route_parameters(); $this->parameters = get_route_parameters();
$this->query = request()->query(); $this->query = request()->query();
} }
public function updatedBuildPack()
{
if ($this->build_pack === 'nixpacks') {
$this->show_is_static = true;
} else if ($this->build_pack === 'static') {
$this->show_is_static = false;
$this->is_static = false;
} else {
$this->show_is_static = false;
$this->is_static = false;
}
}
public function instantSave() public function instantSave()
{ {
if ($this->is_static) { if ($this->is_static) {
@ -157,6 +172,7 @@ class PublicGitRepository extends Component
'environment_id' => $environment->id, 'environment_id' => $environment->id,
'destination_id' => $destination->id, 'destination_id' => $destination->id,
'destination_type' => $destination_class, 'destination_type' => $destination_class,
'build_pack' => $this->build_pack,
]; ];
} else { } else {
$application_init = [ $application_init = [
@ -170,7 +186,8 @@ class PublicGitRepository extends Component
'destination_id' => $destination->id, 'destination_id' => $destination->id,
'destination_type' => $destination_class, 'destination_type' => $destination_class,
'source_id' => $this->git_source->id, 'source_id' => $this->git_source->id,
'source_type' => $this->git_source->getMorphClass() 'source_type' => $this->git_source->getMorphClass(),
'build_pack' => $this->build_pack,
]; ];
} }

View File

@ -10,6 +10,15 @@
Check repository Check repository
</x-forms.button> </x-forms.button>
</div> </div>
@if (!$branch_found)
<div>
<p>Public repositories: <span class='text-helper'>https://...</span></p>
<p>Private repositories: <span class='text-helper'>git@...</span></p>
<p>Preselect branch: <span
class='text-helper'>https://github.com/coollabsio/coolify-examples/tree/static</span> to
select 'static' branch.</p>
</div>
@endif
@if ($branch_found) @if ($branch_found)
@if ($rate_limit_remaining && $rate_limit_reset) @if ($rate_limit_remaining && $rate_limit_reset)
<div class="flex gap-2 py-2"> <div class="flex gap-2 py-2">
@ -21,12 +30,20 @@
<div class="flex flex-col gap-2 pb-6"> <div class="flex flex-col gap-2 pb-6">
<div class="flex gap-2"> <div class="flex gap-2">
@if ($git_source === 'other') @if ($git_source === 'other')
<x-forms.input id="git_branch" label="Selected branch" <x-forms.input id="git_branch" label="Branch"
helper="You can select other branches after configuration is done." /> helper="You can select other branches after configuration is done." />
@else @else
<x-forms.input disabled id="git_branch" label="Selected branch" <x-forms.input disabled id="git_branch" label="Branch"
helper="You can select other branches after configuration is done." /> helper="You can select other branches after configuration is done." />
@endif @endif
<x-forms.select wire:model.live="build_pack" label="Build Pack" required>
<option value="nixpacks">Nixpacks</option>
<option value="static">Static</option>
<option value="dockerfile">Dockerfile</option>
<option value="dockercompose">Docker Compose</option>
</x-forms.select>
</div>
@if ($show_is_static)
@if ($is_static) @if ($is_static)
<x-forms.input id="publish_directory" label="Publish Directory" <x-forms.input id="publish_directory" label="Publish Directory"
helper="If there is a build process involved (like Svelte, React, Next, etc..), please specify the output directory for the build assets." /> helper="If there is a build process involved (like Svelte, React, Next, etc..), please specify the output directory for the build assets." />
@ -34,14 +51,14 @@
<x-forms.input type="number" id="port" label="Port" :readonly="$is_static" <x-forms.input type="number" id="port" label="Port" :readonly="$is_static"
helper="The port your application listens on." /> helper="The port your application listens on." />
@endif @endif
</div> <div class="w-52">
<div class="w-52"> <x-forms.checkbox instantSave id="is_static" label="Is it a static site?"
<x-forms.checkbox instantSave id="is_static" label="Is it a static site?" helper="If your application is a static site or the final build assets should be served as a static site, enable this." />
helper="If your application is a static site or the final build assets should be served as a static site, enable this." /> </div>
</div> @endif
</div> </div>
<x-forms.button wire:click.prevent='submit'> <x-forms.button wire:click.prevent='submit'>
Save New Application Continue
</x-forms.button> </x-forms.button>
@endif @endif
</div> </div>