{-# LANGUAGE TemplateHaskell #-}
module Wrench.Misc (wrenchVersion) where
import Data.Version (showVersion)
import Language.Haskell.TH.Env (envQ)
import Paths_wrench (version)
import Relude
wrenchVersion :: Text
wrenchVersion :: Text
wrenchVersion = Text
ver Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
provenance
where
suffix, hash, date :: String
suffix :: String
suffix = String -> Maybe String -> String
forall a. a -> Maybe a -> a
fromMaybe String
"" $$(envQ "VERSION_SUFFIX")
hash :: String
hash = String -> Maybe String -> String
forall a. a -> Maybe a -> a
fromMaybe String
"" $$(envQ "GIT_HASH")
date :: String
date = String -> Maybe String -> String
forall a. a -> Maybe a -> a
fromMaybe String
"" $$(envQ "GIT_DATE")
ver :: Text
ver = String -> Text
forall a. ToText a => a -> Text
toText (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ Version -> String
showVersion Version
version String -> String -> String
forall a. Semigroup a => a -> a -> a
<> if String
suffix String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
"" then String
"" else String
"-" String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
suffix
provenance :: Text
provenance = String -> Text
forall a. ToText a => a -> Text
toText (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ case (String
hash, String
date) of
(String
"", String
_) -> String
""
(String
h, String
"") -> String
" (" String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String -> String
forall a. Int -> [a] -> [a]
take Int
7 String
h String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
")"
(String
h, String
d) -> String
" (" String -> String -> String
forall a. Semigroup a => a -> a -> a
<> Int -> String -> String
forall a. Int -> [a] -> [a]
take Int
7 String
h String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
") " String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
d