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

      OFFLINE = "\e[32moffline\e[0m"
      ONLINE = "\e[31monline\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}"
        message += ": #{reason}" if reason

        message
      end
    end
  end
end