module Iris.Cli.Version (
VersionSettings (..),
defaultVersionSettings,
fullVersionP,
mkVersionParser,
) where
import Data.Version (Version, showVersion)
import qualified Options.Applicative as Opt
data VersionSettings = VersionSettings
{ VersionSettings -> Version
versionSettingsVersion :: Version
, VersionSettings -> String -> String
versionSettingsMkDesc :: String -> String
}
defaultVersionSettings :: Version -> VersionSettings
defaultVersionSettings :: Version -> VersionSettings
defaultVersionSettings Version
version =
VersionSettings
{ versionSettingsVersion :: Version
versionSettingsVersion = Version
version
, versionSettingsMkDesc :: String -> String
versionSettingsMkDesc = forall a. a -> a
id
}
mkVersionParser :: Maybe VersionSettings -> Opt.Parser (a -> a)
mkVersionParser :: forall a. Maybe VersionSettings -> Parser (a -> a)
mkVersionParser = forall b a. b -> (a -> b) -> Maybe a -> b
maybe (forall (f :: * -> *) a. Applicative f => a -> f a
pure forall a. a -> a
id) forall a. VersionSettings -> Parser (a -> a)
fullVersionP
fullVersionP :: VersionSettings -> Opt.Parser (a -> a)
fullVersionP :: forall a. VersionSettings -> Parser (a -> a)
fullVersionP VersionSettings{Version
String -> String
versionSettingsMkDesc :: String -> String
versionSettingsVersion :: Version
versionSettingsMkDesc :: VersionSettings -> String -> String
versionSettingsVersion :: VersionSettings -> Version
..} = forall a. Parser (a -> a)
versionP forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall a. Parser (a -> a)
numericVersionP
where
versionStr :: String
versionStr :: String
versionStr = Version -> String
showVersion Version
versionSettingsVersion
versionP :: Opt.Parser (a -> a)
versionP :: forall a. Parser (a -> a)
versionP =
forall a. String -> Mod OptionFields (a -> a) -> Parser (a -> a)
Opt.infoOption (String -> String
versionSettingsMkDesc String
versionStr) forall a b. (a -> b) -> a -> b
$
forall a. Monoid a => [a] -> a
mconcat
[ forall (f :: * -> *) a. HasName f => String -> Mod f a
Opt.long String
"version"
, forall (f :: * -> *) a. String -> Mod f a
Opt.help String
"Show application version"
]
numericVersionP :: Opt.Parser (a -> a)
numericVersionP :: forall a. Parser (a -> a)
numericVersionP =
forall a. String -> Mod OptionFields (a -> a) -> Parser (a -> a)
Opt.infoOption String
versionStr forall a b. (a -> b) -> a -> b
$
forall a. Monoid a => [a] -> a
mconcat
[ forall (f :: * -> *) a. HasName f => String -> Mod f a
Opt.long String
"numeric-version"
, forall (f :: * -> *) a. String -> Mod f a
Opt.help String
"Show only numeric application version"
]