Sha256: 46e3ab202944bbb1d54baa3b20f66562015d2001fd55d175f82f282964b45dfc

Contents?: true

Size: 1.02 KB

Versions: 2

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

require 'hard_cider/version'
require 'hard_cider/client'
require 'hard_cider/utils'

module HardCider
  CLIENT_OPTIONS = %i[key_id issuer_id private_key].freeze
  private_constant :CLIENT_OPTIONS

  DEFAULTS = { frequency: 30, timeout: 3600 }.freeze

  # @param bundle_id [String]
  # @param options [Hash]
  # @return [Boolean]
  def self.wait(bundle_id:, **options)
    options = DEFAULTS.merge(options)
    client = HardCider::Client.new(
      options.slice(*CLIENT_OPTIONS)
    )
    timeout_at = Time.now + options[:timeout]

    loop do
      options[:before_wait]&.call

      return true if client.latest_build_processed?(bundle_id)
      return false if Time.now > timeout_at

      sleep(options[:frequency])
    end
  end

  # @param bundle_id [String]
  # @param options [Hash]
  # @return [String]
  def self.state(bundle_id:, **options)
    client = HardCider::Client.new(
      options.slice(*CLIENT_OPTIONS)
    )

    client.latest_build(bundle_id).dig(:attributes, :processing_state)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hard_cider-0.3.0 lib/hard_cider.rb
hard_cider-0.2.0 lib/hard_cider.rb