Sha256: bac31ed0185d805906c359b4f75f34d41e6479609ddd4d503d59144358ad01d2

Contents?: true

Size: 1.73 KB

Versions: 20

Compression:

Stored size: 1.73 KB

Contents

# This file is distributed under New Relic's license terms.
# See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
# frozen_string_literal: true

module VersionBump
  MAJOR = 0
  MINOR = 1
  TINY = 2
  VERSION = {major: MAJOR, minor: MINOR, tiny: TINY}

  # Updates version.rb with new version number
  def self.update_version
    bump_type = determine_bump_type
    file = read_file('lib/new_relic/version.rb')
    new_version = {}

    VERSION.each do |key, current|
      file.gsub!(/(#{key.to_s.upcase} = )(\d+)/) do
        match = Regexp.last_match

        new_version[key] = if bump_type == current # bump type, increase by 1
          match[2].to_i + 1
        elsif bump_type < current # right of bump type, goes to 0
          0
        else # left of bump type, stays the same
          match[2].to_i
        end

        match[1] + new_version[key].to_s
      end
    end

    write_file('lib/new_relic/version.rb', file)
    new_version.values.join('.')
  end

  def self.read_file(path)
    File.read(File.expand_path(path))
  end

  def self.write_file(path, file)
    File.write(File.expand_path(path), file)
  end

  # Determined version based on if changelog has a feature or not for version
  def self.determine_bump_type
    file = read_file('CHANGELOG.md')
    lines = file.split('## ')[1].split('- **')
    return MAJOR if lines.first.include?('Major version')
    return MINOR if lines.any? { |line| line.include?('Feature:') }

    TINY
  end

  # Replace dev with version number in changelog
  def self.update_changelog(version)
    file = read_file('CHANGELOG.md')
    file.gsub!('## dev', "## v#{version}")
    file.gsub!('Version <dev>', "Version #{version}")
    write_file('CHANGELOG.md', file)
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
newrelic_rpm-9.17.0 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.16.1 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.16.0 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.15.0 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.14.0 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.13.0 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.12.0 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.11.0 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.10.2 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.10.1 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.10.0 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.9.0 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.8.0 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.7.1 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.7.0 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.6.0 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.5.0 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.4.2 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.4.1 lib/tasks/helpers/version_bump.rb
newrelic_rpm-9.4.0 lib/tasks/helpers/version_bump.rb