packages feed

fquery-0.2.1: Adelie/QHasUse.hs

-- QHasUse.hs
--
-- Module to list all installed packages with a particular use flag.

module Adelie.QHasUse (qHasUse) where

import Monad (when)

import Adelie.Colour
import Adelie.Portage
import Adelie.Pretty
import Adelie.Use

----------------------------------------------------------------

qHasUse :: [String] -> IO ()
qHasUse [] = return ()
qHasUse args = qHasUse' args =<< allInstalledPackages 

qHasUse' :: [String] -> [(String, String)] -> IO ()
qHasUse' uses catnames = mapM_ (hasUse catnames) uses

hasUse :: [(String, String)] -> String -> IO ()
hasUse catnames use = do
  putStr "Packages installed with " >> putUse use >> putStrLn " USE flag"
  mapM_ (flip hasUse' use) catnames
  putChar '\n'

hasUse' :: (String, String) -> String -> IO ()
hasUse' catname use = do
  iUse <- readIUse fnIUse
  when (use `elem` iUse) (putCatNameLn catname)
  where fnIUse = iUseFromCatName catname

----------------------------------------------------------------

putUse :: String -> IO ()
putUse u = blue >> putStr u >> off