on master help sign in
Provide replacement Github names #226
ceac2c4Michael Snoyman
Stackage/Config.hs+18
@@ -3,7 +3,9 @@ module Stackage.Config where
3
3
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)
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+ ]
Stackage/LoadDatabase.hs+2−1
@@ -43,6 +43,7 @@ import Distribution.Text (simpleParse)
43import Distribution.Version (Version (Version),
43import Distribution.Version (Version (Version),
44 unionVersionRanges,
44 unionVersionRanges,
45 withinRange)
45 withinRange)
46+import Stackage.Config (convertGithubUser)
46import Stackage.Types
47import Stackage.Types
47import Stackage.Util
48import Stackage.Util
48import System.Directory (doesFileExist, getDirectoryContents)
49import System.Directory (doesFileExist, getDirectoryContents)
@@ -184,7 +185,7 @@ loadPackageDB settings coreMap core deps = do
184 , Set.fromList $ map depName $ testBenchBuildInfo gpd
185 , Set.fromList $ map depName $ testBenchBuildInfo gpd
185 , Just gpd
186 , Just gpd
186 , Set.fromList $ map (Executable . fst) $ condExecutables gpd
187 , Set.fromList $ map (Executable . fst) $ condExecutables gpd
187− , listToMaybe $ catMaybes
188+ , fmap convertGithubUser $ listToMaybe $ catMaybes
188 $ parseGithubUserHP (homepage $ packageDescription gpd)
189 $ parseGithubUserHP (homepage $ packageDescription gpd)
189 : map parseGithubUserSR (sourceRepos $ packageDescription gpd)
190 : map parseGithubUserSR (sourceRepos $ packageDescription gpd)
190 )
191 )