Sha256: 02a1df750fd520952751d911bc5312b31cb54f700e7248a69c0ba25b320451ca

Contents?: true

Size: 1.23 KB

Versions: 10

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true

require_relative 'date_calculator'
require_relative 'version_calculator'

class ReleaseCalculator
  def initialize(current_version:, release_date:)
    @current_version = current_version
    @release_date = release_date
    @release_dates = {}
  end

  def execute
    @release_dates[current_version] = release_date.strftime('%Y-%m-%d')
    next_version = ReleaseVersion.new(current_version.next_minor)

    period(release_date, release_date + 1.year).each do |candidate_date|
      @release_dates[next_version] = calculate_release_date(next_version, candidate_date)
      next_version = calculate_release_version(next_version, candidate_date)
    end

    @release_dates
  end

  private

  attr_reader :current_version, :release_date, :release_dates

  def period(start_date, end_date)
    (start_date..end_date)
      .select { |date| date.day == 1 }
      .flatten
  end

  def calculate_release_date(next_version, candidate_date)
    DateCalculator.new(
      next_version: next_version,
      candidate_date: candidate_date
    ).execute
  end

  def calculate_release_version(next_version, candidate_date)
    VersionCalculator.new(
      version: next_version,
      candidate_date: candidate_date
    ).execute
  end
end

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
gitlab-releases-0.2.7 lib/gitlab_releases/release_calculator.rb
gitlab-releases-0.2.6 lib/gitlab_releases/release_calculator.rb
gitlab-releases-0.2.5 lib/gitlab_releases/release_calculator.rb
gitlab-releases-0.2.4 lib/gitlab_releases/release_calculator.rb
gitlab-releases-0.2.3 lib/gitlab_releases/release_calculator.rb
gitlab-releases-0.2.2 lib/gitlab_releases/release_calculator.rb
gitlab-releases-0.2.1 lib/gitlab_releases/release_calculator.rb
gitlab-releases-0.2.0 lib/gitlab_releases/release_calculator.rb
releases-0.1.3 lib/releases/release_calculator.rb
releases-0.1.1 lib/releases/release_calculator.rb