libjenkins-0.8.2: example/discover.hs
{-# LANGUAGE OverloadedStrings #-}
-- | Discover Jenkins server on the network
module Main (main) where
import Data.Monoid ((<>)) -- base
import Data.Text (Text) -- text
import qualified Data.Text as Text -- text
import qualified Data.Text.IO as Text -- text
import Jenkins.Discover -- libjenkins
import System.Exit (exitFailure) -- base
main :: IO ()
main = do
-- send discover broadcast with 100ms timeout
discoveries <- discover 100000
case discoveries of
-- no Jenkins responded
[] -> exitFailure
-- pretty print responses
_ -> mapM_ (Text.putStrLn . pretty) discoveries
-- | Pretty print Jenkins discovery responses
pretty :: Discover -> Text
pretty x = Text.unwords $
"Jenkins" : version x : maybe [] (return . between "(" ")") (serverId x) ++ ["at", url x]
where
between l r t = l <> t <> r