content: {-# LANGUAGE FlexibleContexts #-}
  {-# LANGUAGE TemplateHaskell #-}
  
  {-# OPTIONS_HADDOCK hide #-}
  
  -- |
  -- Copyright: 2020 Input Output (Hong Kong) Ltd., 2021-2022 Input Output Global Inc. (IOG), 2023-2025 Intersect
  -- License: Apache-2.0
  
  module Command.Version
      ( opt
      , run
      ) where
  
  import Prelude
  
  import Data.Version
      ( showVersion )
  import Options.Applicative
      ( Parser
      , command
      , flag'
      , help
      , hidden
      , info
      , long
      , progDesc
      , short
      , subparser
      , (<|>)
      )
  import Paths_cardano_addresses
      ( version )
  import System.Git.TH
      ( gitRevParseHEAD )
  
  import qualified Data.ByteString.Char8 as B8
  import qualified Data.Text as T
  import qualified Data.Text.Encoding as T
  
  opt :: a -> Parser a
  opt a =
      flag' a (mconcat
          [ long "version"
          , short 'v'
          , help helpText
          ])
    <|>
      subparser (mconcat
          [ hidden
          , command "version" $ info (pure a) (progDesc helpText)
          ])
    where
      helpText = "Show the software current version and build revision."
  
  run :: IO ()
  run = do
      B8.putStrLn $ T.encodeUtf8 $ T.pack $
          showVersion version <> " @ " <> $(gitRevParseHEAD)
  