module Cardano.CLI.EraIndependent.Cip.Option
  ( parseCipCmd
  )
where

import Cardano.CLI.Command (ClientCommand (CipFormatCmds))
import Cardano.CLI.EraIndependent.Cip.Cip129.Option
import Cardano.CLI.EraIndependent.Cip.Command
import Cardano.CLI.Parser

import Options.Applicative qualified as Opt

parseCipCmd :: Opt.Parser ClientCommand
parseCipCmd :: Parser ClientCommand
parseCipCmd =
  Mod CommandFields ClientCommand -> Parser ClientCommand
forall a. Mod CommandFields a -> Parser a
Opt.hsubparser (Mod CommandFields ClientCommand -> Parser ClientCommand)
-> Mod CommandFields ClientCommand -> Parser ClientCommand
forall a b. (a -> b) -> a -> b
$
    String
-> ParserInfo ClientCommand -> Mod CommandFields ClientCommand
forall a. String -> ParserInfo a -> Mod CommandFields a
commandWithMetavar String
"cip-format" (ParserInfo ClientCommand -> Mod CommandFields ClientCommand)
-> ParserInfo ClientCommand -> Mod CommandFields ClientCommand
forall a b. (a -> b) -> a -> b
$
      Parser ClientCommand
-> InfoMod ClientCommand -> ParserInfo ClientCommand
forall a. Parser a -> InfoMod a -> ParserInfo a
Opt.info (CipFormatCmds -> ClientCommand
CipFormatCmds (CipFormatCmds -> ClientCommand)
-> Parser CipFormatCmds -> Parser ClientCommand
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Parser CipFormatCmds
pCipFormat) (InfoMod ClientCommand -> ParserInfo ClientCommand)
-> InfoMod ClientCommand -> ParserInfo ClientCommand
forall a b. (a -> b) -> a -> b
$
        String -> InfoMod ClientCommand
forall a. String -> InfoMod a
Opt.progDesc (String -> InfoMod ClientCommand)
-> String -> InfoMod ClientCommand
forall a b. (a -> b) -> a -> b
$
          [String] -> String
forall a. Monoid a => [a] -> a
mconcat
            [ String
"Group of commands related to CIP changes."
            ]

pCipFormat :: Opt.Parser CipFormatCmds
pCipFormat :: Parser CipFormatCmds
pCipFormat =
  Mod CommandFields CipFormatCmds -> Parser CipFormatCmds
forall a. Mod CommandFields a -> Parser a
Opt.hsubparser (Mod CommandFields CipFormatCmds -> Parser CipFormatCmds)
-> Mod CommandFields CipFormatCmds -> Parser CipFormatCmds
forall a b. (a -> b) -> a -> b
$
    String
-> ParserInfo CipFormatCmds -> Mod CommandFields CipFormatCmds
forall a. String -> ParserInfo a -> Mod CommandFields a
commandWithMetavar String
"cip-129" (ParserInfo CipFormatCmds -> Mod CommandFields CipFormatCmds)
-> ParserInfo CipFormatCmds -> Mod CommandFields CipFormatCmds
forall a b. (a -> b) -> a -> b
$
      Parser CipFormatCmds
-> InfoMod CipFormatCmds -> ParserInfo CipFormatCmds
forall a. Parser a -> InfoMod a -> ParserInfo a
Opt.info Parser CipFormatCmds
pCip129 (InfoMod CipFormatCmds -> ParserInfo CipFormatCmds)
-> InfoMod CipFormatCmds -> ParserInfo CipFormatCmds
forall a b. (a -> b) -> a -> b
$
        String -> InfoMod CipFormatCmds
forall a. String -> InfoMod a
Opt.progDesc (String -> InfoMod CipFormatCmds)
-> String -> InfoMod CipFormatCmds
forall a b. (a -> b) -> a -> b
$
          [String] -> String
forall a. Monoid a => [a] -> a
mconcat
            [ String
"Modified binary encoding of drep keys, constitutional committee cold and hot keys, governance actions. "
            , String
"https://github.com/cardano-foundation/CIPs/tree/master/CIP-0129"
            ]