require 'yaml' module Sct class DevCommand @@file = "docker-compose.dev.yml" def error message UI.error message exit 1 end def dc command system "docker-compose -f ~/development/spend-cloud/docker-compose.yml #{command}" end def local_dc command system "docker-compose -f #{@@file} #{command}" end def manifest if !File.exist? @@file error "Could not find file '#{@@file}'." end YAML.load File.read @@file end def execute args, options 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"] command = service_spec["command"] || "" if options.pull return unless local_dc "pull" end if options.build return unless local_dc "build --build-arg PUID=$(id -u) --build-arg PGID=$(id -g) #{options.pull ? "--pull" : ""}" end if options.pull or options.build system "docker image prune -f" end return unless dc "rm --stop --force #{service}" local_dc "run --rm --service-ports --name #{container} #{service} #{command}" dc "up --detach #{service}" end end end