Class: Ace::Retro::Molecules::RetroFrontmatterValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/ace/retro/molecules/retro_frontmatter_validator.rb

Overview

Validates retro spec file frontmatter for correctness and completeness. Returns an array of issue hashes with :type, :message, and :location keys.

Class Method Summary collapse

Class Method Details

.validate(file_path, special_folder: nil) ⇒ Array<Hash>

Validate a single retro spec file

Parameters:

  • file_path (String)

    Path to the .retro.md file

  • special_folder (String, nil) (defaults to: nil)

    Special folder the retro is in

Returns:

  • (Array<Hash>)

    List of issues found



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/ace/retro/molecules/retro_frontmatter_validator.rb', line 18

def self.validate(file_path, special_folder: nil)
  issues = []

  unless File.exist?(file_path)
    issues << {type: :error, message: "File does not exist", location: file_path}
    return issues
  end

  content = File.read(file_path)

  validate_delimiters(content, file_path, issues)
  return issues if issues.any? { |i| i[:type] == :error }

  frontmatter = parse_frontmatter(content, file_path, issues)
  return issues unless frontmatter

  validate_required_fields(frontmatter, file_path, issues)
  validate_field_values(frontmatter, file_path, issues)
  validate_recommended_fields(frontmatter, file_path, issues)
  validate_scope_consistency(frontmatter, special_folder, file_path, issues)

  issues
end