# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: BUSL-1.1

module VagrantPlugins
  module DockerProvider
    module Cap
      module PublicAddress
        def self.public_address(machine)
          return nil if machine.state.id != :running

          # If we're using a host VM, then return the IP of that
          # rather than of our own machine.
          if machine.provider.host_vm?
            host_machine = machine.provider.host_vm
            return nil if !host_machine.provider.capability?(:public_address)
            return host_machine.provider.capability(:public_address)
          end

          ssh_info = machine.ssh_info
          return nil if !ssh_info
          ssh_info[:host]
        end
      end
    end
  end
end
