@@ -3,7 +3,9 @@ module Stackage.Config where
4import Control.Monad (when)
4import Control.Monad (when)
5import Control.Monad.Trans.Writer (execWriter, tell)
5import Control.Monad.Trans.Writer (execWriter, tell)
6+import Data.Char (toLower)
6import qualified Data.Map as Map
7import qualified Data.Map as Map
8+import Data.Maybe (fromMaybe)
7import Data.Set (fromList, singleton)
9import Data.Set (fromList, singleton)
8import Distribution.Text (simpleParse)
10import Distribution.Text (simpleParse)
9import Stackage.Types
11import Stackage.Types
@@ -452,3 +454,19 @@ defaultStablePackages ghcVer requireHP = unPackageMap $ execWriter $ do
452 case simpleParse range of
454 case simpleParse range of
453 Nothing -> error $ "Invalid range " ++ show range ++ " for " ++ package
455 Nothing -> error $ "Invalid range " ++ show range ++ " for " ++ package
454 Just range' -> tell $ PackageMap $ Map.singleton (PackageName package) (range', Maintainer maintainer)
456 Just range' -> tell $ PackageMap $ Map.singleton (PackageName package) (range', Maintainer maintainer)
458+-- | Replacement Github users. This is useful when a project is owned by an
459+-- organization, and you'd like to ping either an individual or a team in that
460+-- organization. See:
462+-- https://github.com/fpco/stackage/issues/226#issuecomment-45644142
463+convertGithubUser :: String -> String
464+convertGithubUser x =
465+ fromMaybe x $ Map.lookup (map toLower x) pairs
467+ pairs = Map.fromList
468+ [ ("diagrams", "byorgey")
469+ , ("yesodweb", "snoyberg")
470+ , ("fpco", "snoyberg")
471+ , ("faylang", "bergmark")