module HashAddressed.App.Command.Examples.Version
  (
    versionCommand,
  )
  where

import Essentials
import HashAddressed.App.Command.Type

import HashAddressed.App.Version (version)
import Control.Monad.IO.Class (liftIO)

import qualified Options.Applicative as Options
import qualified System.IO as IO

versionCommand :: Command
versionCommand :: Command
versionCommand = forall a. Parser a -> InfoMod a -> ParserInfo a
Options.info (Parser (CommandAction ())
parser forall (f :: * -> *) a b. Applicative f => f a -> f (a -> b) -> f b
<**> forall a. Parser (a -> a)
Options.helper) forall a b. (a -> b) -> a -> b
$
    forall a. String -> InfoMod a
Options.progDesc String
"Print version numbers"
  where
    parser :: Options.Parser (CommandAction ())
    parser :: Parser (CommandAction ())
parser = forall (f :: * -> *) a. Applicative f => a -> f a
pure do
        forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ String -> IO ()
IO.putStrLn forall a b. (a -> b) -> a -> b
$ String
"hash-addressed " forall a. Semigroup a => a -> a -> a
<> String
version