-
Notifications
You must be signed in to change notification settings - Fork 721
/
Parsers.hs
48 lines (40 loc) · 1 KB
/
Parsers.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
{-# LANGUAGE ImportQualifiedPost #-}
module Cardano.Unlog.Parsers
( opts
, pref
) where
import Cardano.Prelude
import Prelude (String)
import Options.Applicative
import Options.Applicative qualified as Opt
import Cardano.Unlog.Commands
import Cardano.Unlog.Run (Command (..))
command' :: String -> String -> Parser a -> Mod CommandFields a
command' c descr p =
command c $ info (p <**> helper)
$ mconcat [ progDesc descr ]
opts :: ParserInfo Command
opts =
Opt.info (parseCommand <**> Opt.helper)
( Opt.fullDesc
<> Opt.header
"locli - parse JSON log files, as emitted by cardano-node."
)
pref :: ParserPrefs
pref = Opt.prefs showHelpOnEmpty
parseCommand :: Parser Command
parseCommand =
asum
[ parseAnalysis
]
parseAnalysis :: Parser Command
parseAnalysis =
fmap AnalysisCommand $
subparser $ mconcat
[ commandGroup "Log analysis"
, metavar "Log analysis"
, command'
"analyse"
"Log analysis"
parseAnalysisCommands
]