mirror of
https://github.com/commercialhaskell/stackage-server.git
synced 2026-01-26 19:01:56 +01:00
Badges
This commit is contained in:
parent
b0ec509d9e
commit
b798ac8236
@ -6,6 +6,7 @@ module Handler.Package
|
|||||||
( getPackageR
|
( getPackageR
|
||||||
, getPackageSnapshotsR
|
, getPackageSnapshotsR
|
||||||
, packagePage
|
, packagePage
|
||||||
|
, getPackageBadgeR
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import Data.Char
|
import Data.Char
|
||||||
@ -13,15 +14,34 @@ import qualified Data.Text as T
|
|||||||
import qualified Data.Text.Encoding as T
|
import qualified Data.Text.Encoding as T
|
||||||
import qualified Data.Text.Lazy as LT
|
import qualified Data.Text.Lazy as LT
|
||||||
import Distribution.Package.ModuleForest
|
import Distribution.Package.ModuleForest
|
||||||
|
import Graphics.Badge.Barrier
|
||||||
|
import Control.Lens
|
||||||
import Import
|
import Import
|
||||||
import qualified Text.Blaze.Html.Renderer.Text as LT
|
import qualified Text.Blaze.Html.Renderer.Text as LT
|
||||||
import Text.Email.Validate
|
import Text.Email.Validate
|
||||||
import Stackage.Database
|
import Stackage.Database
|
||||||
|
|
||||||
-- | Page metadata package.
|
-- | Page metadata package.
|
||||||
getPackageR :: PackageName -> Handler Html
|
getPackageR :: PackageName -> Handler Html
|
||||||
getPackageR = packagePage Nothing
|
getPackageR = packagePage Nothing
|
||||||
|
|
||||||
|
getPackageBadgeR :: PackageName -> SnapshotBranch -> Handler TypedContent
|
||||||
|
getPackageBadgeR pname branch = do
|
||||||
|
snapName <- maybe notFound pure =<< newestSnapshot branch
|
||||||
|
Entity sid _ <- maybe notFound pure =<< lookupSnapshot snapName
|
||||||
|
mVersion <- do mSnapPackage <- lookupSnapshotPackage sid (unPackageName pname)
|
||||||
|
pure (Version . snapshotPackageVersion . entityVal <$> mSnapPackage)
|
||||||
|
respond typeSvg $ renderStackageBadge snapName mVersion
|
||||||
|
|
||||||
|
renderStackageBadge :: SnapName -> Maybe Version -> LByteString
|
||||||
|
renderStackageBadge (badgeLabel -> label) = \case
|
||||||
|
Nothing -> renderBadge (flat & right .~ red) label "not available"
|
||||||
|
Just (Version x) -> renderBadge flat label x
|
||||||
|
|
||||||
|
badgeLabel :: SnapName -> Text
|
||||||
|
badgeLabel (SNNightly _) = "stackage nightly"
|
||||||
|
badgeLabel (SNLts x _) = "stackage lts-" <> tshow x
|
||||||
|
|
||||||
packagePage :: Maybe (SnapName, Version)
|
packagePage :: Maybe (SnapName, Version)
|
||||||
-> PackageName
|
-> PackageName
|
||||||
-> Handler Html
|
-> Handler Html
|
||||||
|
|||||||
@ -30,6 +30,7 @@
|
|||||||
/haddock/#SnapName/*Texts HaddockR GET
|
/haddock/#SnapName/*Texts HaddockR GET
|
||||||
/package/#PackageName PackageR GET
|
/package/#PackageName PackageR GET
|
||||||
/package/#PackageName/snapshots PackageSnapshotsR GET
|
/package/#PackageName/snapshots PackageSnapshotsR GET
|
||||||
|
/package/#PackageName/badge/#SnapshotBranch PackageBadgeR GET
|
||||||
/package PackageListR GET
|
/package PackageListR GET
|
||||||
|
|
||||||
/authors AuthorsR GET
|
/authors AuthorsR GET
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
resolver: lts-3.8
|
resolver: lts-3.8
|
||||||
extra-deps:
|
extra-deps:
|
||||||
- these-0.6.1.0
|
- these-0.6.1.0
|
||||||
|
- barrier-0.1.0
|
||||||
|
|||||||
@ -92,6 +92,7 @@ library
|
|||||||
base >= 4.8 && < 4.9
|
base >= 4.8 && < 4.9
|
||||||
, aeson >= 0.8 && < 0.9
|
, aeson >= 0.8 && < 0.9
|
||||||
, aws >= 0.12 && < 0.13
|
, aws >= 0.12 && < 0.13
|
||||||
|
, barrier >= 0.1 && < 0.2
|
||||||
, base16-bytestring >= 0.1 && < 0.2
|
, base16-bytestring >= 0.1 && < 0.2
|
||||||
, blaze-markup >= 0.7 && < 0.8
|
, blaze-markup >= 0.7 && < 0.8
|
||||||
, byteable >= 0.1 && < 0.2
|
, byteable >= 0.1 && < 0.2
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user