Skip to content

Instantly share code, notes, and snippets.

@egonSchiele
Created July 26, 2013 20:18
Show Gist options
  • Select an option

  • Save egonSchiele/6091917 to your computer and use it in GitHub Desktop.

Select an option

Save egonSchiele/6091917 to your computer and use it in GitHub Desktop.
Github emailer
import Control.Applicative
import Github.Gists
import Github.Users.Followers
import System.Directory
import Control.Monad
import qualified Data.Set as S
import Text.Printf
import System.Process
import System.IO.Unsafe
followersFile = "followers.txt"
compareFollowers Nothing _ = return ()
compareFollowers (Just prev) cur = do
let newFollowers = S.toList $ cur S.\\ prev
unfollowedBy = S.toList $ prev S.\\ cur
forM_ newFollowers $ \userName ->
system (printf "echo 'https://www.github.com/%s' | mail -s '%s followed you on Github!' bluemangroupie@gmail.com" userName userName)
forM_ unfollowedBy $ \userName ->
system (printf "echo 'https://www.github.com/%s' | mail -s '%s unfollowed you on Github!' bluemangroupie@gmail.com" userName userName)
main = do
followers_ <- usersFollowing "egonSchiele"
fileExists <- doesFileExist followersFile
let prevFollowers = if fileExists
then Just (S.fromList . lines . unsafePerformIO . readFile $ followersFile)
else Nothing
case followers_ of
Left err -> print err
Right followers -> do
let logins = githubOwnerLogin <$> followers
compareFollowers prevFollowers (S.fromList logins)
writeFile followersFile (unlines logins)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment