module Plugins.Commands
( commandsFromPlugins
, toCommand
) where
import Control.Monad.Trans.Either (EitherT)
import Control.Monad.Trans.Writer (Writer)
import Data.Text (Text, unpack)
import Data.Foldable (foldMap)
import Plugins
import Options.Applicative.Simple
commandsFromPlugins :: Plugins -> EitherT Text (Writer (Mod CommandFields Text)) ()
commandsFromPlugins plugins = mapM_ toCommand (listPlugins plugins)
toCommand :: Plugin -> EitherT Text (Writer (Mod CommandFields Text)) ()
toCommand plugin = addCommand
(unpack $ pluginName plugin)
(unpack $ pluginSummary plugin)
id
(pure $ pluginName plugin)