Module: Legion::Extensions::Knowledge::Helpers::Manifest

Defined in:
lib/legion/extensions/knowledge/helpers/manifest.rb

Class Method Summary collapse

Class Method Details

.diff(current:, previous:) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/legion/extensions/knowledge/helpers/manifest.rb', line 29

def diff(current:, previous:)
  current_map  = current.to_h { |e| [e[:path], e[:sha256]] }
  previous_map = previous.to_h { |e| [e[:path], e[:sha256]] }

  added   = current_map.keys - previous_map.keys
  removed = previous_map.keys - current_map.keys
  changed = current_map.keys.select do |p|
    previous_map.key?(p) && previous_map[p] != current_map[p]
  end

  { added: added, changed: changed, removed: removed }
end

.scan(path:, extensions: %w[.md .txt .docx .pdf])) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/legion/extensions/knowledge/helpers/manifest.rb', line 13

def scan(path:, extensions: %w[.md .txt .docx .pdf])
  results = []

  Find.find(path) do |entry|
    basename = ::File.basename(entry)
    Find.prune if basename.start_with?('.')

    next unless ::File.file?(entry)
    next unless extensions.include?(::File.extname(entry).downcase)

    results << build_entry(entry)
  end

  results
end