packages feed

neuron-0.4.0.0: src/app/Neuron/Version.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE NoImplicitPrelude #-}

module Neuron.Version where

import qualified Data.Text as T
import Data.Version (parseVersion, showVersion)
import qualified Neuron.Version.RepoVersion as RepoVersion
import Paths_neuron (version)
import Relude
import Text.ParserCombinators.ReadP (readP_to_S)

-- | Neuron cabal library version
neuronVersion :: Text
neuronVersion = toText $ showVersion version

-- | Neuron full version (cabal library version + git revision)
neuronVersionFull :: Text
neuronVersionFull
  | Just gitVersion <- RepoVersion.version =  T.concat [neuronVersion, " (", gitVersion, ")"]
  | otherwise = neuronVersion

-- | Check if `neuronVersion` is older than the given version
olderThan :: Text -> Bool
olderThan s =
  case reverse (readP_to_S parseVersion (toString s)) of
    (v2, _) : _ -> version < v2
    x -> error $ "Version parse error: " <> show x