module Main where import MergeBashHistory import Data.Monoid ((<>)) import Data.Text.IO as TIO (readFile, putStr) import Options.Applicative data HmbhO = HmbhO FilePath FilePath opParseFilePath :: Parser FilePath opParseFilePath = argument str $ metavar "FILE" opParseHmbhO :: Parser HmbhO opParseHmbhO = HmbhO <$> opParseFilePath <*> opParseFilePath execOpParserHmbhO :: IO HmbhO execOpParserHmbhO = execParser $ info (helper <*> opParseHmbhO) (fullDesc <> header "bash_history merger") handleFile :: FilePath -> IO [HistoryRecord] handleFile fp = do i <- TIO.readFile fp case parseFile i of Left e -> error $ show e Right r -> return r hmbhHandler :: HmbhO -> IO () hmbhHandler (HmbhO fp1 fp2) = do f1 <- handleFile fp1 f2 <- handleFile fp2 mapM_ (TIO.putStr . recordToText) $ mergeRecords f1 f2 main :: IO () main = execOpParserHmbhO >>= hmbhHandler