libjenkins-0.1.0.0: examples/Discover.hs
{-# LANGUAGE OverloadedStrings #-}
-- | Discover Jenkins server on the network
module Main where
import Data.Monoid ((<>), mempty) -- base
import Data.Text (Text) -- text
import qualified Data.Text as T -- text
import qualified Data.Text.IO as T -- 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_ (T.putStrLn . pretty) discoveries
-- | Pretty print Jenkins discovery responses
pretty :: Discover -> Text
pretty x = T.unwords $
["Jenkins", version x] ++ maybe mempty (return . between "(" ")") (server_id x) ++ ["at", url x]
where
between l r t = l <> t <> r