X-Git-Url: http://git.euphorik.ch/?p=pompage.git;a=blobdiff_plain;f=src%2FPompage.hs;fp=src%2FPompage.hs;h=200da4c56aa899ca36159d7d10a8d3947776ebf0;hp=b986e99953060c9735f54ce4660e121c6c01dd5e;hb=4c7939a757a98c33339c48482ffc1708e9662809;hpb=96bf4ef892a3bf6d493a139c4ea49992f51a1ddf diff --git a/src/Pompage.hs b/src/Pompage.hs index b986e99..200da4c 100644 --- a/src/Pompage.hs +++ b/src/Pompage.hs @@ -1,6 +1,7 @@ import System.IO (readFile, FilePath(..)) -import System.Environment (getArgs) +import System.Environment (getArgs, getProgName) import Data.List +import Text.Printf (printf) import Text.XML.Light type Movies = [Movie] @@ -23,27 +24,41 @@ data Movie = Movie { , url :: String } deriving (Show) -data Args = Args { - xml :: String - , moviesDir :: FilePath -} deriving (Show) +data Arg = XML | MoviesDir deriving (Show, Eq) +type Args = [(Arg, String)] -test = do +main = do args <- getArgs - case readArgs args of - Left mess -> print mess - Right args -> do - paths <- moviePaths $ moviesDir args + progName <- getProgName + case checkArgs $ readArgs args of + Nothing -> printf usage progName + Just args -> do + let dir = case lookup MoviesDir args of + Just d -> d + Nothing -> "." + paths <- moviePaths dir file <- readFile "../xml/test.xml" print $ parseXMLDoc file movieExtenstions = ["avi", "mkv", "rmvb", "ogm", "divx"] - -readArgs :: [String] -> Either String Args -readArgs plop = undefined -{--readArgs (name:value:rest) = case name of - "-x" -> { xml = value } - "-d" -> { moviesDir = value }--} +usage = "Usage : %s -x [-d ]\n" + +checkArgs :: Maybe Args -> Maybe Args +checkArgs Nothing = Nothing +checkArgs (Just args) = if any (\(a, _) -> a == XML) args + then Just args + else Nothing + +readArgs :: [String] -> Maybe Args +readArgs (name:value:rest) + | name == "-x" = (XML, value) <:> readArgs rest + | name == "-d" = (MoviesDir, value) <:> readArgs rest + | otherwise = Nothing + where + _ <:> Nothing = Nothing + arg <:> Just args = Just $ arg : args +readArgs (_:[]) = Nothing +readArgs (_) = Just [] moviePaths :: FilePath -> IO [FilePath] moviePaths dir = undefined