hs-bindgen-1.0.0.0: app/HsBindgen/Cli/Info.hs
-- | @hs-bindgen-cli info@ commands
--
-- Intended for qualified import.
--
-- > import HsBindgen.Cli.Info qualified as Info
module HsBindgen.Cli.Info (
-- * CLI help
info
-- * Commands
, Cmd(..)
, parseCmd
-- * Execution
, exec
) where
import Options.Applicative hiding (info)
import HsBindgen.App
import HsBindgen.Cli.Info.BuiltinMacros qualified as BuiltinMacros
import HsBindgen.Cli.Info.Doxygen qualified as Doxygen
import HsBindgen.Cli.Info.IncludeGraph qualified as IncludeGraph
import HsBindgen.Cli.Info.Instances qualified as Instances
import HsBindgen.Cli.Info.Libclang qualified as Libclang
import HsBindgen.Cli.Info.ResolveHeader qualified as ResolveHeader
import HsBindgen.Cli.Info.UseDeclGraph qualified as UseDeclGraph
{-------------------------------------------------------------------------------
CLI help
-------------------------------------------------------------------------------}
info :: InfoMod a
info = progDesc "Informational commands, useful when creating bindings"
{-------------------------------------------------------------------------------
Commands
-------------------------------------------------------------------------------}
-- Ordered lexicographically
data Cmd =
CmdBuiltinMacros BuiltinMacros.Opts
| CmdDoxygen Doxygen.Opts
| CmdIncludeGraph IncludeGraph.Opts
| CmdInstances ()
| CmdLibclang Libclang.Opts
| CmdResolveHeader ResolveHeader.Opts
| CmdUseDeclGraph UseDeclGraph.Opts
parseCmd :: Parser Cmd
parseCmd = subparser $ mconcat [
cmd
"builtin-macros"
CmdBuiltinMacros
BuiltinMacros.parseOpts
BuiltinMacros.info
, cmd
"doxygen"
CmdDoxygen
Doxygen.parseOpts
Doxygen.info
, cmd
"include-graph"
CmdIncludeGraph
IncludeGraph.parseOpts
IncludeGraph.info
, cmd
"instances"
CmdInstances
(pure ())
Instances.info
, cmd
"libclang"
CmdLibclang
Libclang.parseOpts
Libclang.info
, cmd
"resolve-header"
CmdResolveHeader
ResolveHeader.parseOpts
ResolveHeader.info
, cmd
"use-decl-graph"
CmdUseDeclGraph
UseDeclGraph.parseOpts
UseDeclGraph.info
]
{-------------------------------------------------------------------------------
Execution
-------------------------------------------------------------------------------}
exec :: GlobalOpts -> Cmd -> IO ()
exec gopts = \case
CmdBuiltinMacros opts -> BuiltinMacros.exec gopts opts
CmdDoxygen opts -> Doxygen.exec gopts opts
CmdIncludeGraph opts -> IncludeGraph.exec gopts opts
CmdInstances () -> Instances.exec
CmdLibclang opts -> Libclang.exec gopts opts
CmdResolveHeader opts -> ResolveHeader.exec gopts opts
CmdUseDeclGraph opts -> UseDeclGraph.exec gopts opts