Class: WritersRoom::Commands::Bible

Inherits:
Thor
  • Object
show all
Defined in:
lib/writers_room/cli/bible.rb

Instance Method Summary collapse

Instance Method Details

#regenerateObject



11
12
13
14
15
16
17
18
19
20
# File 'lib/writers_room/cli/bible.rb', line 11

def regenerate
  project = Dir.pwd
  bible = WritersRoom::StoryBible.new(project)
  bible.regenerate

  say "Story bible regenerated: #{bible.element_count} elements indexed", :green
rescue StandardError => e
  say "Error: #{e.message}", :red
  exit 1
end

#search(term) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/writers_room/cli/bible.rb', line 43

def search(term)
  project = Dir.pwd
  bible = WritersRoom::StoryBible.new(project)
  result = bible.resolve(term)

  if result
    say "Found: #{result['name']} (#{result['type']})", :green
    say "  Path: #{result['path']}", :white
    say "  Aliases: #{result['aliases'].join(', ')}", :white if result["aliases"]&.any?
    say "  Status: #{result['status']}", :white if result["status"]
  else
    say "No match for '#{term}'", :yellow
  end
end

#showObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/writers_room/cli/bible.rb', line 23

def show
  project = Dir.pwd
  bible = WritersRoom::StoryBible.new(project)

  if bible.element_count.zero?
    say "Story bible is empty. Run 'wr bible regenerate' first.", :yellow
    return
  end

  bible.elements_by_type.each do |type, entries|
    say "\n#{type.capitalize}:", :cyan
    entries.each do |entry|
      aliases_str = entry["aliases"]&.any? ? " (aka #{entry['aliases'].join(', ')})" : ""
      status_str = entry["status"] ? " [#{entry['status']}]" : ""
      say "  #{entry['name']}#{aliases_str}#{status_str}", :white
    end
  end
end