Sha256: e95370d0796561c617fd3e812632259adf8b23e8d04e62c3f4b242076eb51211

Contents?: true

Size: 1.33 KB

Versions: 3

Compression:

Stored size: 1.33 KB

Contents

module Danger
  module Changelog
    # A CHANGELOG.md file reader.
    class ChangelogFile
      attr_reader :filename, :bad_lines, :exists

      def initialize(filename = 'CHANGELOG.md')
        @filename = filename
        @exists = File.exist?(filename)
        parse if @exists
      end

      # Any bad_lines?
      def bad_lines?
        !!bad_lines && bad_lines.any?
      end

      def exists?
        !!@exists
      end

      def your_contribution_here?
        !!@your_contribution_here
      end

      def bad?
        bad_lines? || !(your_contribution_here? || !Danger::Changelog.config.placeholder_line?)
      end

      def good?
        !bad?
      end

      private

      # Parse CHANGELOG file.
      def parse
        @your_contribution_here = false
        @bad_lines = []
        File.open(filename).each_line do |line|
          next if line.strip.empty?

          changelog_line = ChangelogLineParser.parse(line)

          # puts "#{line.strip}: #{changelog_line.invalid?} (#{changelog_line})"

          if changelog_line.nil? || changelog_line.invalid?
            @bad_lines << line
            next
          end

          # notice your contribution here
          if changelog_line.is_a?(ChangelogPlaceholderLine)
            @your_contribution_here = true
            next
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
danger-changelog-0.4.2 lib/changelog/changelog_file.rb
danger-changelog-0.4.1 lib/changelog/changelog_file.rb
danger-changelog-0.4.0 lib/changelog/changelog_file.rb