packages feed

hix-0.7.0: lib/Hix/Managed/BuildOutput/CommitMsg.hs

module Hix.Managed.BuildOutput.CommitMsg where

import qualified Data.Text as Text
import Exon (exon)

import qualified Hix.Managed.Data.BuildOutput
import Hix.Managed.Data.BuildOutput (BuildOutput, ModifiedId)
import Hix.Pretty (showP)

commitMessage :: Int -> Text -> Text
commitMessage num names
  | num <= 3
  = [exon|Bump #{names}|]
  | otherwise
  = [exon|Bump #{show num} dependencies|]

candidateList :: [ModifiedId] -> [Text]
candidateList = fmap \ c -> [exon|* #{showP c}|]

commitBody :: [ModifiedId] -> [Text]
commitBody candidates =
  ["New versions:", ""] ++ candidateList candidates

commit :: BuildOutput -> Maybe (Text, [Text])
commit output =
  output.modifiedNames <&> \ names ->
    (commitMessage (length output.modified) names, commitBody output.modified)

formatCommit :: BuildOutput -> Maybe Text
formatCommit output =
  commit output <&> \ (msg, body) ->
    Text.intercalate "\n" ([msg, ""] ++ body)