-- Copyright (c) 2010-2016 Brett Lajzer
-- See LICENSE for license information.

-- | Module containing utility functions and common functionality.
module Dib.Util (
  getSubDirectories
  ) where

import Control.Monad
import qualified System.Directory as D

-- | Given a directory, returns the list of subdirectories.
getSubDirectories :: FilePath -> IO [FilePath]
getSubDirectories root = do
  contents <- D.getDirectoryContents root
  let filteredDirs = filter (\x -> x /= "." && x /= "..") contents
  dirs <- filterM (\(x, _) -> D.doesDirectoryExist x) $ zip (map (root ++) filteredDirs) filteredDirs
  return $ map snd dirs