packages feed

hurl-workbench-cli-0.1.0.0: src/HurlWorkbench/Cli/Version.hs

{-# LANGUAGE CPP #-}
{-# LANGUAGE TemplateHaskell #-}

-- | Build identity shown by @--version@.
module HurlWorkbench.Cli.Version
  ( versionText,
    revisionText,
  )
where

import Data.Version (showVersion)
import GitHash qualified
import Paths_hurl_workbench_cli qualified as Package

-- | The package version followed by the short build revision.
versionText :: String
versionText = "hurl-workbench " <> showVersion Package.version <> " (" <> revisionText <> ")"

-- | Prefer the reproducible revision injected by Nix. Local builds fall back
-- to the repository revision captured by Template Haskell; source archives
-- without either form of metadata remain buildable.
revisionText :: String
#ifdef GIT_HASH
revisionText = take 7 GIT_HASH
#else
revisionText =
  revisionFromGitInfo $$(GitHash.tGitInfoCwdTry)

revisionFromGitInfo :: Either String GitHash.GitInfo -> String
revisionFromGitInfo = \case
    Right gitInfo -> take 7 (GitHash.giHash gitInfo)
    Left _ -> "unknown"
#endif