Class: Semverve::VersionCodeReferences

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

Overview

Finds and updates safe version literals in configured code files.

Constant Summary collapse

IGNORE_MARKER =

Marker that suppresses version-reference findings.

Returns:

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

Ruby assignments that are safe enough to rewrite automatically.

Returns:

  • (Regexp)
/^\s*(?:(?:[A-Z]\w*::)*(?:[A-Z]\w*VERSION[A-Z0-9_]*|VERSION)|(?:[a-z_]\w*|self)\.version)\s*=\s*(?<quote>["'])(?<version>\d+\.\d+\.\d+)\k<quote>/

Instance Method Summary collapse

Constructor Details

#initialize(configuration, current_version, include_ignored: false, target_version: nil) ⇒ Semverve::VersionCodeReferences

Initializes code version literal scanning.

Parameters:



33
34
35
36
37
38
# File 'lib/semverve/version_code_references.rb', line 33

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>

Code version literal findings in configured files.

Returns:



44
45
46
# File 'lib/semverve/version_code_references.rb', line 44

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

#fixSemverve::FixResult

Replaces found code version literals with the current version.

Returns:



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/semverve/version_code_references.rb', line 52

def fix
  changed_files = []
  replacement_count = 0

  files.each do |path|
    content = File.read(path)
    fixed, count = fixed_content(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