Sha256: b48f2e6ed1e71da17d7237c062db2f8476646f9d8b19bcd4c9cd5b102a12d8b9

Contents?: true

Size: 1.03 KB

Versions: 5

Compression:

Stored size: 1.03 KB

Contents

module Semvergen

  class ChangeLogFile

    def initialize(change_log_filename=nil)
      @change_log_filename = change_log_filename || "CHANGELOG.md"
    end

    def <<(message)
      current_change_log = File.exist?(@change_log_filename) ? File.read(@change_log_filename, :encoding => "UTF-8") : ""
      new_change_log     = "# Changelog\n\n#{message}" + current_change_log.gsub("# Changelog\n", "")
      File.open(@change_log_filename, "w") { |f| f.write new_change_log }
    end

    def features(version=nil)
      features_for_version(version || latest_version)
    end

    private

    def latest_version
      lines = File.readlines(@change_log_filename).map { |l| l.chomp }
      Array(lines.slice_before(/^#/))[1][0].gsub("# ", "")
    end

    def features_for_version(version)
      lines = File.readlines(@change_log_filename).map { |l| l.chomp }
      features = lines.slice_before(/^#/).select { |a| a.first == "# #{version}" }.first[1..-1]
      features.select do |feature|
        !feature.empty?
      end.compact
    end

  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
semvergen-1.12.0 lib/semvergen/change_log_file.rb
semvergen-1.11.0 lib/semvergen/change_log_file.rb
semvergen-1.10.0 lib/semvergen/change_log_file.rb
semvergen-1.9.2 lib/semvergen/change_log_file.rb
semvergen-1.9.1 lib/semvergen/change_log_file.rb