-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Please see the README on GitHub at -- https://github.com/githubuser/slack-progressbar#readme @package slack-progressbar @version 0.1.0.0 -- | This is a simple library for creating and updating Slack messages that -- contain progressbars. It can be used to display the progress of a -- long-running task in a Slack channel, for example as part of CI -- tooling. -- --
-- main :: IO ()
-- main = do
-- let mySlackConfig = SlackConfig { slackApiToken = "my-slack-api-token" }
--
-- let progressBarInfo = def { progressBarInfoTopMessage = Just "Top message"
-- , progressBarInfoSize = Just 0 }
--
-- result <- runExceptT $ do
-- progressBar <- ExceptT $ createProgressBar mySlackConfig "test-channel" progressBarInfo
--
-- forM_ [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] $ \size -> do
-- threadDelay 1000000
-- ExceptT $ updateProgressBar mySlackConfig progressBar (progressBarInfo { progressBarInfoSize = Just size })
--
-- putStrLn [i|Result: '#{result}'|]
--
module Web.Slack.ProgressBar
-- | Create a progress bar message on the given channel. Returns a
-- ProgressBar which can be used to update the message by calling
-- updateProgressBar.
createProgressBar :: SlackConfig -> ChannelName -> ProgressBarInfo -> IO (Either Text ProgressBar)
-- | Update an existing progress bar.
updateProgressBar :: SlackConfig -> ProgressBar -> ProgressBarInfo -> IO (Either Text ())
-- | The state of a progress bar message.
data ProgressBarInfo
ProgressBarInfo :: Maybe Text -> Maybe Text -> Maybe Double -> Maybe [ProgressBarAttachment] -> ProgressBarInfo
-- | Message to show above the progress bar
[progressBarInfoTopMessage] :: ProgressBarInfo -> Maybe Text
-- | Message to show below the progress bar
[progressBarInfoBottomMessage] :: ProgressBarInfo -> Maybe Text
-- | Size of the progress bar, a Double from 0 to 100
[progressBarInfoSize] :: ProgressBarInfo -> Maybe Double
-- | Slack attachments for the message
[progressBarInfoAttachments] :: ProgressBarInfo -> Maybe [ProgressBarAttachment]
-- | A Slack attachment.
data ProgressBarAttachment
ProgressBarAttachment :: Text -> Text -> ProgressBarAttachment
-- | Attachment text
[progressBarAttachmentText] :: ProgressBarAttachment -> Text
-- | Attachment color
[progressBarAttachmentColor] :: ProgressBarAttachment -> Text
-- | An opaque type representing an existing Slack message.
data ProgressBar
type ChannelName = Text
-- | Configuration options needed to connect to the Slack API
newtype SlackConfig
SlackConfig :: String -> SlackConfig
-- | Slack API token
[slackApiToken] :: SlackConfig -> String
instance GHC.Show.Show Web.Slack.ProgressBar.SlackConfig
instance Data.Aeson.Types.ToJSON.ToJSON Web.Slack.ProgressBar.ProgressBarAttachment