diff options
author | Alexander Foremny <aforemny@posteo.de> | 2023-12-07 03:58:21 +0100 |
---|---|---|
committer | Alexander Foremny <aforemny@posteo.de> | 2023-12-07 04:01:23 +0100 |
commit | c1ff403387064ff0027b9e762cc6f6a8fa20c8d9 (patch) | |
tree | 62b9a4cfccfc4fce42055ef94b9de41d1dfcc0a7 /app/Git | |
parent | 3c6e62b75293b6625509ade3c278fc2d4d147c30 (diff) |
chore: move remaining `History.*` modules outside of `History`
Diffstat (limited to 'app/Git')
-rw-r--r-- | app/Git/CommitHash.hs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/app/Git/CommitHash.hs b/app/Git/CommitHash.hs new file mode 100644 index 0000000..db7a478 --- /dev/null +++ b/app/Git/CommitHash.hs @@ -0,0 +1,37 @@ +module Git.CommitHash + ( CommitHash (..), + toShortText, + toText, + ) +where + +import Data.Binary (Binary) +import Data.Maybe (fromMaybe) +import Data.Text qualified as T +import GHC.Generics (Generic) +import Render qualified as P + +data CommitHash + = WorkingTree + | Commit T.Text + deriving (Eq, Show, Binary, Generic) + +toShortText :: CommitHash -> Maybe T.Text +toShortText = fmap (T.take 7) . toText + +toText :: CommitHash -> Maybe T.Text +toText WorkingTree = Nothing +toText (Commit hash) = Just hash + +instance P.Render CommitHash where + render = P.render . P.Detailed + +instance P.Render (P.Detailed CommitHash) where + render (P.Detailed commitHash) = + P.styled [P.color P.Yellow] $ + P.render (fromMaybe "<dirty>" (toText commitHash)) + +instance P.Render (P.Summarized CommitHash) where + render (P.Summarized commitHash) = + P.styled [P.color P.Yellow] $ + P.render (fromMaybe "<dirty>" (toShortText commitHash)) |