packages feed

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