{-# LANGUAGE CPP #-}
#ifdef GIT_REV
{-# LANGUAGE TemplateHaskell #-}
#endif
module Distribution.Client.Version
( cabalInstallVersion
, cabalInstallGitInfo
) where
import Distribution.Version
import qualified Paths_cabal_install as PackageInfo
#ifdef GIT_REV
import Data.Either (isLeft)
import GitHash
( giHash
, giBranch
, giCommitDate
, tGitInfoCwdTry
)
#endif
cabalInstallVersion :: Version
cabalInstallVersion :: Version
cabalInstallVersion = Version -> Version
mkVersion' Version
PackageInfo.version
cabalInstallGitInfo :: String
#ifdef GIT_REV
cabalInstallGitInfo :: [Char]
cabalInstallGitInfo = if [Char]
giHash' [Char] -> [Char] -> Bool
forall a. Eq a => a -> a -> Bool
== [Char]
""
then [Char]
""
else [[Char]] -> [Char]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat [ [Char]
"(commit "
, [Char]
giHash'
, [Char]
branchInfo
, [Char]
", "
, ([Char] -> [Char])
-> (GitInfo -> [Char]) -> Either [Char] GitInfo -> [Char]
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either ([Char] -> [Char] -> [Char]
forall a b. a -> b -> a
const [Char]
"") GitInfo -> [Char]
giCommitDate Either [Char] GitInfo
gi'
, [Char]
")"
]
where
gi' :: Either [Char] GitInfo
gi' = $$Bool
Int
[Char]
[[Char]]
[Char]
-> [Char]
-> Bool
-> [Char]
-> Int
-> [[Char]]
-> [Char]
-> [Char]
-> [Char]
-> GitInfo
GitInfo -> Either [Char] GitInfo
forall a b. b -> Either a b
tGitInfoCwdTry
giHash' :: [Char]
giHash' = Int -> [Char] -> [Char]
forall a. Int -> [a] -> [a]
take Int
7 ([Char] -> [Char])
-> (Either [Char] GitInfo -> [Char])
-> Either [Char] GitInfo
-> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Char] -> [Char])
-> (GitInfo -> [Char]) -> Either [Char] GitInfo -> [Char]
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either ([Char] -> [Char] -> [Char]
forall a b. a -> b -> a
const [Char]
"") GitInfo -> [Char]
giHash (Either [Char] GitInfo -> [Char])
-> Either [Char] GitInfo -> [Char]
forall a b. (a -> b) -> a -> b
$ Either [Char] GitInfo
gi'
branchInfo :: [Char]
branchInfo | Either [Char] GitInfo -> Bool
forall a b. Either a b -> Bool
isLeft Either [Char] GitInfo
gi' = [Char]
""
| ([Char] -> [Char])
-> (GitInfo -> [Char]) -> Either [Char] GitInfo -> [Char]
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either [Char] -> [Char]
forall a. a -> a
id GitInfo -> [Char]
giBranch Either [Char] GitInfo
gi' [Char] -> [Char] -> Bool
forall a. Eq a => a -> a -> Bool
== [Char]
"master" = [Char]
""
| Bool
otherwise = [Char]
" on " [Char] -> [Char] -> [Char]
forall a. Semigroup a => a -> a -> a
<> ([Char] -> [Char])
-> (GitInfo -> [Char]) -> Either [Char] GitInfo -> [Char]
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either [Char] -> [Char]
forall a. a -> a
id GitInfo -> [Char]
giBranch Either [Char] GitInfo
gi'
#else
cabalInstallGitInfo = ""
#endif