Sha256: 640d3746bdebc1b3e69effc99e3734b9b04e90c48c57aa8d62af944cf637b3c3

Contents?: true

Size: 1.09 KB

Versions: 2

Compression:

Stored size: 1.09 KB

Contents

require 'yaml'

module Sct
  class ShellCommand

    def error message
      UI.error message
      exit 1
    end

    def execute args, options
      command = args.empty? ? "bash" : args.join(" ")

      file = "docker-compose.dev.yml"

      if !File.exist? file
        error "Could not find file '#{file}'."
      end

      manifest = YAML.load File.read file

      services = manifest["services"].to_a

      service, service_spec = services.first

      container = service_spec["container_name"]

      project = `docker container inspect --format '{{index .Config.Labels "com.docker.compose.project"}}' #{container}`.chomp

      if project == "spend-cloud"
        print "This container was not started with 'sct dev'. Are you sure you want to continue? [y/N] ".red

        answer = $stdin.readline.chomp.downcase

        if answer != "y"
          exit
        end
      end

      user = options.root ? "root:root" : "$(id -u):$(id -g)"

      puts "Attaching to shell in container #{container.bold}".green

      system "docker exec -it --user #{user} #{container} #{command}"
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sct-1.10.2 sct/lib/sct/commands/shell.rb
sct-1.10.1 sct/lib/sct/commands/shell.rb