packages feed

thank-you-stars-0.3.0: app/Main.hs

module Main (main) where

import           Utils.ThankYouStars.GitHub
import           Utils.ThankYouStars.Package

import qualified Data.Set                    as S
import           System.Directory            (getHomeDirectory)
import           System.Exit                 (die)
import           System.FilePath             (joinPath)

main :: IO ()
main = do
    homeDir <- getHomeDirectory
    let tokenFile = joinPath [homeDir, ".thank-you-stars.json"]
    eToken <- readToken tokenFile
    case eToken of
        Left  _ -> do
            die ("Cannot parse " ++ show tokenFile ++ " into a token")
        Right token -> do
            db     <- readStackIndex
            cabals <- getCabalFiles
            descs  <- mapM readCabalFile $ S.toList cabals
            let repos = S.unions $ map (dependentRepos db) descs
            mapM_ (starAction token) repos

starAction :: Token -> GitHubRepo -> IO ()
starAction token ghr = do
    eResult <- starRepo token ghr
    case eResult of
        Left  _  -> putStrLn $ "Error    " ++ show ghr
        Right () -> putStrLn $ "Starred! " ++ show ghr