aboutsummaryrefslogtreecommitdiffstats
path: root/src/Plugin
diff options
context:
space:
mode:
Diffstat (limited to 'src/Plugin')
-rw-r--r--src/Plugin/GitRemoteSetOrigin.hs35
1 files changed, 35 insertions, 0 deletions
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