#!/usr/bin/env ruby
# frozen_string_literal: true

$LOAD_PATH.unshift File.expand_path('../lib', __dir__)

require 'yaml'
require 'ostruct'
require 'bosh/cpi'
require 'bundler'

Bundler.setup(:default)
require 'cloud/azure'

cpi_config = YAML.load_file(ARGV.shift)

cloud_config = OpenStruct.new(logger: Bosh::AzureCloud::CPILogger.get_logger(STDERR))

Bosh::Clouds::Config.configure(cloud_config)

cpi_log = StringIO.new

cpi_lambda = lambda do |context|
  raise 'Could not find cloud properties in the configuration' unless cpi_config.key?('cloud') && cpi_config['cloud'].key?('properties')

  cloud_properties = cpi_config['cloud']['properties']
  cloud_properties['cpi_log'] = cpi_log

  # allow azure config to be overwritten dynamically by context
  cloud_properties['azure'].merge!(context)

  Bosh::Clouds::Azure.new(cloud_properties)
end

# Redefine $stdout because azure libraries use print for info logging
$stdout = STDERR

cli = Bosh::Cpi::Cli.new(cpi_lambda, cpi_log, STDOUT)

cli.run(ARGF.read)
