hbs2/hbs2-git/git-hbs2/RunShow.hs

56 lines
1.5 KiB
Haskell

module RunShow where
import HBS2.Prelude
-- import HBS2.Base58
import HBS2Git.App
-- import HBS2Git.State
import HBS2Git.ListRefs
import Control.Monad.Catch (MonadMask)
import Control.Monad.Reader
import Lens.Micro.Platform
-- import Data.Foldable
import Prettyprinter.Render.Terminal
data ShowObject = ShowRef RepoRef | ShowConfig
showRef :: (MonadIO m, MonadMask m) => RepoRef -> App m ()
showRef _h = do
-- db <- makeDbPath h >>= dbEnv
-- FIXME: re-implement-showRef
pure ()
-- withDB db do
-- hd <- stateGetHead
-- imported <- stateGetLastImported 10
-- liftIO $ do
-- print $ "current state for" <+> pretty (AsBase58 h)
-- print $ "head:" <+> pretty hd
-- print $ pretty "last operations:"
-- for_ imported (\(t,h1,h2) -> print $ pretty t <+> pretty h1 <+> pretty h2)
showRefs :: (MonadIO m, MonadMask m) => App m ()
showRefs = do
liftIO $ putDoc $ line <> green "References:" <> section
runListRefs
showConfig :: (MonadIO m, MonadMask m) => App m ()
showConfig = do
configPath <- asks $ view appConfPath
liftIO $ do
config <- readFile configPath
putDoc $ green "Config file location:" <> section <> pretty configPath <> section
putDoc $ green "Config contents:" <> line <> pretty config <> line
showSummary :: (MonadIO m, MonadMask m) => App m ()
showSummary = do
showRefs
liftIO $ putDoc section
showConfig
runShow :: (MonadIO m, MonadMask m) => Maybe ShowObject -> App m ()
runShow (Just (ShowRef h)) = showRef h
runShow (Just ShowConfig) = showConfig
runShow Nothing = showSummary