├── .github_changelog_generator ├── assets ├── styles │ └── console-ui-bundle.css ├── model │ ├── InputArgument.ts │ ├── TestStatus.ts │ ├── EventSourceMessage.ts │ ├── InputOption.ts │ └── TestType.ts ├── http-client │ └── HttpClient.ts ├── app.js └── components │ ├── TabsMenu.ts │ ├── ConsoleUiApp.ts │ ├── TestCase.ts │ ├── CliOutput.ts │ └── TestForm.ts ├── src ├── Resources │ ├── public │ │ ├── images │ │ │ └── icons │ │ │ │ ├── icon-72x72.png │ │ │ │ ├── icon-96x96.png │ │ │ │ ├── icon-128x128.png │ │ │ │ ├── icon-144x144.png │ │ │ │ ├── icon-152x152.png │ │ │ │ ├── icon-192x192.png │ │ │ │ ├── icon-384x384.png │ │ │ │ └── icon-512x512.png │ │ ├── serviceWorker.js │ │ └── manifest.json │ ├── config │ │ └── console-ui │ │ │ └── routes.yaml │ └── views │ │ └── console-ui.html.twig ├── Event │ ├── CommandScheduled.php │ ├── CommandStarted.php │ ├── ScheduledCommandReceived.php │ ├── CommandSucceeded.php │ ├── CommandOutputReceived.php │ └── CommandFailed.php ├── EventListener │ ├── CommandScheduler.php │ ├── Enqueue │ │ └── EnqueueCommandScheduler.php │ ├── CommandWatcher.php │ └── Mercure │ │ └── MercureCommandWatcher.php ├── Queue │ ├── ProcessFactory │ │ ├── ProcessFactory.php │ │ └── SymfonyProcessFactory.php │ ├── QueuedCommand.php │ ├── QueueCommandHandler.php │ ├── Enqueue │ │ └── RunCommandProcessor.php │ └── ExecuteCommand.php ├── ReadModel │ ├── Argument.php │ ├── Option.php │ └── Command.php ├── Finder │ ├── CommandFinder.php │ └── Symfony │ │ └── SymfonyKernelApplicationFinder.php ├── Controller │ ├── AppController.php │ └── CommandScheduleController.php ├── ConsoleUiBundle.php ├── DependencyInjection │ ├── Configuration.php │ ├── ConsoleUiCompilerPass.php │ └── ConsoleUiExtension.php └── Command │ └── StartConsoleUiCommand.php ├── .gitattributes ├── psalm.xml ├── phpcs.xml.dist ├── phpunit.xml.dist ├── CONTRIBUTING.md ├── package.json ├── LICENSE ├── composer.json ├── main.js ├── webpack.config.js ├── CODE_OF_CONDUCT.md ├── CHANGELOG.md ├── tsconfig.json └── README.md /.github_changelog_generator: -------------------------------------------------------------------------------- 1 | usernames_as_github_logins=true 2 | -------------------------------------------------------------------------------- /assets/styles/console-ui-bundle.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: lightgray; 3 | font-family: 'Roboto', Arial; 4 | margin: 0; 5 | } 6 | -------------------------------------------------------------------------------- /src/Resources/public/images/icons/icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drinksandco/symfony-console-ui/HEAD/src/Resources/public/images/icons/icon-72x72.png -------------------------------------------------------------------------------- /src/Resources/public/images/icons/icon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drinksandco/symfony-console-ui/HEAD/src/Resources/public/images/icons/icon-96x96.png -------------------------------------------------------------------------------- /src/Resources/public/images/icons/icon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drinksandco/symfony-console-ui/HEAD/src/Resources/public/images/icons/icon-128x128.png -------------------------------------------------------------------------------- /src/Resources/public/images/icons/icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drinksandco/symfony-console-ui/HEAD/src/Resources/public/images/icons/icon-144x144.png -------------------------------------------------------------------------------- /src/Resources/public/images/icons/icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drinksandco/symfony-console-ui/HEAD/src/Resources/public/images/icons/icon-152x152.png -------------------------------------------------------------------------------- /src/Resources/public/images/icons/icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drinksandco/symfony-console-ui/HEAD/src/Resources/public/images/icons/icon-192x192.png -------------------------------------------------------------------------------- /src/Resources/public/images/icons/icon-384x384.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drinksandco/symfony-console-ui/HEAD/src/Resources/public/images/icons/icon-384x384.png -------------------------------------------------------------------------------- /src/Resources/public/images/icons/icon-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drinksandco/symfony-console-ui/HEAD/src/Resources/public/images/icons/icon-512x512.png -------------------------------------------------------------------------------- /assets/model/InputArgument.ts: -------------------------------------------------------------------------------- 1 | export interface InputArgument { 2 | name: string 3 | description: string 4 | defaultValue?: string 5 | value?: string 6 | } 7 | -------------------------------------------------------------------------------- /assets/model/TestStatus.ts: -------------------------------------------------------------------------------- 1 | export enum TestStatus { 2 | STOPPED = 'STOPPED', 3 | RUNNING = 'RUNNING', 4 | SUCCEEDED = 'SUCCEEDED', 5 | FAILED = 'FAILED', 6 | } 7 | -------------------------------------------------------------------------------- /assets/model/EventSourceMessage.ts: -------------------------------------------------------------------------------- 1 | import {TestStatus} from "./TestStatus"; 2 | 3 | export interface EventSourceMessage { 4 | status: TestStatus, 5 | content: string 6 | } 7 | -------------------------------------------------------------------------------- /assets/model/InputOption.ts: -------------------------------------------------------------------------------- 1 | export interface InputOption { 2 | name: string 3 | description: string 4 | defaultValue?: string 5 | value?: string 6 | acceptValue: boolean 7 | } 8 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | /tests export-ignore 2 | /repo-images export-ignore 3 | /.github export-ignore 4 | 5 | .gitignore export-ignore 6 | composer.lock export-ignore 7 | grumphp.yml export-ignore 8 | infection.json export-ignore 9 | infection.log export-ignore 10 | -------------------------------------------------------------------------------- /src/Event/CommandScheduled.php: -------------------------------------------------------------------------------- 1 | { 2 | console.log('installing webapp') 3 | // installEvent.waitUntil( 4 | // caches.open(staticDevCoffee).then(cache => { 5 | // cache.addAll(assets) 6 | // }) 7 | // ) 8 | }) -------------------------------------------------------------------------------- /assets/model/TestType.ts: -------------------------------------------------------------------------------- 1 | import {InputArgument} from "./InputArgument"; 2 | import {InputOption} from "./InputOption"; 3 | 4 | export interface TestType { 5 | name: string 6 | command: string 7 | description: string 8 | arguments: InputArgument[] 9 | options: InputOption[] 10 | } 11 | -------------------------------------------------------------------------------- /src/EventListener/CommandScheduler.php: -------------------------------------------------------------------------------- 1 | (url: string, request: RequestInit): Promise { 2 | return fetch(url, request) 3 | .then(response => { 4 | if (!response.ok) { 5 | throw new Error(response.statusText) 6 | } 7 | return response.json() as Promise 8 | }) 9 | } 10 | -------------------------------------------------------------------------------- /src/Event/CommandStarted.php: -------------------------------------------------------------------------------- 1 | $command */ 12 | public function create(array $command, string $cwd): Process; 13 | } 14 | -------------------------------------------------------------------------------- /src/Event/ScheduledCommandReceived.php: -------------------------------------------------------------------------------- 1 | */ 12 | public function findByNamespace(?string $namespace): array; 13 | 14 | /** @return array */ 15 | public function findAllNamespaces(): array; 16 | } 17 | -------------------------------------------------------------------------------- /assets/app.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Welcome to your app's main JavaScript file! 3 | * 4 | * We recommend including the built version of this JavaScript file 5 | * (and its CSS file) in your base layout (base.html.twig). 6 | */ 7 | 8 | // any CSS you import will output into a single css file (console-ui-bundle.css in this case) 9 | import './styles/console-ui-bundle.css'; 10 | 11 | import {ConsoleUiApp} from "./components/ConsoleUiApp"; 12 | -------------------------------------------------------------------------------- /src/Event/CommandFailed.php: -------------------------------------------------------------------------------- 1 | $arguments 11 | * @param array $options 12 | */ 13 | public function __construct( 14 | public readonly string $name, 15 | public readonly array $arguments, 16 | public readonly array $options, 17 | ) { 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Queue/ProcessFactory/SymfonyProcessFactory.php: -------------------------------------------------------------------------------- 1 | setPty(true); 15 | 16 | return $process; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/ReadModel/Command.php: -------------------------------------------------------------------------------- 1 | $arguments 11 | * @param array