hercules-ci-agent-0.9.12: src/Hercules/Agent/NixFile/GitSource.hs
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DerivingVia #-}
module Hercules.Agent.NixFile.GitSource where
import Data.Aeson (FromJSON, ToJSON)
import Data.Text qualified 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,
remoteHttpUrl :: Maybe Text,
remoteSshUrl :: Maybe Text,
webUrl :: Maybe Text,
forgeType :: Maybe Text,
owner :: Maybe Text,
name :: Maybe Text
}
deriving (Generic, ToJSON, FromJSON, Show, Eq)
deriving (ToRawValue) via (ViaJSON GitSource)
shortRevFromRev :: Text -> Text
shortRevFromRev = T.take 7
branchFromRef :: Text -> Maybe Text
branchFromRef = T.stripPrefix "refs/heads/"
tagFromRef :: Text -> Maybe Text
tagFromRef = T.stripPrefix "refs/tags/"