{-# 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