packages feed

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 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"