printForbidden and filterForbidden

This commit is contained in:
Michael Snoyman 2013-07-07 22:13:39 +03:00
parent 612252625d
commit c02e3ff8e1
2 changed files with 19 additions and 4 deletions

View File

@ -2,6 +2,8 @@
-- uploaders. -- uploaders.
module Stackage.Uploads module Stackage.Uploads
( checkUploads ( checkUploads
, printForbidden
, filterForbidden
) where ) where
import Control.Exception (assert, evaluate) import Control.Exception (assert, evaluate)
@ -14,13 +16,14 @@ import Data.Set (Set)
import qualified Data.Set as Set import qualified Data.Set as Set
import Data.Time (UTCTime, parseTime) import Data.Time (UTCTime, parseTime)
import Network.HTTP (getRequest, getResponseBody, simpleHTTP) import Network.HTTP (getRequest, getResponseBody, simpleHTTP)
import qualified Stackage.Types as ST
import System.Directory (doesFileExist) import System.Directory (doesFileExist)
import System.Exit (exitFailure) import System.Exit (exitFailure)
import System.Locale import System.Locale
checkUploads :: FilePath -- ^ allowed checkUploads :: FilePath -- ^ allowed
-> FilePath -- ^ new allowed -> FilePath -- ^ new allowed
-> IO () -> IO Forbidden
checkUploads allowedFP newAllowedFP = do checkUploads allowedFP newAllowedFP = do
putStrLn "Getting upload log" putStrLn "Getting upload log"
uploadLog <- getUploadLog uploadLog <- getUploadLog
@ -37,7 +40,7 @@ checkUploads allowedFP newAllowedFP = do
putStrLn $ "Newly uploaded packages detected, writing to " ++ newAllowedFP putStrLn $ "Newly uploaded packages detected, writing to " ++ newAllowedFP
writeAllowed newAllowedFP allowed' writeAllowed newAllowedFP allowed'
printForbidden forbidden return forbidden
-- Define a Map newtype wrapper with a proper Monoid instance. -- Define a Map newtype wrapper with a proper Monoid instance.
newtype MonoidMap k v = MonoidMap { unMonoidMap :: Map k v } newtype MonoidMap k v = MonoidMap { unMonoidMap :: Map k v }
@ -151,3 +154,15 @@ printForbidden (MonoidMap forbidden) = unless (Map.null forbidden) $ do
, show time , show time
] ]
exitFailure exitFailure
filterForbidden :: ST.BuildPlan
-> Forbidden
-> Forbidden
filterForbidden bp =
MonoidMap . Map.filterWithKey isIncluded . unMonoidMap
where
isIncluded pn _ = ST.PackageName pn `Set.member` allPackages
allPackages =
Map.keysSet (ST.bpPackages bp) `Set.union`
ST.bpCore bp `Set.union`
Map.keysSet (ST.bpOptionalCore bp)

View File

@ -9,7 +9,7 @@ import Stackage.Select (defaultSelectSettings, select)
import Stackage.Tarballs (makeTarballs) import Stackage.Tarballs (makeTarballs)
import Stackage.Test (runTestSuites) import Stackage.Test (runTestSuites)
import Stackage.Types import Stackage.Types
import Stackage.Uploads (checkUploads) import Stackage.Uploads (checkUploads, printForbidden)
import Stackage.Util (allowPermissive) import Stackage.Util (allowPermissive)
import System.Environment (getArgs, getProgName) import System.Environment (getArgs, getProgName)
import System.IO (hFlush, stdout) import System.IO (hFlush, stdout)
@ -85,7 +85,7 @@ main :: IO ()
main = do main = do
args <- getArgs args <- getArgs
case args of case args of
["uploads"] -> checkUploads "allowed.txt" "new-allowed.txt" ["uploads"] -> checkUploads "allowed.txt" "new-allowed.txt" >>= printForbidden
"select":rest -> do "select":rest -> do
SelectArgs {..} <- parseSelectArgs rest SelectArgs {..} <- parseSelectArgs rest
ghcVersion <- getGhcVersion ghcVersion <- getGhcVersion