aboutsummaryrefslogtreecommitdiff
path: root/tprint/src/Main.hs
diff options
context:
space:
mode:
Diffstat (limited to 'tprint/src/Main.hs')
-rw-r--r--tprint/src/Main.hs27
1 files changed, 23 insertions, 4 deletions
diff --git a/tprint/src/Main.hs b/tprint/src/Main.hs
index cd6e68b..a937181 100644
--- a/tprint/src/Main.hs
+++ b/tprint/src/Main.hs
@@ -1,4 +1,5 @@
1{-# LANGUAGE RecordWildCards #-} 1{-# LANGUAGE RecordWildCards #-}
2{-# LANGUAGE ViewPatterns #-}
2 3
3import Data.Map (Map) 4import Data.Map (Map)
4import qualified Data.Map as Map 5import qualified Data.Map as Map
@@ -6,10 +7,15 @@ import Data.Sequence (Seq)
6import qualified Data.Sequence as Seq 7import qualified Data.Sequence as Seq
7import Data.Text (Text) 8import Data.Text (Text)
8import qualified Data.Text as T 9import qualified Data.Text as T
10import qualified Data.ByteString.Lazy.Char8 as Lazy (ByteString)
11import qualified Data.ByteString.Lazy.Char8 as LCBS
12
13import Control.Monad
9 14
10import Control.Monad 15import Control.Monad
11 16
12import Text.Show.Pretty (dumpStr) 17import Text.Show.Pretty (dumpStr)
18import Data.Aeson.Encode.Pretty (encodePretty)
13 19
14import System.IO 20import System.IO
15 21
@@ -19,9 +25,22 @@ import Options
19import Debug.Trace 25import Debug.Trace
20 26
21main :: IO () 27main :: IO ()
22main = withArgs (tprint <=< dumpOpts) 28main = withArgs (main' <=< dumpOpts)
23 where 29 where
24 dumpOpts c@(TPrint{..}) = c <$ when (dumpOptions) (hPutStrLn stderr $ dumpStr c) 30 dumpOpts c@(TPrint{..}) = c <$ when (dumpOptions) (hPutStrLn stderr $ dumpStr c)
25 31 main' config@(TPrint{..}) = withOutput config $ tprint config (mkClient' baseUrl)
26tprint :: TPrint -> IO () 32
27tprint = undefined 33withOutput :: TPrint -> (Handle -> IO a) -> IO a
34withOutput TPrint{..} a
35 | (_, WriteFile f) <- output = withFile f WriteMode a
36 | otherwise = a stdout
37
38tprint :: TPrint -> Client IO -> Handle -> IO ()
39tprint TPrint{ operation = Printers, ..} Client{..} out = printers >>= format
40 where format ps
41 | (Human, _) <- output = mapM_ (\(PrinterId n, st) -> hPutStrLn out $ show n ++ "\t" ++ humanStatus st) $ Map.toAscList ps
42 | (JSON , _) <- output = LCBS.hPutStrLn out $ encodePretty ps
43 | otherwise = hPutStrLn out . dumpStr $ Map.toAscList ps
44 humanStatus (Busy (JobId n)) = "busy printing job #" ++ show n
45 humanStatus (Available) = "available"
46tprint _ _ _ = undefined