{-# LANGUAGE BangPatterns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} module App.Commands.Demo ( cmdDemo ) where import App.Commands.Types import Control.Lens import Control.Monad import Data.Semigroup ((<>)) import HaskellWorks.Data.Json.LightJson import HaskellWorks.Data.Json.LoadCursor import HaskellWorks.Data.Micro import HaskellWorks.Data.MQuery import Options.Applicative hiding (columns) import qualified App.Lens as L import qualified Data.DList as DL runDemo :: DemoOptions -> IO () runDemo opts = do !cursor <- loadJsonWithCsPoppyIndex (opts ^. L.filePath) let !json = lightJsonAt cursor let q = MQuery (DL.singleton json) putPretty $ q >>= (item >=> entry >=> named "acquisition" >=> entry >=> named "price_currency_code" >=> asString) & count optsDemo :: Parser DemoOptions optsDemo = DemoOptions <$> strOption ( long "input" <> short 'i' <> help "Input DSV file" <> metavar "STRING" ) cmdDemo :: Mod CommandFields (IO ()) cmdDemo = command "create-index" $ flip info idm $ runDemo <$> optsDemo