fedora-releases 0.2.0 → 0.2.1
raw patch · 4 files changed
+53/−20 lines, 4 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Distribution.Fedora.Release: getCurrentFedoraVersion :: IO Natural
+ Distribution.Fedora.Release: getRawhideVersion :: IO Natural
Files
- CHANGELOG.md +4/−0
- fedora-releases.cabal +5/−4
- src/Distribution/Fedora/Branch.hs +19/−10
- src/Distribution/Fedora/Release.hs +25/−6
CHANGELOG.md view
@@ -2,6 +2,10 @@ `fedora-releases` uses [PVP Versioning](https://pvp.haskell.org). +## 0.2.1 (2025-02-07)+- Release: add getRawhideVersion and getCurrentFedoraVersion+- eitherBranch: fix misparse (read error) of "epel/" as branch+ ## 0.2.0 (2024-12-04) - newerBranch now returns Maybe Branch - custom Ord Branch instance to correct the order of EPELNext
fedora-releases.cabal view
@@ -1,27 +1,28 @@ cabal-version: 1.18 name: fedora-releases-version: 0.2.0+version: 0.2.1 synopsis: Library for Fedora release versions description: This library provides the Branch and Release data types and various associated metadata functions for Fedora releases (Fedora and EPEL) needed for packaging development and building.- It uses current release data from Fedora Bodhi.+ It caches current release data from Fedora Bodhi. homepage: https://github.com/juhp/fedora-releases bug-reports: https://github.com/juhp/fedora-releases/issues license: GPL-3 license-file: LICENSE author: Jens Petersen <petersen@fedoraproject.org> maintainer: Jens Petersen <petersen@fedoraproject.org>-copyright: 2018-2022,2024 Jens Petersen+copyright: 2018-2022,2024-2025 Jens Petersen category: Distribution build-type: Simple extra-doc-files: README.md CHANGELOG.md tested-with: GHC == 7.10.3, GHC == 8.0.2, GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.4, GHC == 8.10.7, GHC == 9.0.2,- GHC == 9.2.8, GHC == 9.4.8, GHC == 9.6.6, GHC == 9.8.2+ GHC == 9.2.8, GHC == 9.4.8, GHC == 9.6.6, GHC == 9.8.4,+ GHC == 9.10.1 source-repository head type: git
src/Distribution/Fedora/Branch.hs view
@@ -27,11 +27,11 @@ import Data.Char (isDigit) import Data.Either (partitionEithers)-import Data.List.Extra (delete, elemIndex, replace, sortBy)+import Data.List.Extra (delete, elemIndex, replace, sortBy, spanEnd) import Data.Maybe (mapMaybe) import Data.Ord (comparing, Down(Down)) import Data.Tuple (swap)-import Safe (headDef)+import Safe (headDef, readMay) import Distribution.Fedora.Release @@ -56,14 +56,23 @@ -- | Read a Fedora Branch name, otherwise return branch string eitherBranch :: String -> Either String Branch-eitherBranch "rawhide" = Right Rawhide-eitherBranch ('f':ns) | all isDigit ns = let br = Fedora (read ns) in Right br--- FIXME add proper parsing:-eitherBranch "epel8-next" = Right $ EPELNext 8-eitherBranch "epel9-next" = Right $ EPELNext 9-eitherBranch ('e':'p':'e':'l':n) | all isDigit n = let br = EPEL (read n) in Right br-eitherBranch ('e':'l':n) | all isDigit n = let br = EPEL (read n) in Right br-eitherBranch cs = Left cs+eitherBranch str =+ case str of+ "" -> Left str -- error or NonEmpty?+ "rawhide" -> Right Rawhide+ "epel8-next" -> Right $ EPELNext 8+ "epel9-next" -> Right $ EPELNext 9+ _ ->+ case spanEnd isDigit str of+ (pre,ns) ->+ case readMay ns of+ Nothing -> Left str+ Just num ->+ case pre of+ "f" -> Right $ Fedora num+ "epel" -> Right $ EPEL num+ "el" -> Right $ EPEL num+ _ -> Left str -- -- | Read a Fedora Branch name, otherwise return an error message -- eitherBranch' :: String -> Either String Branch
src/Distribution/Fedora/Release.hs view
@@ -12,11 +12,13 @@ -} module Distribution.Fedora.Release- ( Release(..),- getActiveReleases,- getFedoraReleases,- getEPELReleases,- getBranchRelease+ ( Release(..)+ , getActiveReleases+ , getFedoraReleases+ , getEPELReleases+ , getBranchRelease+ , getRawhideVersion+ , getCurrentFedoraVersion ) where @@ -24,8 +26,12 @@ import Data.Aeson(Object) import Data.Maybe (mapMaybe) import Distribution.Fedora.BodhiReleases+import Numeric.Natural (Natural)+import Safe (headMay) -- | Fedora Release data+--+-- See <https://bodhi.fedoraproject.org/releases/> data Release = Release { releaseName :: String, releaseVersion :: String,@@ -63,7 +69,7 @@ compare r1 r2 = compare (releaseName r1) (releaseName r2) --- FIXME remove containers and flatpaks+-- containers and flatpaks are filtered out by readRelease -- | Get list of all current Fedora Project releases (from Bodhi) getActiveReleases :: IO [Release] getActiveReleases =@@ -96,3 +102,16 @@ [] -> error $ "release not found for branch " ++ br [rel] -> return rel _ -> error $ "multiple releases for " ++ br ++ ":\n" ++ unwords (map releaseName rels)++-- | Get the Fedora release version of Rawhide+getRawhideVersion :: IO Natural+getRawhideVersion =+ read . releaseVersion <$> getBranchRelease "rawhide"++-- | Get the latest current stable Fedora release version+getCurrentFedoraVersion :: IO Natural+getCurrentFedoraVersion = do+ rels <- filter ((== "current") . releaseState) <$> getFedoraReleases+ case headMay rels of+ Just rel -> return $ read $ releaseVersion rel+ Nothing -> error "current fedora release not found"