{-# LANGUAGE DoAndIfThenElse #-} module Main where import System.IO ( Handle, IOMode (WriteMode), openBinaryFile, stdout) import CommandLine (show_help) import Configuration (Cfg(..), get_cfg) import LWN.Page (epublish, page_from_url) -- | If we're given an empty path, return a handle to -- 'stdout'. Otherwise, open the given file and return a read/write -- handle to that. get_output_handle :: FilePath -> IO Handle get_output_handle path = if (null path) then return stdout else openBinaryFile path WriteMode main :: IO () main = do cfg <- get_cfg page <- page_from_url cfg (article cfg) case page of Just p -> do output_handle <- get_output_handle (output cfg) epublish p output_handle Nothing -> do _ <- show_help return ()