From 55880e0f15d23cb38748081bc1d48a2cd32b654a Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Thu, 26 Mar 2015 17:57:28 +0200 Subject: [PATCH] Treat package list instead as a set --- Handler/BuildPlan.hs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Handler/BuildPlan.hs b/Handler/BuildPlan.hs index 647a1ce..9c6d2ba 100644 --- a/Handler/BuildPlan.hs +++ b/Handler/BuildPlan.hs @@ -23,7 +23,9 @@ getBuildPlanR slug = do fp <- fmap fpToString $ ltsFP $ concat [tshow major, ".", tshow minor] bp <- liftIO $ decodeFileEither fp >>= either throwIO return - packages <- lookupGetParams "package" + -- treat packages as a set to skip duplicates and make order of parameters + -- irrelevant + packages <- setFromList <$> lookupGetParams "package" when (null packages) $ invalidArgs ["Must provide at least one package"] fullDeps <- (== Just "true") <$> lookupGetParam "full-deps" let eres = runCatch $ execStateT (getDeps bp fullDeps packages) (mempty, id) @@ -79,7 +81,7 @@ type DList a = [a] -> [a] getDeps :: (MonadThrow m, MonadState TheState m) => BuildPlan -> Bool - -> [Text] + -> Set Text -> m () getDeps BuildPlan {..} fullDeps = mapM_ (goName . PackageName . unpack)