Sha256: 2007f5fbd1105458e0e77fe130b8dca7e6ff0b031ac79314df67f803734afe12

Contents?: true

Size: 1.07 KB

Versions: 1

Compression:

Stored size: 1.07 KB

Contents

# frozen_string_literal: true

module Boppers
  require "thor"
  require "aitch"

  require "boppers/version"
  require "boppers/cli"
  require "boppers/configuration"
  require "boppers/http_client"
  require "boppers/runner"

  def self.configure
    yield configuration
  end

  def self.configuration
    @configuration ||= Configuration.new
  end

  # Send notification.
  # The `name` identifies the message type, which is used to
  # filter out the notifications and their subscribers.
  def self.notify(name, title:, message:, options: {})
    configuration
      .notifiers
      .select {|notifier| subscribed?(notifier, name) }
      .each do |notifier|
        notifier.call(title, message, options)
      end
  end

  def self.subscribed?(notifier, name)
    subscriptions = if notifier.respond_to?(:subscribe)
                      [notifier.subscribe || name]
                    else
                      [name]
                    end
    subscriptions = subscriptions.flatten.compact.map(&:to_sym)
p name
p notifier
p subscriptions
    subscriptions.include?(name)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
boppers-0.0.4 lib/boppers.rb