----------------------------------------------------------------------------- -- | -- Module : Database.TxtSushi.IOUtil -- Copyright : (c) Keith Sheppard 2009-2010 -- License : BSD3 -- Maintainer : keithshep@gmail.com -- Stability : experimental -- Portability : portable -- -- A couple of util functions for txt-sushi -- ----------------------------------------------------------------------------- module Database.TxtSushi.IOUtil ( bufferStdioToTempFile, getContentsFromFileOrStdin, printSingleFileUsage, versionStr) where import System.Directory import System.Environment import System.IO versionStr :: String versionStr = "0.6.0" -- | buffers standard input to a temp file and returns a path to that file bufferStdioToTempFile :: IO FilePath bufferStdioToTempFile = do stdioText <- getContents tempDir <- getTemporaryDirectory (tempFilePath, tempFileHandle) <- openTempFile tempDir "stdiobuffer.txt" hPutStr tempFileHandle stdioText hClose tempFileHandle return tempFilePath -- | if given "-" this file reads from stdin otherwise it reads from the named -- file getContentsFromFileOrStdin :: String -> IO String getContentsFromFileOrStdin filePath = if filePath == "-" then getContents else readFile filePath -- | print a cookie-cutter usage message for the command line utilities -- that take a single file name or "-" as input printSingleFileUsage :: IO () printSingleFileUsage = do progName <- getProgName putStrLn $ progName ++ " (" ++ versionStr ++ ")" putStrLn $ "Usage: " ++ progName ++ " file_name_or_dash"