import Data.Maybe (mapMaybe)
import System.Environment (getArgs)
import System.FilePath ((</>), takeFileName)
import Convert.Common (Image)
import Convert.Gruff (gruff)
import Convert.Gruff1 (gruff1)
import Convert.Gruff2a(gruff2a)
import Convert.Gruff2 (gruff2)
parsers :: [String -> Maybe Image]
parsers = [gruff2, gruff2a, gruff1, gruff]
main :: IO ()
main = do
args <- getArgs
case args of
odir:files@(_:_) -> mapM_ (main1 odir) files
_ -> putStrLn "usage: gruff-convert outdir/ *.oldformat.gruff"
main1 :: FilePath -> FilePath -> IO ()
main1 odir file = do
old <- readFile file
case mapMaybe ($ old) parsers of
[] -> putStrLn $ "Error: `" ++ file ++ "' unrecognised"
[new] -> writeFile (odir </> takeFileName file) (show new)
_ -> putStrLn $ "Error: `" ++ file ++ "' ambiguous"