feat: CI/CD pipeline setup complete - Ansible playbooks updated, secrets configured, workflow ready

This commit is contained in:
2025-10-31 01:39:24 +01:00
parent 55c04e4fd0
commit e26eb2aa12
601 changed files with 44184 additions and 32477 deletions

View File

@@ -8,6 +8,7 @@ use App\Framework\Console\CommandHistory;
use App\Framework\Console\ConsoleColor;
use App\Framework\Console\ConsoleOutputInterface;
use App\Framework\Console\HistoryTab;
use App\Framework\Console\Layout\TerminalSize;
use App\Framework\Console\Screen\CursorControlCode;
use App\Framework\Console\Screen\ScreenControlCode;
use App\Framework\Console\TuiView;
@@ -18,9 +19,13 @@ use App\Framework\Discovery\ValueObjects\DiscoveredAttribute;
*/
final readonly class TuiRenderer
{
private MenuBar $menuBar;
public function __construct(
private ConsoleOutputInterface $output
) {
// Initialize menu bar with default items
$this->menuBar = new MenuBar(['Datei', 'Bearbeiten', 'Ansicht', 'Hilfe']);
}
/**
@@ -29,8 +34,17 @@ final readonly class TuiRenderer
public function render(TuiState $state, CommandHistory $history): void
{
$this->clearScreen();
$this->renderHeader();
// Get terminal size for layout
$terminalSize = TerminalSize::detect();
// Render menu bar at top
$this->renderMenuBar($state, $terminalSize->width);
// Render header (or skip if menu bar replaces it)
// $this->renderHeader();
// Render main content
match ($state->getCurrentView()) {
TuiView::CATEGORIES => $this->renderCategories($state),
TuiView::COMMANDS => $this->renderCommands($state),
@@ -40,6 +54,9 @@ final readonly class TuiRenderer
TuiView::DASHBOARD => $this->renderDashboard($state),
TuiView::HELP => $this->renderHelp($state),
};
// Render status line at bottom
$this->renderStatusLine($state, $terminalSize->width);
}
/**
@@ -443,4 +460,41 @@ final readonly class TuiRenderer
return floor($diff / 86400) . "d ago";
}
/**
* Render menu bar at the top
*/
private function renderMenuBar(TuiState $state, int $screenWidth): void
{
$this->menuBar->render($this->output, $state->getActiveMenu(), $screenWidth);
}
/**
* Render status line at the bottom
*/
private function renderStatusLine(TuiState $state, int $screenWidth): void
{
$statusText = $state->getStatus();
// Default status if empty
if ($statusText === '') {
$statusText = 'Bereit';
}
// Move cursor to last line
$terminalSize = TerminalSize::detect();
$this->output->write(CursorControlCode::POSITION->format($terminalSize->height, 1));
// Render status line with separator
$this->output->writeLine(str_repeat('─', $screenWidth), ConsoleColor::GRAY);
$this->output->writeLine($statusText, ConsoleColor::BRIGHT_BLUE);
}
/**
* Get menu bar instance
*/
public function getMenuBar(): MenuBar
{
return $this->menuBar;
}
}