{-# LANGUAGE OverloadedStrings #-}
module Main where
import Data.Monoid
import Data.Text.IO (putStrLn)
import Prelude hiding (putStrLn)
import Turtle
import qualified Data.Text as Text
import Data.Maybe
import System.Environment (getArgs)
main :: IO ()
main = do
args <- getArgs
sh $ liftIO . putStrLn . formatBlock args =<< getSSID
formatBlock :: [String] -> Text -> Text
formatBlock args ssid
= if Text.null ssid
then fromMaybe "No WiFi" $ getNoWifiIcon args
else fromMaybe "" (getWifiIcon args) <> ssid
getNoWifiIcon :: [String] -> Maybe Text
getNoWifiIcon icons = case icons of
noWifiIcon : _ -> Just $ Text.pack noWifiIcon
_ -> Nothing
getWifiIcon :: [String] -> Maybe Text
getWifiIcon icons = case icons of
_ : wifiIcon : _ -> Just $ Text.pack wifiIcon
_ -> Nothing
getSSID :: Shell Text
getSSID = do
(exitCode, out) <- shellStrict "iwgetid -r" empty
if exitCode == ExitFailure 255 then pure mempty else pure out