txt-sushi-0.1: csvtopretty.hs
import Data.List
import System.Directory
import System.Environment
import System.Exit
import System.IO
import TxtSushi.IO
import Util.IOUtil
main = do
args <- getArgs
if (length args) /= 1
then do
hPutStrLn stderr $
"ERROR: program requires a single command line argument " ++
"(filename or '-')"
exitFailure
else do
let fileArg = head args
useStdio = (fileArg == "-")
file <- if useStdio then bufferStdioToTempFile else return fileArg
handle1 <- openFile file ReadMode
contents1 <- hGetContents handle1
handle2 <- openFile file ReadMode
contents2 <- hGetContents handle2
let table1 = parseTable csvFormat contents1
columnWidths = maxTableColumnWidths table1
table2 = parseTable csvFormat contents2
prettyTableText = formatTableWithWidths "|" columnWidths table2
putStr prettyTableText
hClose handle1
hClose handle2
if useStdio then removeFile file else return ()