packages feed

i3blocks-hs-contrib-2.0.0: Docker/Main.hs

{-# LANGUAGE OverloadedStrings #-}

module Main where

import           Common
import           Data.Text (pack)
import           Turtle
import           System.Environment (getArgs)
import           Data.Maybe
import           Data.Text.IO (putStrLn)
import           Prelude      hiding (putStrLn)

main :: IO ()
main = sh $ do
  icons <- liftIO getArgs
  isRunning <- processIsRunning "dockerd"
  if isRunning
  then formatCommand icons (pack . show <$> nImages)
  else formatCommand icons (return "x")

getIcon :: [String] -> Maybe Text
getIcon icons = case icons of
  icon : _ -> Just $ pack icon
  _        -> Nothing

formatCommand :: [String] -> Shell Text -> Shell ()
formatCommand icons out = do
  out' <- out
  let icon = fromMaybe "Docker " $ getIcon icons
  liftIO $ putStrLn $ icon <> out'

nImages :: Shell Integer
nImages = fold (inshell (pack "docker ps -q") empty) countLines