Module: Drakkon::Manifest

Defined in:
lib/drakkon/lib/manifest.rb

Overview

Helper to Generate Manifest

Class Method Summary collapse

Class Method Details

.digestObject



41
42
43
# File 'lib/drakkon/lib/manifest.rb', line 41

def self.digest
  Digest::MD5.hexdigest(list.map { |x| Digest::MD5.file(x).hexdigest }.join)
end

.listObject



45
46
47
48
49
# File 'lib/drakkon/lib/manifest.rb', line 45

def self.list
  @list ||= []

  @list
end

.requiredObject

Generate Require Statements Sure there gonna be plenty of opinions on this bad boi



63
64
65
66
67
68
69
# File 'lib/drakkon/lib/manifest.rb', line 63

def self.required
  <<~TEMPLATE
    #{Manifest.list.reverse.inspect}.each do |file|
      require file
    end
  TEMPLATE
end

.root_directoryObject



11
12
13
# File 'lib/drakkon/lib/manifest.rb', line 11

def self.root_directory
  "#{Dir.pwd}/"
end

.run!(force: false) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/drakkon/lib/manifest.rb', line 15

def self.run!(force: false)
  list
  search("#{Dir.pwd}/app")

  # No Dupes please
  list.reject! { |x| x.include? 'app/drakkon/manifest.rb' }

  list.map! do |file|
    file.gsub(root_directory, '')
  end

  if Settings.config[:manifest_digest] == digest
    LogBot.info('Manifest', 'Nothing New')
    return unless force
  end

  Settings.update(:manifest_digest, digest)

  LogBot.info('Manifest', 'Saved!')

  # Make Directory `app/drakkon` if it doesn't exist
  FileUtils.mkdir_p('app/drakkon') unless File.directory?('app/drakkon')

  File.write('app/drakkon/manifest.rb', required)
end

.search(dir) ⇒ Object



51
52
53
54
55
56
57
58
59
# File 'lib/drakkon/lib/manifest.rb', line 51

def self.search(dir)
  @list.concat Dir["#{dir}/*.rb"]

  Dir["#{dir}/*"].each do |file|
    next unless File.directory?(file)

    Manifest.search(file)
  end
end