diff options
| author | Gregor Kleen <gkleen@yggdrasil.li> | 2016-03-01 11:17:05 +0100 |
|---|---|---|
| committer | Gregor Kleen <gkleen@yggdrasil.li> | 2016-03-01 11:17:05 +0100 |
| commit | fdebcd98c7246c1abb84269163f47115fb84d5a5 (patch) | |
| tree | 8b85c72210e50a149653cd54c34b71baf41a2d0f /tprint | |
| parent | 368df582c97597e51ecd0bc8a8b51c41cc233778 (diff) | |
| download | thermoprint-fdebcd98c7246c1abb84269163f47115fb84d5a5.tar thermoprint-fdebcd98c7246c1abb84269163f47115fb84d5a5.tar.gz thermoprint-fdebcd98c7246c1abb84269163f47115fb84d5a5.tar.bz2 thermoprint-fdebcd98c7246c1abb84269163f47115fb84d5a5.tar.xz thermoprint-fdebcd98c7246c1abb84269163f47115fb84d5a5.zip | |
draftReplace & cleanup
Diffstat (limited to 'tprint')
| -rw-r--r-- | tprint/src/Main.hs | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/tprint/src/Main.hs b/tprint/src/Main.hs index 71bbb2f..fa5cd26 100644 --- a/tprint/src/Main.hs +++ b/tprint/src/Main.hs | |||
| @@ -51,6 +51,14 @@ withInput :: Input -> (Handle -> IO a) -> IO a | |||
| 51 | withInput (_, Stdin) = ($ stdin) | 51 | withInput (_, Stdin) = ($ stdin) |
| 52 | withInput (_, ReadFile f) = withFile f ReadMode | 52 | withInput (_, ReadFile f) = withFile f ReadMode |
| 53 | 53 | ||
| 54 | withPrintout :: Input -> (Printout -> IO a) -> IO a | ||
| 55 | withPrintout input a = withInput input $ \inH -> do | ||
| 56 | let | ||
| 57 | p' | ||
| 58 | | (BBCode, _) <- input = either throwM return . bbcode =<< T.hGetContents inH | ||
| 59 | | otherwise = either (throwM . userError) return . eitherDecode' =<< LCBS.hGetContents inH | ||
| 60 | a =<< (force <$> p') | ||
| 61 | |||
| 54 | humanJobStatus :: JobStatus -> Maybe PrinterId -> String | 62 | humanJobStatus :: JobStatus -> Maybe PrinterId -> String |
| 55 | humanJobStatus (Queued (PrinterId n)) Nothing = "queued at printer #" ++ show n | 63 | humanJobStatus (Queued (PrinterId n)) Nothing = "queued at printer #" ++ show n |
| 56 | humanJobStatus (Queued _) _ = "queued" | 64 | humanJobStatus (Queued _) _ = "queued" |
| @@ -104,26 +112,20 @@ tprint TPrint{ operation = Job{..}, ..} Client{..} out = job jobId >>= format | |||
| 104 | | otherwise <- output = T.hPutStrLn out =<< either throwM return (cobbcode p) | 112 | | otherwise <- output = T.hPutStrLn out =<< either throwM return (cobbcode p) |
| 105 | 113 | ||
| 106 | -- Mutate | 114 | -- Mutate |
| 107 | tprint TPrint{ operation = JobCreate{..}, ..} client@Client{..} out = withInput input $ \inH -> do | 115 | tprint TPrint{ operation = JobCreate{..}, ..} client@Client{..} out = withPrintout input $ \p -> do |
| 108 | let | 116 | let |
| 109 | p' | ||
| 110 | | (BBCode, _) <- input = either throwM return . bbcode =<< T.hGetContents inH | ||
| 111 | | otherwise = either (throwM . userError) return . eitherDecode' =<< LCBS.hGetContents inH | ||
| 112 | block' | 117 | block' |
| 113 | | block = blockLoop client out | 118 | | block = blockLoop client out |
| 114 | | otherwise = hPutStrLn out . show | 119 | | otherwise = hPutStrLn out . show |
| 115 | p <- force <$> p' | ||
| 116 | unless dryRun $ block' =<< jobCreate printer p | 120 | unless dryRun $ block' =<< jobCreate printer p |
| 117 | 121 | ||
| 118 | tprint TPrint{ operation = JobDelete{..}, ..} Client{..} _ = unless dryRun $ jobDelete jobId | 122 | tprint TPrint{ operation = JobDelete{..}, ..} Client{..} _ = unless dryRun $ jobDelete jobId |
| 119 | 123 | ||
| 120 | tprint TPrint{ operation = DraftCreate{..}, ..} Client{..} out = withInput input $ \inH -> do | 124 | tprint TPrint{ operation = DraftCreate{..}, ..} Client{..} out = withPrintout input $ \p -> do |
| 121 | let | ||
| 122 | p' | ||
| 123 | | (BBCode, _) <- input = either throwM return . bbcode =<< T.hGetContents inH | ||
| 124 | | otherwise = either (throwM . userError) return . eitherDecode' =<< LCBS.hGetContents inH | ||
| 125 | p <- force <$> p' | ||
| 126 | unless dryRun $ hPutStrLn out . show =<< draftCreate draftTitle p | 125 | unless dryRun $ hPutStrLn out . show =<< draftCreate draftTitle p |
| 127 | 126 | ||
| 127 | tprint TPrint{ operation = DraftReplace{..}, ..} Client{..} _ = withPrintout input $ \p -> do | ||
| 128 | unless dryRun $ draftReplace draftId draftTitle p | ||
| 129 | |||
| 128 | 130 | ||
| 129 | tprint _ _ _ = undefined | 131 | tprint _ _ _ = undefined |
