cabal-install-3.18.1.0: src/Distribution/Client/Version.hs
{-# LANGUAGE CPP #-}
#ifdef GIT_REV
{-# LANGUAGE TemplateHaskell #-}
#endif
-- | Provides the version number of @cabal-install@.
module Distribution.Client.Version
( cabalInstallVersion
, cabalInstallGitInfo
) where
import Data.List (intercalate)
import qualified Data.Version as DV
import qualified Distribution.Compat.SysInfo as SIC
import Distribution.Version
import qualified System.Info as SI
import qualified Paths_cabal_install as PackageInfo
#ifdef GIT_REV
import Data.Either (isLeft)
import GitHash
( giHash
, giBranch
, giCommitDate
, tGitInfoCwdTry
)
#endif
-- |
-- This value determines the output of `cabal-install --version`.
cabalInstallVersion :: Version
cabalInstallVersion = mkVersion' PackageInfo.version
-- |
-- `cabal-install` compiler information.
cabalInstallCompilerInfo :: String
cabalInstallCompilerInfo =
concat
[ SI.compilerName
, " "
, intercalate "." (map show (DV.versionBranch SIC.fullCompilerVersion))
, " on "
, SI.os
, " "
, SI.arch
]
-- |
-- `cabal-install` Git information. Only filled in if built in a Git tree in
-- development mode and Template Haskell is available.
cabalInstallGitInfo :: String
#ifdef GIT_REV
cabalInstallGitInfo = if giHash' == ""
then ""
else concat [ "(commit "
, giHash'
, branchInfo
, either (const "") ((", " ++) . giCommitDate) gi'
, ")"
]
where
gi' = $$tGitInfoCwdTry
giHash' = take 7 . either (const "") giHash $ gi'
branch = either id giBranch gi'
branchInfo | isLeft gi' = ""
| branch == "master" = ""
| otherwise = " on " <> branch
#else
cabalInstallGitInfo = ""
#endif