Class: RosettAi::Migration::Detector

Inherits:
Object
  • Object
show all
Defined in:
lib/rosett_ai/migration/detector.rb

Overview

Detects configuration files that need migration to the current schema.

Scans behaviour YAML, design YAML, and rai config files for deprecated patterns or missing required fields. Returns structured findings that CLI commands can display to the user.

See Also:

  • conf/design/backward_compatibilityconf/design/backward_compatibility.yml

Author:

  • hugo

  • claude

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config_dir:) ⇒ Detector

Returns a new instance of Detector.

Parameters:

  • config_dir (Pathname, String)

    configuration root to scan



23
24
25
# File 'lib/rosett_ai/migration/detector.rb', line 23

def initialize(config_dir:)
  @config_dir = Pathname.new(config_dir)
end

Instance Attribute Details

#config_dirPathname (readonly)

Returns configuration directory to scan.

Returns:

  • (Pathname)

    configuration directory to scan



20
21
22
# File 'lib/rosett_ai/migration/detector.rb', line 20

def config_dir
  @config_dir
end

Instance Method Details

#detectArray<Hash{Symbol => String}>

Scan all config files and return migration findings.

Returns:

  • (Array<Hash{Symbol => String}>)

    list of findings with :file, :type, :field, and :message keys



31
32
33
34
35
36
# File 'lib/rosett_ai/migration/detector.rb', line 31

def detect
  findings = []
  findings.concat(scan_behaviour_files)
  findings.concat(scan_design_files)
  findings
end

#migrations_needed?Boolean

Convenience check for whether any migrations are needed.

Returns:

  • (Boolean)


41
42
43
# File 'lib/rosett_ai/migration/detector.rb', line 41

def migrations_needed?
  detect.any?
end