packages feed

cab-0.2.22: Distribution/Cab/Version.hs

{-# LANGUAGE CPP #-}

module Distribution.Cab.Version (
    Ver,
    toVer,
    toVersion,
    verToString,
    version,
    versionToString,
) where

import Distribution.Cab.Utils
import Distribution.Version

-- | Package version.
newtype Ver = Ver [Int] deriving (Eq, Ord, Read, Show)

-- | Creating 'Ver'.
--
-- >>> toVer [1,2,3]
-- Ver [1,2,3]
toVer :: [Int] -> Ver
toVer is = Ver is

-- | Creating 'Version' in Cabal.
toVersion :: [Int] -> Version
#if MIN_VERSION_Cabal(2,0,0)
toVersion is = mkVersion is
#else
toVersion is = Version is []
#endif

-- | From 'Version' to 'String'
--
-- >>> verToString $ toVer [1,2,3]
-- "1.2.3"
verToString :: Ver -> String
verToString (Ver ver) = toDotted ver

-- | From 'Version' in Cabal to 'Ver'.
--
-- >>> version $ toVersion [1,2,3]
-- Ver [1,2,3]
version :: Version -> Ver
#if MIN_VERSION_Cabal(2,0,0)
version = Ver . versionNumbers
#else
version = Ver . versionBranch
#endif

-- | From 'Version' in Cabal to 'String'.
--
-- >>> versionToString $ toVersion [1,2,3]
-- "1.2.3"
versionToString :: Version -> String
versionToString = verToString . version