-
Notifications
You must be signed in to change notification settings - Fork 8
/
Output.hs
40 lines (33 loc) · 1.1 KB
/
Output.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
{- |
Module : Main
Description : The haskell-updater executable
License : GPL-2 or later
Fancy output facility.
-}
module Output (
pkgListPrint
, printList
, say
, Verbosity(..)
) where
import System.IO (hPutStrLn, stderr)
import Distribution.Gentoo.Packages
-- output mode (chattiness)
data Verbosity = Normal
| Quiet
deriving (Eq, Ord, Show, Read)
say :: Verbosity -> String -> IO ()
say Normal msg = hPutStrLn stderr msg
say Quiet _msg = return ()
-- Print a bullet list of values with one value per line.
printList :: Verbosity -> (a -> String) -> [a] -> IO ()
printList v f = mapM_ (say v . (++) " * " . f)
-- Print a list of packages, with a description of what they are.
pkgListPrint :: Verbosity -> String -> [Package] -> IO ()
pkgListPrint v desc pkgs
= if null pkgs
then say v $ unwords ["No", desc, "packages found!\n"]
else do say v $ unwords ["Found the following"
, desc, "packages:"]
printList v printPkg pkgs
say v ""