hercules-ci-agent-0.9.0: src/Hercules/Agent/NixFile/GitSource.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DerivingVia #-}
module Hercules.Agent.NixFile.GitSource where
import Data.Aeson (FromJSON, ToJSON)
import qualified Data.Text as T
import Hercules.CNix.Expr (ToRawValue, ViaJSON (ViaJSON))
import Protolude
data GitSource = GitSource
{ outPath :: Text,
ref :: Text,
rev :: Text,
shortRev :: Text,
branch :: Maybe Text,
tag :: Maybe Text
}
deriving (Generic, ToJSON, FromJSON, Show, Eq)
deriving (ToRawValue) via (ViaJSON GitSource)
fromRefRevPath :: Text -> Text -> Text -> GitSource
fromRefRevPath aRef aRev path =
GitSource
{ outPath = path,
ref = aRef,
rev = aRev,
shortRev = T.take 7 aRev,
branch = T.stripPrefix "refs/heads/" aRef,
tag = T.stripPrefix "refs/tags/" aRef
}