{-# LANGUAGE OverloadedStrings #-}
module Main where
import System.Exit
import System.Environment
import Control.Monad.IO.Class
import Control.Monad
import Data.Monoid
import Data.Maybe
import Data.String
import Data.Text as T
import Data.Text.IO as T
import Network.GitHub
main :: IO ()
main = do
-- Get AuthToken from environment variable
token <- fmap fromString <$> lookupEnv "GITHUB_TOKEN"
-- Require the token for this to work
when (not $ isJust token) $ do
T.putStrLn "Please set the GITHUB_TOKEN env variable"
exitFailure
-- Run GitHub computation, print errors if there are any
errors <- runGitHub (printTeams "dragonfly-science") token
case errors of
Left e -> liftIO $ print e
Right _ -> exitSuccess
printOrgsAndTeams :: GitHub ()
printOrgsAndTeams = do
os <- userOrganisations
forM_ os $ \o -> do
liftIO $ T.putStrLn (orgLogin o)
printTeams (orgLogin o)
printTeams :: OrgLogin -> GitHub ()
printTeams ol = do
teams <- organisationTeams ol
forM_ teams $ \t -> do
liftIO $ T.putStrLn $ " " <> teamName t
members <- teamMembers (teamId t)
liftIO $ T.putStrLn $ " " <> T.intercalate ", " [ memberLogin m | m <- members]
repos <- teamRepositories (teamId t)
liftIO $ T.putStrLn $ " " <> T.intercalate ", " [ repositoryName r | r <- repos]