module Unused.TermSearch
    ( SearchResults(..)
    , fromResults
    , search
    ) where

import System.Process
import Data.Maybe (mapMaybe)
import Unused.TermSearch.Types
import Unused.TermSearch.Internal

search :: String -> IO SearchResults
search t = do
    results <- lines <$> ag t
    return $ SearchResults $ mapMaybe (parseSearchResult t) results

ag :: String -> IO String
ag t = do
  (_, results, _) <- readProcessWithExitCode "ag" (commandLineOptions t) ""
  return results