{-# LANGUAGE OverloadedStrings #-}
module DeleteMerged
( deleteDone,
)
where
import qualified Data.Text.IO as T
import qualified GH
import qualified Git
import GitHub.Data (Name, Owner)
import OurPrelude
deleteDone :: Bool -> Text -> Name Owner -> IO ()
deleteDone delete githubToken ghUser = do
result <-
runExceptT $ do
Git.fetch
Git.cleanAndResetTo "master"
refs <- ExceptT $ GH.closedAutoUpdateRefs (GH.authFromToken githubToken) ghUser
let branches = fmap (\r -> ("auto-update/" <> r)) refs
if delete
then liftIO $ Git.deleteBranchesEverywhere branches
else liftIO $ do
T.putStrLn $ "Would delete these branches for " <> tshow ghUser <> ":"
mapM_ (T.putStrLn . tshow) branches
case result of
Left e -> T.putStrLn e
_ -> return ()