Sha256: ab239691faa43ae4109957d4a6419cadfd003e6a55c4c9dd6da3e24c8fcdda8e

Contents?: true

Size: 1.14 KB

Versions: 25

Compression:

Stored size: 1.14 KB

Contents

# frozen_string_literal: true

require_relative '../shared/selection'

module Geet
  module Services
    class CloseMilestones
      include Geet::Shared::Selection

      def initialize(repository, out: $stdout)
        @repository = repository
        @out = out
      end

      def execute(numbers: nil)
        numbers = find_and_select_milestone_numbers(numbers)

        close_milestone_threads = close_milestones(numbers)

        close_milestone_threads.each(&:join)
      end

      private

      def find_and_select_milestone_numbers(numbers)
        selection_manager = Geet::Utils::AttributesSelectionManager.new(@repository, out: @out)

        selection_manager.add_attribute(:milestones, 'milestone', numbers, SELECTION_MULTIPLE, name_method: :title)

        milestones = selection_manager.select_attributes[0]

        milestones.map(&:number)
      end

      def close_milestones(numbers)
        @out.puts "Closing milestones #{numbers.join(', ')}..."

        numbers.map do |number|
          Thread.new do
            @repository.close_milestone(number)
          end
        end
      end
    end # CloseMilestones
  end # Services
end # Geet

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
geet-0.22.0 lib/geet/services/close_milestones.rb
geet-0.21.0 lib/geet/services/close_milestones.rb
geet-0.19.0 lib/geet/services/close_milestones.rb
geet-0.18.0 lib/geet/services/close_milestones.rb
geet-0.17.0 lib/geet/services/close_milestones.rb
geet-0.16.0 lib/geet/services/close_milestones.rb
geet-0.15.0 lib/geet/services/close_milestones.rb
geet-0.14.0 lib/geet/services/close_milestones.rb
geet-0.13.0 lib/geet/services/close_milestones.rb
geet-0.12.0 lib/geet/services/close_milestones.rb
geet-0.11.0 lib/geet/services/close_milestones.rb
geet-0.10.0 lib/geet/services/close_milestones.rb
geet-0.9.0 lib/geet/services/close_milestones.rb
geet-0.8.0 lib/geet/services/close_milestones.rb
geet-0.7.0 lib/geet/services/close_milestones.rb
geet-0.6.0 lib/geet/services/close_milestones.rb
geet-0.5.0 lib/geet/services/close_milestones.rb
geet-0.4.4 lib/geet/services/close_milestones.rb
geet-0.4.3 lib/geet/services/close_milestones.rb
geet-0.4.2 lib/geet/services/close_milestones.rb