#!/usr/bin/env runghc module Main where import Options.Applicative import Control.Monad.Trans (MonadIO(liftIO)) import Language.Haskell.Modules (cleanImports, runCleanT) import System.Directory (getDirectoryContents) import System.Environment (getArgs) import System.FilePath (takeExtension) main = do args <- getArgs fs <- if null args then sourceFiles "." else return args cs <- runCleanT $ mapM cleanImports' fs print cs cleanImports' fp = do (liftIO $ putStr "cleaning: " >> print fp) >> cleanImports fp sourceFiles :: FilePath -> IO [FilePath] sourceFiles fp = getDirectoryContents fp >>= return . filter ((".hs" ==) . takeExtension)