packages feed

futhark-0.22.2: src/Futhark/Version.hs

{-# LANGUAGE TemplateHaskell #-}

-- | This module exports version information about the Futhark
-- compiler.
module Futhark.Version
  ( version,
    versionString,
  )
where

import Data.ByteString.Char8 qualified as BS
import Data.FileEmbed
import Data.Version
import Futhark.Util (trim)
import GitHash
import Paths_futhark qualified

{-# NOINLINE version #-}

-- | The version of Futhark that we are using.  This is equivalent to
-- the version defined in the .cabal file.
version :: Version
version = Paths_futhark.version

{-# NOINLINE versionString #-}

-- | The version of Futhark that we are using, as a 'String'.
versionString :: String
versionString =
  showVersion version
    ++ gitversion $$tGitInfoCwdTry
  where
    gitversion (Left _) =
      case commitIdFromFile of
        Nothing -> ""
        Just commit -> "\ngit: " <> commit
    gitversion (Right gi) =
      concat
        [ "\n",
          "git: ",
          branch,
          take 7 $ giHash gi,
          " (",
          giCommitDate gi,
          ")",
          dirty
        ]
      where
        branch
          | giBranch gi == "master" = ""
          | otherwise = giBranch gi ++ " @ "
        dirty = if giDirty gi then " [modified]" else ""

commitIdFromFile :: Maybe String
commitIdFromFile = trim . BS.unpack <$> $(embedFileIfExists "./commit-id")