{-# LANGUAGE OverloadedStrings #-}
module Main where
import Data.Text.IO (putStrLn)
import Data.Text ( pack)
import Prelude hiding (putStrLn)
import Turtle
import System.Environment (getArgs)
import Data.Maybe
main :: IO ()
main = do
icons <- getArgs
sh $ liftIO . putStrLn . formatBlock icons =<< getIp
formatBlock :: [String] -> Text -> Text
formatBlock icons ip =
let icon = fromMaybe "" $ getIcon icons
in icon <> ip
getIp :: Shell Text
getIp = strict $
inshell "dig +short myip.opendns.com @resolver1.opendns.com" empty
getIcon :: [String] -> Maybe Text
getIcon icons = case icons of
icon : _ -> Just $ pack icon
_ -> Nothing