Class: RosettAi::Thor::Tasks::Design

Inherits:
Thor
  • Object
show all
Defined in:
lib/rosett_ai/thor/tasks/design.rb

Overview

Thor tasks for design document management

Instance Method Summary collapse

Instance Method Details

#listObject



90
91
92
93
94
95
96
97
98
# File 'lib/rosett_ai/thor/tasks/design.rb', line 90

def list
  files = design_files
  if files.empty?
    puts Rainbow(t('no_documents_found')).yellow
    return
  end

  print_design_list(files)
end

#show(name) ⇒ Object

Raises:

  • (::Thor::Error)


56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/rosett_ai/thor/tasks/design.rb', line 56

def show(name)
  name = RosettAi::TextSanitizer.normalize_nfc(name)
  file_path = find_design_file(name)
  raise ::Thor::Error, Rainbow(t('not_found', name: name)).red unless file_path

  data = RosettAi::YamlLoader.load_file(file_path)
  raise ::Thor::Error, Rainbow(t('empty_file', path: file_path)).red if data.nil?

  sanitized = RosettAi::TextSanitizer.sanitize_for_display(data)

  print_design_header(sanitized)
  print_section(t('intent'), sanitized['intent'])
  print_numbered_section(t('constraints'), sanitized['constraints'])
  print_numbered_section(t('acceptance_criteria'), sanitized['acceptance_criteria'])
  print_dependencies(sanitized['depends_on'])

  return unless options[:full]

  print_examples(sanitized['examples'])
  print_numbered_section(t('anti_patterns'), sanitized['anti_patterns'])
  print_preferences(sanitized['preferences'])
end

#validate(name = nil) ⇒ Object

Raises:

  • (::Thor::Error)


29
30
31
32
33
34
35
36
# File 'lib/rosett_ai/thor/tasks/design.rb', line 29

def validate(name = nil)
  name = RosettAi::TextSanitizer.normalize_nfc(name) if name
  files = files_to_validate(name)
  return puts Rainbow(t('no_documents')).yellow if files.empty?

  all_valid = validate_files(files)
  raise ::Thor::Error, t('validation_failed') unless all_valid
end