Sha256: 43d25c34c240515a1f4cd48461eb65e1607b2f1c3b592633f9bea13de0f4931d

Contents?: true

Size: 794 Bytes

Versions: 1

Compression:

Stored size: 794 Bytes

Contents

# frozen_string_literal: true

require 'listen'

module GitMQueue
  class Consumer
    def initialize(storage:, name:, branch:)
      @storage = storage
      @branch = branch
      @name = name
    end

    def branch_file
      @branch_file ||= File.join(@storage.path, 'refs', 'heads')
    end

    def consume(&block)
      @block = block
      consume_commits
      listener.start
    end

    def stop
      listener.stop
    end

    private

    def listener
      @listener ||= Listen.to(branch_file, only: /#{Regexp.escape(@branch)}/) do
        consume_commits
      end
    end

    def consume_commits
      commits = @storage.commits(@branch, @name)
      commits.each do |commit|
        @block.call commit.message
        @storage.tag(@name, commit)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gitmqueue-0.1.2 lib/consumer.rb