summaryrefslogtreecommitdiff
path: root/lib/gitlab/downtime_check/message.rb
blob: 5debb754943cc1192f740177f06db0f10a881fc2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
40
41
# frozen_string_literal: true

module Gitlab
  class DowntimeCheck
    class Message
      attr_reader :path, :offline

      OFFLINE = "\e[31moffline\e[0m"
      ONLINE = "\e[32monline\e[0m"

      # path - The file path of the migration.
      # offline - When set to `true` the migration will require downtime.
      # reason - The reason as to why the migration requires downtime.
      def initialize(path, offline = false, reason = nil)
        @path = path
        @offline = offline
        @reason = reason
      end

      def to_s
        label = offline ? OFFLINE : ONLINE

        message = ["[#{label}]: #{path}"]

        if reason?
          message << ":\n\n#{reason}\n\n"
        end

        message.join
      end

      def reason?
        @reason.present?
      end

      def reason
        @reason.strip.lines.map(&:strip).join("\n")
      end
    end
  end
end