# frozen_string_literal: true

module Migrations::CLI
  class UploadCommand
    def initialize(options)
      @options = options
    end

    def execute
      puts "Starting uploads..."

      validate_settings_file!
      settings = load_settings

      ::Migrations::Uploader::Uploads.perform!(settings)

      puts ""
    end

    private

    def load_settings
      settings = ::Migrations::SettingsParser.parse!(@options.settings)
      merge_settings_from_cli_args!(@options, settings)

      settings
    end

    def merge_settings_from_cli_args!(settings)
      settings[:fix_missing] = options.fix_missing if @options.fix_missing.present?
      settings[:create_optimized_images] = options.optimize if @options.optimize.present?
    end

    def validate_settings_file!
      path = @options.settings

      raise ::Migrations::NoSettingsFound, "Settings file not found: #{path}" if !File.exist?(path)
    end
  end
end