module Main (main) where import Cardano.Crypto.Init (cryptoInit) import Cardano.Tools.DBTruncater.Run import Cardano.Tools.DBTruncater.Types import DBAnalyser.Parsers (BlockType (..)) import qualified DBTruncater.Parsers as DBTruncater import Main.Utf8 (withStdTerminalHandles) import Options.Applicative (execParser, fullDesc, helper, info, progDesc, (<**>)) import Ouroboros.Consensus.Storage.ImmutableDB.Impl () import Prelude hiding (truncate) main :: IO () IO () main = IO () -> IO () forall (m :: * -> *) r. (MonadIO m, MonadMask m) => m r -> m r withStdTerminalHandles (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ do IO () cryptoInit (DBTruncaterConfig conf, BlockType blocktype) <- IO (DBTruncaterConfig, BlockType) getCommandLineConfig case BlockType blocktype of ByronBlock ByronBlockArgs args -> DBTruncaterConfig -> ByronBlockArgs -> IO () forall block. (RunNode block, HasProtocolInfo block) => DBTruncaterConfig -> Args block -> IO () truncate DBTruncaterConfig conf ByronBlockArgs args ShelleyBlock ShelleyBlockArgs args -> DBTruncaterConfig -> ShelleyBlockArgs -> IO () forall block. (RunNode block, HasProtocolInfo block) => DBTruncaterConfig -> Args block -> IO () truncate DBTruncaterConfig conf ShelleyBlockArgs args CardanoBlock CardanoBlockArgs args -> DBTruncaterConfig -> CardanoBlockArgs -> IO () forall block. (RunNode block, HasProtocolInfo block) => DBTruncaterConfig -> Args block -> IO () truncate DBTruncaterConfig conf CardanoBlockArgs args getCommandLineConfig :: IO (DBTruncaterConfig, BlockType) getCommandLineConfig :: IO (DBTruncaterConfig, BlockType) getCommandLineConfig = ParserInfo (DBTruncaterConfig, BlockType) -> IO (DBTruncaterConfig, BlockType) forall a. ParserInfo a -> IO a execParser ParserInfo (DBTruncaterConfig, BlockType) opts where opts :: ParserInfo (DBTruncaterConfig, BlockType) opts = Parser (DBTruncaterConfig, BlockType) -> InfoMod (DBTruncaterConfig, BlockType) -> ParserInfo (DBTruncaterConfig, BlockType) forall a. Parser a -> InfoMod a -> ParserInfo a info (Parser (DBTruncaterConfig, BlockType) DBTruncater.commandLineParser Parser (DBTruncaterConfig, BlockType) -> Parser ((DBTruncaterConfig, BlockType) -> (DBTruncaterConfig, BlockType)) -> Parser (DBTruncaterConfig, BlockType) forall (f :: * -> *) a b. Applicative f => f a -> f (a -> b) -> f b <**> Parser ((DBTruncaterConfig, BlockType) -> (DBTruncaterConfig, BlockType)) forall a. Parser (a -> a) helper) (InfoMod (DBTruncaterConfig, BlockType) forall a. InfoMod a fullDesc InfoMod (DBTruncaterConfig, BlockType) -> InfoMod (DBTruncaterConfig, BlockType) -> InfoMod (DBTruncaterConfig, BlockType) forall a. Semigroup a => a -> a -> a <> String -> InfoMod (DBTruncaterConfig, BlockType) forall a. String -> InfoMod a progDesc String "Utility for truncating an ImmutableDB")