Class: Bonobot::Status

Inherits:
Object
  • Object
show all
Includes:
Configuration
Defined in:
lib/bonobot/status.rb

Constant Summary collapse

STATUS =
{ up_to_date: "🄳", out_of_date: "😱", unused: "šŸ˜…", missing: "🤬" }.freeze

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Configuration

included

Constructor Details

#initialize(status) ⇒ Status

Returns a new instance of Status.



15
16
17
# File 'lib/bonobot/status.rb', line 15

def initialize(status)
  @status = status
end

Class Method Details

.generate(status = nil) ⇒ Object



11
12
13
# File 'lib/bonobot/status.rb', line 11

def self.generate(status = nil)
  new(status).generate
end

Instance Method Details

#display_bannerObject



58
59
60
# File 'lib/bonobot/status.rb', line 58

def display_banner
  [display_intro + display_status.join("\n") + display_outro].join("\n")
end

#display_introObject



62
63
64
# File 'lib/bonobot/status.rb', line 62

def display_intro
  "-----\nšŸ™ˆ šŸ™‰ šŸ™Š Bonobot šŸ™ˆ šŸ™‰ šŸ™Š\n-----\n\nšŸ›  Generating status\n#{File.expand_path(self.class.configuration.status_file)}\n-----\n\n"
end

#display_outroObject



76
77
78
# File 'lib/bonobot/status.rb', line 76

def display_outro
  "\n-----"
end

#display_statusObject



66
67
68
69
70
71
72
73
74
# File 'lib/bonobot/status.rb', line 66

def display_status
  if @status
    generate_status(@status.to_sym, STATUS[@status.to_sym])
  else
    STATUS.map do |status_type, emoji|
      generate_status(status_type, emoji)
    end
  end
end

#generateObject



19
20
21
22
23
# File 'lib/bonobot/status.rb', line 19

def generate
  generate_status_file
  puts display_banner
  return_status_code
end

#generate_status(status, emoji) ⇒ Object



35
36
37
38
39
40
41
42
43
44
# File 'lib/bonobot/status.rb', line 35

def generate_status(status, emoji)
  overload_status = OverloadsRegistry.find_by(status: status)
  status_to_text = status.to_s.capitalize.gsub("_", " ")

  if overload_status.empty?
    ["-> #{emoji} #{status_to_text} : All good! \n"]
  else
    ["-> #{emoji} #{status_to_text} fingerprint (#{overload_status.count}):", present(OverloadsRegistry.find_by(status: status)), ""]
  end
end

#generate_status_fileObject



54
55
56
# File 'lib/bonobot/status.rb', line 54

def generate_status_file
  File.write(self.class.configuration.status_file, status_json)
end

#present(entries) ⇒ Object



25
26
27
28
29
30
31
32
33
# File 'lib/bonobot/status.rb', line 25

def present(entries)
  entries.map do |entry|
    if entry.engine_file.nil?
      "  - #{entry.path} (unused)"
    else
      "  - #{entry.engine_file.engine_name}: #{entry.engine_file.short_path} (#{entry.engine_file.fingerprint})"
    end
  end.join("\n")
end

#return_status_codeObject



80
81
82
# File 'lib/bonobot/status.rb', line 80

def return_status_code
  OverloadsRegistry.find_by(status: :out_of_date).empty? && OverloadsRegistry.find_by(status: :missing).empty?
end

#status_jsonObject



46
47
48
49
50
51
52
# File 'lib/bonobot/status.rb', line 46

def status_json
  JSON.pretty_generate({
                         rails_files: LocalFilesRegistry.output,
                         engines_files: EnginesFilesRegistry.output,
                         overloads: OverloadsRegistry.output
                       })
end