module Testnet.Commands.Version ( VersionOptions(..) , cmdVersion , runVersionOptions ) where import Bcc.Config.Git.Rev (gitRev) import Data.Eq import Data.Function import Data.Monoid import Data.Version (showVersion) import Options.Applicative import Paths_bcc_testnet (version) import System.Info (arch, compilerName, compilerVersion, os) import System.IO (IO) import Text.Show import qualified Data.Text as T import qualified System.IO as IO data VersionOptions = VersionOptions deriving (VersionOptions -> VersionOptions -> Bool (VersionOptions -> VersionOptions -> Bool) -> (VersionOptions -> VersionOptions -> Bool) -> Eq VersionOptions forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: VersionOptions -> VersionOptions -> Bool $c/= :: VersionOptions -> VersionOptions -> Bool == :: VersionOptions -> VersionOptions -> Bool $c== :: VersionOptions -> VersionOptions -> Bool Eq, Int -> VersionOptions -> ShowS [VersionOptions] -> ShowS VersionOptions -> String (Int -> VersionOptions -> ShowS) -> (VersionOptions -> String) -> ([VersionOptions] -> ShowS) -> Show VersionOptions forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [VersionOptions] -> ShowS $cshowList :: [VersionOptions] -> ShowS show :: VersionOptions -> String $cshow :: VersionOptions -> String showsPrec :: Int -> VersionOptions -> ShowS $cshowsPrec :: Int -> VersionOptions -> ShowS Show) optsVersion :: Parser VersionOptions optsVersion :: Parser VersionOptions optsVersion = VersionOptions -> Parser VersionOptions forall (f :: * -> *) a. Applicative f => a -> f a pure VersionOptions VersionOptions runVersionOptions :: VersionOptions -> IO () runVersionOptions :: VersionOptions -> IO () runVersionOptions VersionOptions VersionOptions = do String -> IO () IO.putStrLn (String -> IO ()) -> String -> IO () forall a b. (a -> b) -> a -> b $ [String] -> String forall a. Monoid a => [a] -> a mconcat [ String "bcc-node ", Version -> String showVersion Version version , String " - ", String os, String "-", String arch , String " - ", String compilerName, String "-", Version -> String showVersion Version compilerVersion , String "\ngit rev ", Text -> String T.unpack Text gitRev ] cmdVersion :: Mod CommandFields (IO ()) cmdVersion :: Mod CommandFields (IO ()) cmdVersion = String -> ParserInfo (IO ()) -> Mod CommandFields (IO ()) forall a. String -> ParserInfo a -> Mod CommandFields a command String "version" (ParserInfo (IO ()) -> Mod CommandFields (IO ())) -> ParserInfo (IO ()) -> Mod CommandFields (IO ()) forall a b. (a -> b) -> a -> b $ (Parser (IO ()) -> InfoMod (IO ()) -> ParserInfo (IO ())) -> InfoMod (IO ()) -> Parser (IO ()) -> ParserInfo (IO ()) forall a b c. (a -> b -> c) -> b -> a -> c flip Parser (IO ()) -> InfoMod (IO ()) -> ParserInfo (IO ()) forall a. Parser a -> InfoMod a -> ParserInfo a info InfoMod (IO ()) forall m. Monoid m => m idm (Parser (IO ()) -> ParserInfo (IO ())) -> Parser (IO ()) -> ParserInfo (IO ()) forall a b. (a -> b) -> a -> b $ VersionOptions -> IO () runVersionOptions (VersionOptions -> IO ()) -> Parser VersionOptions -> Parser (IO ()) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Parser VersionOptions optsVersion