class Envirobly::Deployment

def initialize(environ_name:, commit:, account_id:, project_name:, project_id:, region:, shell:)

def initialize(environ_name:, commit:, account_id:, project_name:, project_id:, region:, shell:)
  @environ_name = environ_name
  @commit = commit
  @config = Envirobly::Config.new
  @default_account = Envirobly::Defaults::Account.new(shell:)
  @default_project = Envirobly::Defaults::Project.new(shell:)
  @default_region = Envirobly::Defaults::Region.new(shell:)
  if account_id.blank?
    account_id = @default_account.require_if_none
  end
  if project_id.blank? && project_name.blank?
    project_id = @default_project.value
    if project_id.blank?
      project_name = Envirobly::Defaults::Project.dirname
    end
  end
  if region.blank?
    region = @default_region.require_if_none
  end
  @params = {
    account_id:,
    project_id:,
    project_name:,
    region:,
    deployment: {
      environ_name:,
      commit_ref: @commit.ref,
      commit_time: @commit.time,
      commit_message: @commit.message,
      object_tree_checksum: @commit.object_tree_checksum,
      **@config.to_params
    }
  }
end