3

optparse-applicative から自動生成されたヘルプ出力を書き直そうとしています。次のコードにより、ヘルプ出力を置き換えることができます。

import Options.Applicative
import Data.Semigroup ((<>))

data Opts = Opts { optFast :: Bool, optHelp :: Bool }


sample :: Parser Opts
sample = Opts
  <$> switch
      ( long "fast"
     <> short 'f'
     <> help "Whether to be fast" )
  <*> switch
      ( long "help"
     <> short 'h'
     <> help $ info )


doSomething :: Opts -> IO ()
doSomething (Opts { optFast = True }) = putStrLn $ "Very fast execution!"
doSomething (Opts { optHelp = True }) = putStrLn $ "Some help for you!"
doSomething _ = putStrLn $ "Rather slow execution."


main :: IO ()
main =
  let
    opts = info (sample)
      ( fullDesc
     <> progDesc "Print execution speed"
     <> header "Hello - A test for optparse-applicative" )
  in
    doSomething =<< execParser opts

( で実行可能stack script --resolver=lts-16 main.hs -- --help)

ただし、完全に置き換えるのではなく、自動生成されたヘルプ テキストの特定の部分のみを置き換えます。これはどのように可能ですか?

4

0 に答える 0