require 'yaml' module Shell class Runner def error message UI.error message exit 1 end def launch command = ARGV.empty? ? "sh" : ARGV.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 system "docker exec -it #{container} #{command}" end end end