ribosome-host-0.9.9.9: lib/Ribosome/Host/Interpreter/Process/Embed.hs
module Ribosome.Host.Interpreter.Process.Embed where
import Data.Serialize (Serialize)
import Polysemy.Process (Process, ProcessOptions, withProcess_)
import System.Process.Typed (ProcessConfig, proc)
import Ribosome.Host.Data.BootError (BootError (BootError))
import Ribosome.Host.Interpreter.Process.Cereal (interpretProcessCerealNative)
nvimArgs :: [String]
nvimArgs =
["--embed", "-n", "-u", "NONE", "-i", "NONE", "--clean", "--headless"]
nvimProc :: ProcessConfig () () ()
nvimProc =
proc "nvim" nvimArgs
interpretProcessCerealNvimEmbed ::
Serialize a =>
Members [Error BootError, Log, Resource, Race, Async, Embed IO] r =>
Maybe ProcessOptions ->
Maybe (ProcessConfig () () ()) ->
InterpreterFor (Process a (Either Text a)) r
interpretProcessCerealNvimEmbed options conf =
interpretProcessCerealNative (fromMaybe def options) (fromMaybe nvimProc conf) .
resumeHoistError (BootError . show) .
withProcess_ @() .
raiseUnder2