Extract pipe pattern

This commit is contained in:
David Heinemeier Hansson
2023-01-20 14:38:27 +01:00
parent ef9259fdd8
commit 435b558260
2 changed files with 13 additions and 7 deletions

View File

@@ -24,7 +24,7 @@ class Mrsk::Commands::App < Mrsk::Commands::Base
end
def stop
[ "docker ps -q #{service_filter.join(" ")} | xargs docker stop" ]
pipe current_container_id, "xargs docker stop"
end
def info
@@ -32,9 +32,10 @@ class Mrsk::Commands::App < Mrsk::Commands::Base
end
def logs(lines: 1000, grep: nil)
[ "docker ps -q #{service_filter.join(" ")} | xargs docker logs -n #{lines} -t" ].tap do |command|
command.first << " | grep #{grep}" if grep
end
pipe \
current_container_id,
"xargs docker logs -n #{lines} -t",
("grep #{grep}" if grep)
end
def exec(*command, interactive: false)

View File

@@ -11,10 +11,15 @@ module Mrsk::Commands
end
private
def combine(*commands)
def combine(*commands, by: "&&")
commands
.collect { |command| command + [ "&&" ] }.flatten # Join commands with &&
.tap { |commands| commands.pop } # Remove trailing &&
.compact
.collect { |command| Array(command) + [ by ] }.flatten # Join commands
.tap { |commands| commands.pop } # Remove trailing combiner
end
def pipe(*commands)
combine *commands, by: "|"
end
def docker(*args)