BigW Consortium Gitlab

message.rb 862 Bytes
Newer Older
1 2 3
module Gitlab
  class DowntimeCheck
    class Message
4
      attr_reader :path, :offline
5

6 7
      OFFLINE = "\e[31moffline\e[0m".freeze
      ONLINE = "\e[32monline\e[0m".freeze
8 9 10 11 12 13 14 15 16 17 18 19 20 21

      # 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}"
22 23 24 25

        if reason?
          message += ":\n\n#{reason}\n\n"
        end
26 27 28

        message
      end
29 30 31 32 33 34 35 36

      def reason?
        @reason.present?
      end

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