class Matrixeval::DockerCompose

Attributes

context[R]

Public Class Methods

new(context) click to toggle source
# File lib/matrixeval/docker_compose.rb, line 8
def initialize(context)
  @context = context
end

Public Instance Methods

run(arguments) click to toggle source
# File lib/matrixeval/docker_compose.rb, line 12
    def run(arguments)
      forward_arguments = arguments.map do |arg|
        arg.match(/\s/) ? "\"#{arg}\"" : arg
      end.join(" ")

      no_tty = %w[bash sh zsh dash].include?(arguments[0]) ? '' : '--no-TTY' 

      system(
        <<~DOCKER_COMPOSE_COMMAND
        #{docker_compose} \
        run --rm \
        #{no_tty} \
        #{context.docker_compose_service_name} \
        #{forward_arguments}
        DOCKER_COMPOSE_COMMAND
      )
    ensure
      stop_containers
      clean_containers_and_anonymous_volumes
      remove_network
      turn_on_stty_opost
    end

Private Instance Methods

clean_containers_and_anonymous_volumes() click to toggle source
# File lib/matrixeval/docker_compose.rb, line 41
def clean_containers_and_anonymous_volumes
  system("#{docker_compose} rm -v -f >> /dev/null 2>&1")
end
docker_compose() click to toggle source
# File lib/matrixeval/docker_compose.rb, line 49
    def docker_compose
      <<~DOCKER_COMPOSE_COMMAND.strip
      docker --log-level error compose \
      -f #{yaml_file} \
      -p matrixeval-#{project_name}-#{context.id}
      DOCKER_COMPOSE_COMMAND
    end
project_name() click to toggle source
# File lib/matrixeval/docker_compose.rb, line 65
def project_name
  Config.project_name.gsub(/[^A-Za-z0-9-]/,'_').downcase
end
remove_network() click to toggle source
# File lib/matrixeval/docker_compose.rb, line 45
def remove_network
  system("#{docker_compose} down >> /dev/null 2>&1")
end
stop_containers() click to toggle source
# File lib/matrixeval/docker_compose.rb, line 37
def stop_containers
  system("#{docker_compose} stop >> /dev/null 2>&1")
end
turn_on_stty_opost() click to toggle source
# File lib/matrixeval/docker_compose.rb, line 61
def turn_on_stty_opost
  system("stty opost")
end
yaml_file() click to toggle source
# File lib/matrixeval/docker_compose.rb, line 57
def yaml_file
  ".matrixeval/docker-compose/#{context.id}.yml"
end