script->name.' - Executions'; } public function mount(): void { $this->authorize('view', $this->script); } public function getWidgets(): array { return [ [Widgets\ScriptExecutionsList::class, ['script' => $this->script]], ]; } protected function getHeaderActions(): array { $form = [ Select::make('server') ->options(fn () => auth()->user()?->currentProject?->servers?->pluck('name', 'id') ?? []) ->rules(fn (Get $get) => ExecuteScript::rules($get())['server']) ->searchable() ->reactive(), Select::make('user') ->rules(fn (Get $get) => ExecuteScript::rules($get())['user']) ->native(false) ->options(function (Get $get): array { $users = ['root']; /** @var ?Server $server */ $server = Server::query()->find($get('server')); if ($server) { $users = $server->getSshUsers(); } return array_combine($users, $users); }), ]; foreach ($this->script->getVariables() as $variable) { $form[] = TextInput::make('variables.'.$variable) ->label($variable) ->rules(fn (Get $get) => ExecuteScript::rules($get())['variables.*']); } return [ Action::make('execute') ->icon('heroicon-o-bolt') ->modalWidth(MaxWidth::Large) ->form($form) ->action(function (array $data): void { app(ExecuteScript::class)->execute($this->script, $data); $this->dispatch('$refresh'); }), ]; } }