-- |
-- Module : Dists
-- Copyright : (C) 2014-2017 Jens Petersen
--
-- Maintainer : Jens Petersen <petersen@fedoraproject.org>
-- Stability : alpha
-- Portability : portable
--
-- Explanation: Fedora dist metadata
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation, either version 3 of the License, or
-- (at your option) any later version.
module Dists (Dist,
dists,
distBranch,
distShort,
distVersion,
distRepo,
distTag,
distTarget,
distUpdates,
distOverride,
hackageRelease,
releaseVersion,
rawhide) where
import Data.Char (isNumber)
import Data.Maybe (fromMaybe, maybe)
import Utils ((+-+))
type Dist = String
dists :: [Dist]
dists = [rawhide, "f27", "f26", "f25", "epel7"]
rawhide :: String
rawhide = "f28"
sidetag :: Maybe String
sidetag = Nothing -- Just "ghc"
hackageRelease :: String
hackageRelease = "f27"
distBranch :: Dist -> String
distBranch d | d == rawhide = "master"
| otherwise = d
splitDist :: Dist -> (String, String)
splitDist = break isNumber
distShort :: Dist -> String
distShort = fst . splitDist
distVersion :: Dist -> String
distVersion = snd . splitDist
distRepo :: Dist -> String
distRepo d | d == rawhide = "rawhide"
| distShort d == "f" = "fedora"
| distShort d `elem` ["epel", "el"] = "epel"
distRepo d = error $ "Unknown dist" +-+ d
distUpdates :: Dist -> Maybe String
distUpdates d | distShort d == "f" = Just "updates"
distUpdates _ = Nothing
distOverride :: Dist -> Bool
distOverride d = d `notElem` [rawhide, "f28" {-, "epel7"-}]
distTag :: Dist -> String
distTag d = d ++ "-" ++ fromMaybe "build" sidetag
distTarget :: Dist -> String
distTarget d = maybe d (\ suff -> d ++ "-" ++ suff) sidetag
releaseVersion :: Dist -> String
releaseVersion r | r == rawhide = "rawhide"
releaseVersion r = distVersion r