+-- | Convenience functions for reporting (display and/or logging)
+-- status messages.
+--
+module Report (
+ report_debug,
+ report_error,
+ report_info,
+ report_warning )
+where
+
+import Logging (
+ log_debug,
+ log_error,
+ log_info,
+ log_warning )
+import Terminal (
+ display_debug,
+ display_error,
+ display_info,
+ display_warning )
+
+
+-- | Display and log debug information. WARNING! This does not
+-- automatically append a newline. The output is displayed/logged
+-- as-is, for, you know, debug purposes.
+report_debug :: String -> IO ()
+report_debug s = do
+ display_debug s
+ log_debug s
+
+
+-- | Display and log an error condition. This will prefix the error
+-- with "ERROR: " when displaying (but not logging) it so that it
+-- stands out.
+--
+report_error :: String -> IO ()
+report_error s = do
+ display_error $ "ERROR: " ++ s
+ log_error s
+
+
+-- | Display and log an informational (status) message.
+--
+report_info :: String -> IO ()
+report_info s = do
+ display_info s
+ log_info s
+
+
+-- | Display and log a warning. This will prefix the warning with
+-- "WARNING: " when displaying (but not logging) it so that it
+-- stands out.
+--
+report_warning :: String -> IO ()
+report_warning s = do
+ display_warning $ "WARNING: " ++ s
+ log_warning s