-- | Provides builtins for some common commands.
module System.Chatty.Spawn.Builtins (withBuiltins) where

import System.Chatty.Spawn
import System.Chatty.Spawn.Overlay

-- | Use builtins if possible.
withBuiltins :: (Functor m, MonadSpawn m) => SpawnOverlayT m a -> m a
withBuiltins m = fmap fst $ runSpawnOverlayT m builtins

builtins :: MonadSpawn m => [(String,[String] -> String -> m (Int,String))]
builtins =
  ("cat", \_ si -> return (0,si)):
  []