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



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

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



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

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



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

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)


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

def migrations_needed?
  detect.any?
end