aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sorbot.cabal1
-rw-r--r--src/Plugin.hs2
-rw-r--r--src/Plugin/GitRemoteSetOrigin.hs35
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