multifile-0.1.0.2: src/Main.hs
module Main where
import System.Environment
import System.IO
import Text.XML.HaXml
import Text.XML.HaXml.XmlContent.Haskell
import Extsubset
import Data.Either
import Control.Monad
import System.Directory
import Options.Applicative
import Text.PrettyPrint
create' xs = do
files <- forM xs $ \filePath -> do
content <- readFile filePath
return ( File (File_Attrs filePath) content )
return (render $ htmlprint $ toContents $ Multifile files)
create xs = create' xs >>= putStr
-- data Args = Args {
dir x = getDirectoryContents x >>= create
main :: IO ()
main = do
args <- getArgs
case args of
[] -> do
x <- getContents
let p = (readXml x :: Either String Multifile)
either print processFiles p
x -> z x
where
z ("-create":xs) = create xs
z ("-c":xs) = create xs
z ("-dir":x:[]) = dir x
z _ = putStr "unknown usage"
processFiles (Multifile xs) = mapM_ processFile xs
processFile (File (File_Attrs path) content) = writeFile path content