module Main (main) where import Cardano.Crypto.Init (cryptoInit) import Cardano.Tools.DBTruncater.Run import Cardano.Tools.DBTruncater.Types import DBAnalyser.Parsers 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 -> Args (CardanoBlock StandardCrypto) -> IO ()) -> (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) -> IO () forall a b c. (a -> b -> c) -> (a, b) -> c uncurry DBTruncaterConfig -> Args (CardanoBlock StandardCrypto) -> IO () forall block. (RunNode block, HasProtocolInfo block) => DBTruncaterConfig -> Args block -> IO () truncate ((DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) -> IO ()) -> IO (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) -> IO () forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< IO (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) getCommandLineConfig getCommandLineConfig :: IO (DBTruncaterConfig, CardanoBlockArgs) getCommandLineConfig :: IO (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) getCommandLineConfig = ParserInfo (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) -> IO (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) forall a. ParserInfo a -> IO a execParser ParserInfo (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) opts where opts :: ParserInfo (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) opts = Parser (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) -> InfoMod (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) -> ParserInfo (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) forall a. Parser a -> InfoMod a -> ParserInfo a info (Parser (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) DBTruncater.commandLineParser Parser (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) -> Parser ((DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) -> (DBTruncaterConfig, Args (CardanoBlock StandardCrypto))) -> Parser (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) forall (f :: * -> *) a b. Applicative f => f a -> f (a -> b) -> f b <**> Parser ((DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) -> (DBTruncaterConfig, Args (CardanoBlock StandardCrypto))) forall a. Parser (a -> a) helper) (InfoMod (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) forall a. InfoMod a fullDesc InfoMod (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) -> InfoMod (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) -> InfoMod (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) forall a. Semigroup a => a -> a -> a <> String -> InfoMod (DBTruncaterConfig, Args (CardanoBlock StandardCrypto)) forall a. String -> InfoMod a progDesc String "Utility for truncating an ImmutableDB")