diff options
Diffstat (limited to 'src/Plugin')
| -rw-r--r-- | src/Plugin/Base.hs | 8 | ||||
| -rw-r--r-- | src/Plugin/GitHubCommit.hs | 2 | ||||
| -rw-r--r-- | src/Plugin/GitRemoteSetOrigin.hs | 2 | ||||
| -rw-r--r-- | src/Plugin/Help.hs | 25 | ||||
| -rw-r--r-- | src/Plugin/PluginList.hs | 15 | 
5 files changed, 49 insertions, 3 deletions
| diff --git a/src/Plugin/Base.hs b/src/Plugin/Base.hs index 62900c7..ac67e71 100644 --- a/src/Plugin/Base.hs +++ b/src/Plugin/Base.hs @@ -13,9 +13,11 @@ import Message  type PluginAction = Message -> IO (Either T.Text T.Text)  data Plugin = Plugin -    { matchRegex :: String -    , perform    :: PluginAction +    { matchRegex  :: String +    , perform     :: PluginAction +    , command     :: T.Text +    , description :: T.Text      }  instance Show Plugin where -    show (Plugin r p) = "matchRegex = " ++ r +    show (Plugin r _ _ _) = "matchRegex = " ++ r diff --git a/src/Plugin/GitHubCommit.hs b/src/Plugin/GitHubCommit.hs index 8b43b57..c4dd2ca 100644 --- a/src/Plugin/GitHubCommit.hs +++ b/src/Plugin/GitHubCommit.hs @@ -17,6 +17,8 @@ import Plugin.Base  gitHubCommit = Plugin      { matchRegex = "^[0-9a-f]{40}$"      , perform = gitHubCommitAction +    , command = "GIT_SHA" +    , description = "Generate a commit URL based on the given SHA."      }  gitHubCommitAction :: PluginAction diff --git a/src/Plugin/GitRemoteSetOrigin.hs b/src/Plugin/GitRemoteSetOrigin.hs index 208ab9f..5b2aad2 100644 --- a/src/Plugin/GitRemoteSetOrigin.hs +++ b/src/Plugin/GitRemoteSetOrigin.hs @@ -16,6 +16,8 @@ import Plugin.Base  gitRemoteSetOrigin = Plugin      { matchRegex = "^git remote set origin ([^ ]+)$"      , perform = gitRemoteSetOriginAction +    , command = "git remote set origin URL" +    , description = "Set the git remote URL for this channel."      }  gitRemoteSetOriginAction :: PluginAction diff --git a/src/Plugin/Help.hs b/src/Plugin/Help.hs new file mode 100644 index 0000000..57e106d --- /dev/null +++ b/src/Plugin/Help.hs @@ -0,0 +1,25 @@ +{-# LANGUAGE OverloadedStrings #-} + +module Plugin.Help +    ( help +    ) where + +import qualified Data.Text as T + +import qualified Plugin.PluginList as PL (plugins) +import Plugin.Base + +help = Plugin +    { matchRegex  = "^help$" +    , perform     = helpAction +    , command     = "help" +    , description = "Show a list of available bot commands." +    } + +helpAction :: PluginAction +helpAction _ = do +    return $ Right $ T.concat +        [command p `T.append` "\t" `T.append` description p | p <- plugins] + +plugins :: [Plugin] +plugins = PL.plugins ++ [help] diff --git a/src/Plugin/PluginList.hs b/src/Plugin/PluginList.hs new file mode 100644 index 0000000..21f3893 --- /dev/null +++ b/src/Plugin/PluginList.hs @@ -0,0 +1,15 @@ +module Plugin.PluginList +    ( plugins +    ) where + +import Plugin.Base (Plugin) +import Plugin.GitHubCommit +import Plugin.GitRemoteSetOrigin + +-- | The list of plugins to load, minus the Help plugin, which would otherwise +-- cause a circular import. +plugins :: [Plugin] +plugins = +    [ gitHubCommit +    , gitRemoteSetOrigin +    ] | 
