hbs2/hbs2-git3/app/Main.hs

33 lines
713 B
Haskell

{-# OPTIONS_GHC -fno-warn-orphans #-}
module Main where
import HBS2.Git3.Prelude
import HBS2.Git3.Run
import HBS2.Git3.State
import HBS2.Git3.Logger
import Data.Config.Suckless.Script
import System.Environment qualified as E
main :: IO ()
main = flip runContT pure do
setupLogger
ContT $ bracket none $ const do
silence
argz <- liftIO $ E.getArgs
cli <- parseTop (unlines $ unwords <$> splitForms argz)
& either (error.show) pure
tvd <- newTVarIO theDict
env' <- nullGit3Env
let env = env' { gitRuntimeDict = Just (RuntimeDict tvd) }
void $ lift $ withGit3Env env do
conf <- readLocalConf
recover $ setupLogger >> runEval tvd (conf <> cli)
`finally` silence