From c05bafed057d5368602be7711206eab3a4d3c51e Mon Sep 17 00:00:00 2001 From: Daniele Barbaro Date: Tue, 10 Nov 2020 16:38:20 +0100 Subject: [PATCH 1/2] [WIP] - Add networking option on list command. --- app/Commands/HelpCommand.php | 2 +- app/Commands/ListCommand.php | 16 ++++++++++++++-- app/Shell/Docker.php | 7 +++++++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/app/Commands/HelpCommand.php b/app/Commands/HelpCommand.php index b2fdc3f8..bb301d49 100644 --- a/app/Commands/HelpCommand.php +++ b/app/Commands/HelpCommand.php @@ -18,7 +18,7 @@ class HelpCommand extends Command 'start {container}' => 'Start the provided stopped container (by ID)', 'stop' => 'Stop a running container from a list of options', 'stop {container}' => 'Stop the provided running container (by ID)', - 'list' => 'List all enabled services (optionally pass --json flag)', + 'list' => 'List all enabled services (optionally pass --json or --networking flags)', ]; public function handle(): void diff --git a/app/Commands/ListCommand.php b/app/Commands/ListCommand.php index 1e49b3fb..c902e7b5 100644 --- a/app/Commands/ListCommand.php +++ b/app/Commands/ListCommand.php @@ -10,14 +10,16 @@ class ListCommand extends Command { use InitializesCommands; - protected $signature = 'list {--json}'; + protected $signature = 'list {--json}{--networking}'; protected $description = 'List all services enabled by Takeout.'; public function handle(): void { $this->initializeCommand(); - $containersCollection = app(Docker::class)->takeoutContainers(); + $docker = app(Docker::class); + + $containersCollection = $docker->takeoutContainers(); if ($this->option('json')) { $this->line($containersCollection->toJson()); @@ -29,6 +31,16 @@ public function handle(): void return; } + if ($this->option('networking')) { + $takeoutNetworkContainers = $docker->takeoutNetworkContainers(); + + $containers = $takeoutNetworkContainers->toArray(); + $columns = array_map('App\title_from_slug', array_keys(reset($containers))); + + $this->table($columns, $containers); + return; + } + $containers = $containersCollection->toArray(); $columns = array_map('App\title_from_slug', array_keys(reset($containers))); diff --git a/app/Shell/Docker.php b/app/Shell/Docker.php index 20052da0..fbda9f8c 100644 --- a/app/Shell/Docker.php +++ b/app/Shell/Docker.php @@ -74,6 +74,13 @@ public function allContainers(): Collection } public function takeoutContainers(): Collection + { + return $this->runAndParseTable( + "docker ps -a --filter 'name=TO-' --format 'table {{.ID}}|{{.Names}}|{{.Status}}|{{.Ports}}'" + ); + } + + public function takeoutNetworkContainers(): Collection { $process = sprintf( "docker ps -a --filter 'name=TO-' --format 'table %s|%s'", From e932f8faf16f5d797d2d1aed1b452043cfa9dd86 Mon Sep 17 00:00:00 2001 From: Tony Messias Date: Wed, 18 Dec 2024 19:14:06 -0300 Subject: [PATCH 2/2] Use an argument instead of a separte method --- app/Commands/ListCommand.php | 8 ++------ app/Shell/Docker.php | 20 +++++--------------- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/app/Commands/ListCommand.php b/app/Commands/ListCommand.php index 317eb9d7..ef7c59f1 100644 --- a/app/Commands/ListCommand.php +++ b/app/Commands/ListCommand.php @@ -11,14 +11,14 @@ class ListCommand extends Command { use InitializesCommands; - protected $signature = 'list {--json}{--networking}'; + protected $signature = 'list {--json} {--networking}'; protected $description = 'List all services enabled by Takeout.'; public function handle(Docker $docker): void { $this->initializeCommand(); - $containersCollection = $docker->takeoutContainers(); + $containersCollection = $docker->takeoutContainers(boolval($this->option('networking'))); if ($this->option('json')) { $this->line($containersCollection->map(function ($item) { @@ -36,10 +36,6 @@ public function handle(Docker $docker): void return; } - if ($this->option('networking')) { - $containersCollection = $docker->takeoutNetworkContainers(); - } - $containers = $containersCollection->toArray(); $columns = array_map('App\title_from_slug', array_keys(reset($containers))); diff --git a/app/Shell/Docker.php b/app/Shell/Docker.php index 306ceee6..5654a2d6 100644 --- a/app/Shell/Docker.php +++ b/app/Shell/Docker.php @@ -98,22 +98,12 @@ public function allContainers(): Collection ); } - public function takeoutContainers(): Collection + public function takeoutContainers(bool $withNetworking = false): Collection { - return $this->runAndParseTable( - "docker ps -a --filter 'name=TO-' --format 'table {{.ID}}|{{.Names}}|{{.Status}}|{{.Ports}}'" - ); - } - - public function takeoutNetworkContainers(): Collection - { - $process = sprintf( - 'docker ps -a --filter "name=TO-" --format "table %s|%s"', - '{{.ID}}|{{.Names}}|{{.Status}}|{{.Ports}}', - '{{.Label \"com.tighten.takeout.Base_Alias\"}}|{{.Label \"com.tighten.takeout.Full_Alias\"}}' - ); - - return $this->runAndParseTable($process); + return $this->runAndParseTable(sprintf( + 'docker ps -a --filter \'name=TO-\' --format \'table {{.ID}}|{{.Names}}|{{.Status}}|{{.Ports}}%s\'', + $withNetworking ? '|{{.Label "com.tighten.takeout.Base_Alias"}}|{{.Label "com.tighten.takeout.Full_Alias"}}' : '', + )); } public function startableTakeoutContainers(): Collection