Class: Semverve::VersionReferences

Inherits:
Object
  • Object
show all
Defined in:
lib/semverve/version_references.rb

Overview

Finds and updates version references in configured project files.

Defined Under Namespace

Classes: Finding, FixResult

Constant Summary collapse

IGNORE_MARKER =

Marker that suppresses version-reference findings.

Returns:

  • (String)
"semverve:ignore-version-reference"
VERSION_PATTERN =

Version strings supported by Semverve.

Returns:

  • (Regexp)
/(?<![\d.])\d+\.\d+\.\d+(?!\.\d|\d)/
TEXT_EXTENSIONS =

Text file extensions scanned as full content.

Returns:

  • (Array<String>)
%w[.adoc .markdown .md .rdoc .txt].freeze

Instance Method Summary collapse

Constructor Details

#initialize(configuration, current_version, include_ignored: false) ⇒ Semverve::VersionReferences

Initializes version-reference scanning.

Parameters:



110
111
112
113
114
# File 'lib/semverve/version_references.rb', line 110

def initialize(configuration, current_version, include_ignored: false)
  @configuration = configuration
  @current_version = current_version
  @include_ignored = include_ignored
end

Instance Method Details

#findingsArray<Semverve::VersionReferences::Finding>

Version-reference findings in configured files.



120
121
122
# File 'lib/semverve/version_references.rb', line 120

def findings
  files.flat_map { |path| findings_for_file(path) }
end

#fixSemverve::VersionReferences::FixResult

Replaces found version references with the current version.



128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# File 'lib/semverve/version_references.rb', line 128

def fix
  changed_files = []
  replacement_count = 0

  files.each do |path|
    content = File.read(path)
    fixed, count = fixed_content(path, content)

    next if count.zero?

    File.write(path, fixed)
    changed_files << relative_path(path)
    replacement_count += count
  end

  FixResult.new(changed_files: changed_files, replacement_count: replacement_count)
end