module CmdLine.Files(getDataBaseFiles, getDataBaseFilesNoDefault) where

import CmdLine.Flag
import General.Glob
import General.Code
import Hoogle.Query.All
import Paths_hoogle(getDataDir)


-- pick "default" if there are not ones specified
-- otherwise use the CmdFlag and any +package query flags
getDataBaseFiles :: [CmdFlag] -> Query -> IO [FilePath]
getDataBaseFiles flags q = do
    xs <- getDataBaseFilesNoDefault flags q
    if null xs
        then liftM (:[]) $ resolve flags "default"
        else return xs


getDataBaseFilesNoDefault :: [CmdFlag] -> Query -> IO [FilePath]
getDataBaseFilesNoDefault flags q = do
    let dataFil = [x | DataFile x <- flags]
        plusPkg = [x | PlusPackage x <- scope q]
    rs <- mapM (resolve flags) plusPkg
    return $ dataFil ++ rs


resolve :: [CmdFlag] -> String -> IO FilePath
resolve flags x = do
    let inc = [x | Include x <- flags]
    dataDir <- getDataDir
    [x] <- globFile (inc++[dataDir]) ["hoo"] x
    return x