packages feed

ipedb-0.1.0.0: src/IpeDb/Main.hs

{-# LANGUAGE OverloadedStrings #-}

module IpeDb.Main (defaultMain) where

import Data.Text (Text)
import qualified Data.Text as Text
import qualified Data.Text.IO as Text
import IpeDb.InfoProv
import qualified IpeDb.Options as Opts
import IpeDb.Query

defaultMain :: IO ()
defaultMain = do
  opts <- Opts.parseOptions
  case opts.command of
    Opts.Query query -> withInfoProvDb opts.databaseFp $ \db -> do
      lookupInfoProv db query.ipeId >>= \case
        Nothing -> Text.putStrLn $ "No Info Prov found for " <> Text.show query.ipeId
        Just prov -> Text.putStrLn $ prettyInfoProv prov
    Opts.Index index -> withInfoProvDb opts.databaseFp $ \db -> do
      populateFromEventlog db index.eventlog

prettyInfoProv :: InfoProv -> Text
prettyInfoProv prov =
  Text.unlines
    [ "Info Table  " <> prettyIpeId prov.infoId
    , "  Table Name:      " <> prov.tableName
    , "  Closure Desc:    " <> Text.show prov.closureDesc
    , "  Type Desc:       " <> prov.typeDesc
    , "  Label:           " <> prov.label
    , "  Modulename:      " <> prov.moduleName
    , "  Source Location: " <> prov.srcLoc
    ]