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