{-# LANGUAGE CPP #-}

module Hoogle.Cabal.Command.Version
  ( Command (..),
    command,
    action,
  )
where

import qualified Options.Applicative as OptParse

data Command = Command
  deriving (Int -> Command -> ShowS
[Command] -> ShowS
Command -> [Char]
(Int -> Command -> ShowS)
-> (Command -> [Char]) -> ([Command] -> ShowS) -> Show Command
forall a.
(Int -> a -> ShowS) -> (a -> [Char]) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Command -> ShowS
showsPrec :: Int -> Command -> ShowS
$cshow :: Command -> [Char]
show :: Command -> [Char]
$cshowList :: [Command] -> ShowS
showList :: [Command] -> ShowS
Show, Command -> Command -> Bool
(Command -> Command -> Bool)
-> (Command -> Command -> Bool) -> Eq Command
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Command -> Command -> Bool
== :: Command -> Command -> Bool
$c/= :: Command -> Command -> Bool
/= :: Command -> Command -> Bool
Eq)

command :: (Command -> a) -> OptParse.Mod OptParse.CommandFields a
command :: forall a. (Command -> a) -> Mod CommandFields a
command Command -> a
f =
  [Char] -> ParserInfo a -> Mod CommandFields a
forall a. [Char] -> ParserInfo a -> Mod CommandFields a
OptParse.command [Char]
"version" (ParserInfo a -> Mod CommandFields a)
-> ParserInfo a -> Mod CommandFields a
forall a b. (a -> b) -> a -> b
$
    Parser a -> InfoMod a -> ParserInfo a
forall a. Parser a -> InfoMod a -> ParserInfo a
OptParse.info (a -> Parser a
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Command -> a
f Command
Command)) ([Char] -> InfoMod a
forall a. [Char] -> InfoMod a
OptParse.progDesc [Char]
"Show version")

action :: Command -> IO ()
action :: Command -> IO ()
action Command
_ = do
  [Char] -> IO ()
putStrLn ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
"cabal-hoogle version " [Char] -> ShowS
forall a. [a] -> [a] -> [a]
++ VERSION_cabal_hoogle
  [Char] -> IO ()
putStrLn ([Char] -> IO ()) -> [Char] -> IO ()
forall a b. (a -> b) -> a -> b
$ [Char]
"compiled using version " [Char] -> ShowS
forall a. [a] -> [a] -> [a]
++ VERSION_Cabal ++ " of the Cabal library"