packages feed

hs-bindgen-1.0.0.0: app/HsBindgen/Cli/Internal.hs

-- | @hs-bindgen-cli internal@ commands
--
-- Intended for qualified import.
--
-- > import HsBindgen.Cli.Internal qualified as Internal
module HsBindgen.Cli.Internal (
    -- * CLI help
    info
    -- * Commands
  , Cmd(..)
  , parseCmd
    -- * Execution
  , exec
  ) where

import Options.Applicative hiding (info)

import HsBindgen.App
import HsBindgen.Cli.Internal.Frontend qualified as Frontend

{-------------------------------------------------------------------------------
  CLI help
-------------------------------------------------------------------------------}

info :: InfoMod a
info = progDesc "Internal commands, for hs-bindgen development"

{-------------------------------------------------------------------------------
  Commands
-------------------------------------------------------------------------------}

newtype Cmd = CmdFrontend Frontend.Opts

parseCmd :: Parser Cmd
parseCmd = subparser $ mconcat [
      cmd "frontend" CmdFrontend Frontend.parseOpts Frontend.info
    ]

{-------------------------------------------------------------------------------
  Execution
-------------------------------------------------------------------------------}

exec :: GlobalOpts -> Cmd -> IO ()
exec gopts = \case
    CmdFrontend opts -> Frontend.exec gopts opts