packages feed

succinct-0.0.0.1: components/succinct/app/App/Cli/Commands/BalancedParens.hs

module App.Cli.Commands.BalancedParens
  ( cmdBalancedParens
  ) where

import App.Cli.Commands.BalancedParens.BitsToParens
import App.Cli.Commands.BalancedParens.ParensToBits
import App.Cli.Commands.BalancedParens.Positions
import Options.Applicative
import Options.Applicative qualified as Opt

{- HLINT ignore "Monoid law, left identity" -}

subParser :: String -> ParserInfo a -> Parser a
subParser availableCommand pInfo =
  Opt.hsubparser $ Opt.command availableCommand pInfo <> Opt.metavar availableCommand

cmdBalancedParens :: Parser (IO ())
cmdBalancedParens =
  subParser "balanced-parens" $ optInfo $ Opt.progDesc "Balanced Parens"
  where
    optInfo =
      Opt.info $ subparser $ mconcat
        [ cmdParensToBits
        , cmdBitsToParens
        , cmdPositions
        ]