Sha256: fd69b4e72b058d5f992971c20c35cb4ecdd37321b7e11fbb4e427f1feba858f8

Contents?: true

Size: 1.2 KB

Versions: 7

Compression:

Stored size: 1.2 KB

Contents

require 'yaml'

module Sct
  class ShellCommand

    def error message
      UI.error message
      exit 1
    end

    def execute args, options
      command = args.empty? ? "sh" : 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

      if services.length != 1
        error "Currently sct only supports a single service declaration in '#{file}'. Contact the infra guild if you consider this a limitation."
      end

      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)"

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

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
sct-1.1.1 sct/lib/sct/commands/shell.rb
sct-1.1.0 sct/lib/sct/commands/shell.rb
sct-1.0.9 sct/lib/sct/commands/shell.rb
sct-1.0.8 sct/lib/sct/commands/shell.rb
sct-1.0.7 sct/lib/sct/commands/shell.rb
sct-1.0.6 sct/lib/sct/commands/shell.rb
sct-1.0.5 sct/lib/sct/commands/shell.rb