Sha256: 23c47c83fd65adc68e364a6ad5fb2aeb7135d48b92002bbd71883a93575c18d4

Contents?: true

Size: 1.85 KB

Versions: 1

Compression:

Stored size: 1.85 KB

Contents

require 'yaml'

module Sct
  class DevCommand

    @@file = "docker-compose.dev.yml"

    def error message
      UI.error message
      exit 1
    end

    def dc command, env = {}
      system env, "docker-compose -f ~/development/spend-cloud/docker-compose.yml #{command}"
    end

    def dc_dev command, env = {}
      system env, "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 Sct::Helper.is_windows?
        host_machine_IP = (options.wsl_debugger ? `hostname -I | awk '{print $1}'` : `powershell.exe -c '(Test-Connection -ComputerName $env:computername -count 1).ipv4address.IPAddressToString' | dos2unix`).chomp
      elsif Sct::Helper.is_mac_os?
        host_machine_IP = `ipconfig getifaddr $(route get 8.8.8.8 | awk '/interface: / {print $2; }')`.chomp
      else
        host_machine_IP = `hostname -I | awk '{print $1}'`.chomp
      end

      env = {
        "PUID" => `id -u`.chomp,
        "PGID" => `id -g`.chomp,
        "HOST_MACHINE_IP" => host_machine_IP,
        "IDE_DEBUG_KEY" => "PHPSTORM",
        "IDE_DEBUG_SERVER" => "docker",
      }

      if options.pull
        return unless dc_dev "pull"
      end

      if options.build
        return unless dc_dev "build #{options.pull ? "--pull" : ""}", env
      end

      if options.pull or options.build
        system "docker image prune -f"
      end

      for service, settings in services
        return unless dc "rm --stop --force #{service}"
      end

      begin
        dc_dev "up", env
      rescue SystemExit, Interrupt
      end

      dc_dev "rm --force --stop"

      for service, settings in services
        dc "up --detach #{service}"
      end
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sct-1.1.2 sct/lib/sct/commands/dev.rb