packages feed

fedora-haskell-tools-0.3: Dists.hs

-- |
-- 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,
              releaseVersion,
              rawhide) where

import Data.Char (isNumber)
import Utils ((+-+))

type Dist = String

dists :: [Dist]
dists = [rawhide, "f27", "f26", "f25", "epel7"]

rawhide :: String
rawhide = "f28"

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 == rawhide = "f28" ++ "-ghc" -}
          {- | d == "epel7" = d ++ "-ghc" -}
          {- | otherwise -} = d ++ "-build"

distTarget  :: Dist -> Maybe String
distTarget d | d `elem` [rawhide, "epel7"] = Nothing -- Just $ d ++ "-ghc"
             | otherwise = Nothing

releaseVersion :: Dist -> String
releaseVersion "epel7" = "7"
releaseVersion r | head r == 'f' = tail r
releaseVersion _ = error "Unknown release"