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.

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, target_version: nil) ⇒ Semverve::VersionReferences

Initializes version-reference scanning.

Parameters:



40
41
42
43
44
45
# File 'lib/semverve/version_references.rb', line 40

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

Instance Method Details

#findingsArray<Semverve::Finding>

Version-reference findings in configured files.

Returns:



51
52
53
# File 'lib/semverve/version_references.rb', line 51

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

#fixSemverve::FixResult

Replaces found version references with the current version.

Returns:



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/semverve/version_references.rb', line 59

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

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