From 0ddfd2dd3a84a010f28d49baee808e794f89024a Mon Sep 17 00:00:00 2001
From: Eduardo Trujillo <ed@chromabits.com>
Date: Fri, 25 Dec 2020 23:20:20 -0800
Subject: [PATCH] refactor(Types): Make TagRef have an otpional Versioning

---
 src/Shift/Git.hs       |  2 +-
 src/Shift/Rendering.hs | 11 ++++++++---
 src/Shift/Types.hs     |  2 +-
 3 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/Shift/Git.hs b/src/Shift/Git.hs
index 929a5e7..8f72dd7 100644
--- a/src/Shift/Git.hs
+++ b/src/Shift/Git.hs
@@ -49,7 +49,7 @@ import CMarkGFM (NodeType(DOCUMENT), NodeType(DOCUMENT), nodeToCommonmark, nodeT
 parseTag :: RefName -> Either (ParseErrorBundle Text Void) TagRef
 parseTag ref = case versioning . cs . refNameRaw $ ref of
   Left e -> Left e
-  Right v -> Right (TagRef ref v)
+  Right v -> Right (TagRef ref (Just v))
 
 tempMain :: ShiftOptions -> IO ()
 tempMain opts = do
diff --git a/src/Shift/Rendering.hs b/src/Shift/Rendering.hs
index ea1944d..710ff9d 100644
--- a/src/Shift/Rendering.hs
+++ b/src/Shift/Rendering.hs
@@ -10,13 +10,13 @@ import Control.Monad.IO.Class (MonadIO, liftIO)
 import Control.Monad.State (MonadState)
 import Control.Monad.Trans.Writer (WriterT (runWriterT), execWriterT, runWriter)
 import Control.Monad.Trans.Writer.Lazy (tell)
-import Data.Git (Commit, Ref, commitAuthor)
+import Data.Git (RefName(refNameRaw), RefName(refNameRaw), Commit, Ref, commitAuthor)
 import Data.List (sortOn)
 import Data.Maybe (catMaybes)
 import Data.Monoid ((<>))
 import Data.String.Conversions (cs)
 import Data.Text (Text)
-import qualified Data.Text as T (take)
+import qualified Data.Text as T (pack, pack, take)
 import qualified Data.Text.IO as TIO (putStr, putStrLn)
 import Data.Versions (prettyV)
 import Shift.Types
@@ -109,7 +109,12 @@ renderMergeCommit (ref, commit, MergeCommit subject) = do
 renderRange :: TagRef -> TagRef -> Text
 renderRange tx ty =
   mconcat
-    [prettyV . _tVersioning $ tx, " to ", prettyV . _tVersioning $ ty]
+    [renderTagRef tx, " to ", renderTagRef ty]
+
+renderTagRef :: TagRef -> Text 
+renderTagRef tr = case _tVersioning tr of
+  Just versioning -> prettyV versioning
+  Nothing -> T.pack . refNameRaw $ _tRef tr
 
 bold :: Text -> Node
 bold x = parentNode STRONG [textNode x]
diff --git a/src/Shift/Types.hs b/src/Shift/Types.hs
index 46e9252..bdbc49c 100644
--- a/src/Shift/Types.hs
+++ b/src/Shift/Types.hs
@@ -99,7 +99,7 @@ data ConventionalCommit = ConventionalCommit
 
 data TagRef = TagRef
   { _tRef        :: RefName
-  , _tVersioning :: Versioning
+  , _tVersioning :: Maybe Versioning
   } deriving (Show, Eq)
 
 instance Ord TagRef where
-- 
GitLab