@@ -3,7 +3,9 @@ module Stackage.Config where
33
44import Control.Monad (when)
55import Control.Monad.Trans.Writer (execWriter, tell)
6+import Data.Char (toLower)
67import qualified Data.Map as Map
8+import Data.Maybe (fromMaybe)
79import Data.Set (fromList, singleton)
810import Distribution.Text (simpleParse)
911import Stackage.Types
@@ -452,3 +454,19 @@ defaultStablePackages ghcVer requireHP = unPackageMap $ execWriter $ do
452454 case simpleParse range of
453455 Nothing -> error $ "Invalid range " ++ show range ++ " for " ++ package
454456 Just range' -> tell $ PackageMap $ Map.singleton (PackageName package) (range', Maintainer maintainer)
457+
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:
461+--
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
466+ where
467+ pairs = Map.fromList
468+ [ ("diagrams", "byorgey")
469+ , ("yesodweb", "snoyberg")
470+ , ("fpco", "snoyberg")
471+ , ("faylang", "bergmark")
472+ ]