-readArgs :: [String] -> Either String Args
-readArgs plop = undefined
-{--readArgs (name:value:rest) = case name of
- "-x" -> { xml = value }
- "-d" -> { moviesDir = value }--}
+main = do
+ args <- getArgs
+ progName <- getProgName
+ case checkArgs $ readArgs args of
+ Nothing -> printf (usage ++ "\n") progName
+ Just args -> do
+ let Just dir = lookup MovieDir args
+ let Just xmlFile = lookup XML args
+ paths <- moviePaths dir
+ movies <- catch (readXMLFile xmlFile) (\e -> return [])
+ print movies
+ putStrLn ""
+ searchTest "pouet"
+ --print paths
+
+checkArgs :: Maybe Args -> Maybe Args
+checkArgs Nothing = Nothing
+checkArgs (Just args) =
+ case (lookup XML args, lookup MovieDir args) of
+ (Just _, Just _) -> Just args
+ otherwise -> Nothing
+
+readArgs :: [String] -> Maybe Args
+readArgs (name:value:rest)
+ | name == "-x" = (XML, value) <:> readArgs rest
+ | name == "-d" = (MovieDir, value) <:> readArgs rest
+ | otherwise = Nothing
+ where
+ _ <:> Nothing = Nothing
+ arg <:> Just args = Just $ arg : args
+readArgs (_:[]) = Nothing
+readArgs (_) = Just []