diff options
-rw-r--r-- | sorbot.cabal | 1 | ||||
-rw-r--r-- | src/Plugin.hs | 2 | ||||
-rw-r--r-- | src/Plugin/GitRemoteSetOrigin.hs | 35 |
3 files changed, 38 insertions, 0 deletions
diff --git a/sorbot.cabal b/sorbot.cabal index f27aff6..d69d7eb 100644 --- a/sorbot.cabal +++ b/sorbot.cabal @@ -21,6 +21,7 @@ library , Plugin , Plugin.Base , Plugin.GitHubCommit + , Plugin.GitRemoteSetOrigin build-depends: base >= 4.7 && < 5 , bytestring , irc-client diff --git a/src/Plugin.hs b/src/Plugin.hs index 0ff1367..a9918fc 100644 --- a/src/Plugin.hs +++ b/src/Plugin.hs @@ -11,6 +11,7 @@ import Text.Regex.TDFA import qualified Message as M import Plugin.Base import Plugin.GitHubCommit +import Plugin.GitRemoteSetOrigin -- | Get the first plugin that matches the given message text. matchPlugin :: M.Message -> Maybe Plugin @@ -32,4 +33,5 @@ performPlugin p message = perform p $ message plugins :: [Plugin] plugins = [ gitHubCommit + , gitRemoteSetOrigin ] diff --git a/src/Plugin/GitRemoteSetOrigin.hs b/src/Plugin/GitRemoteSetOrigin.hs new file mode 100644 index 0000000..0e8f817 --- /dev/null +++ b/src/Plugin/GitRemoteSetOrigin.hs @@ -0,0 +1,35 @@ +{-# LANGUAGE OverloadedStrings #-} + +module Plugin.GitRemoteSetOrigin + ( gitRemoteSetOrigin + ) where + +import Control.Monad.IO.Class (liftIO) +import qualified Data.Text as T + +import Database.SQLite.Simple +import Text.Regex.TDFA ((=~)) + +import qualified Message as M +import Plugin.Base + +gitRemoteSetOrigin = Plugin + { matchRegex = "^git remote set origin ([^ ]+)$" + , perform = gitRemoteSetOriginAction + } + +gitRemoteSetOriginAction :: PluginAction +gitRemoteSetOriginAction message = do + case M.textStr message =~ matchRegex gitRemoteSetOrigin of + "" -> return $ Left "blast" + url -> do + dbConn <- liftIO $ open "db/sorbot_development.sqlite3" + liftIO $ execute dbConn "INSERT INTO \ + \ plugin_github_commit_channel_repo_urls \ + \ (channel, repo_url) \ + \ VALUES \ + \ (?, ?)" + (M.channel message, url) + liftIO $ close dbConn + + return $ Right $ T.pack url |