[Pkg-haskell-commits] [tools] 01/02: Interesting Dependencies are no longer liasted in the excuses, but listed with their own excuses (and subexcuses...).

Sven Bartscher svenb-guest at moszumanska.debian.org
Mon Aug 18 13:05:36 UTC 2014


This is an automated email from the git hooks/post-receive script.

svenb-guest pushed a commit to branch master
in repository tools.

commit 92f5f345ac3e69dfc1b35df854fc2127cb3ad4c7
Author: Sven Bartscher <sven.bartscher at weltraumschlangen.de>
Date:   Mon Aug 18 14:22:25 2014 +0200

    Interesting Dependencies are no longer liasted in the excuses, but listed with
    their own excuses (and subexcuses...).
---
 reasons.hs | 40 +++++++++++++++++++++++++++++++++-------
 1 file changed, 33 insertions(+), 7 deletions(-)

diff --git a/reasons.hs b/reasons.hs
index 745fb2d..9d14b6c 100644
--- a/reasons.hs
+++ b/reasons.hs
@@ -27,7 +27,8 @@ main = do
                    Left e -> putStrLn packageNotFoundMsg >> exitFailure
                    Right pkgs -> return pkgs
   excuses <- mapM getExcuse srcBlockers
-  let filteredExcuses = filterExcuses (isInteresting srcBlockers) excuses
+  additionalExcuses <- getAdditionalExcuses srcBlockers excuses
+  let filteredExcuses = filterExcuses (isInteresting srcBlockers) $ excuses ++ additionalExcuses
   mapM_ putStrLn $ map excuses2String filteredExcuses
 
 parse :: [String] -> IO (String, String)
@@ -54,15 +55,40 @@ isInteresting :: [String] -> String -> Bool
 isInteresting blockers excuse = "out of date on" `isPrefixOf` excuse 
                                 || "introduces new bugs" `isInfixOf` excuse
                                 || "Too young" `isPrefixOf` excuse
-                                || isInterestingDependency blockers excuse
+                                || isInterestingDependency blockers excuse -- Left here
+                                                                           -- for the case that
+                                                                           -- getAdditionalExcuses
+                                                                           -- misses something.
+                                                                           -- (Can be removed after
+                                                                           -- sufficient testing)
 
 isInterestingDependency :: [String] -> String -> Bool
 isInterestingDependency pkgs excuse = "(not considered)" `isSuffixOf` excuse 
-                                      && dependency `notElem` pkgs
-    where dependency' = excuse =~ "(?<=Depends: ).*(?= \\(not considered\\))"
-          dependency
-              | null dependency' = ""
-              | otherwise = tail $ dropWhile (/= ' ') dependency'
+                                      && (mangleDependency excuse) `notElem` pkgs
+
+mangleDependency :: String -> String
+mangleDependency excuse
+    | null dependency = ""
+    | otherwise = tail $ dropWhile (/= ' ') dependency
+    where dependency = excuse =~ "(?<=Depends: ).*(?= \\(not considered\\))"
+
+-- Takes a list of already fetched excuses and returns the excuses of missing dependencies
+getAdditionalExcuses :: [String] -> [Excuses] -> IO [Excuses]
+getAdditionalExcuses _ [] = return []
+getAdditionalExcuses pkgs excuses = do
+  let interestingDepends = filterExcuses
+                           (isInterestingDependency pkgs)
+                           excuses
+      dependencies = nub $ map mangleDependency $ flattenExcuses interestingDepends
+  excuses <- mapM getExcuse dependencies
+  evenMoreExcuses <- getAdditionalExcuses (pkgs ++ dependencies) excuses
+  return $ excuses ++ evenMoreExcuses
+
+flattenExcuses :: [Excuses] -> [String]
+flattenExcuses excuses = concat $ map unpackExcuses excuses
+
+unpackExcuses :: Excuses -> [String]
+unpackExcuses (Excuses _ excuses) = excuses
 
 maybeTail :: [a] -> Maybe [a]
 maybeTail [] = Nothing

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-haskell/tools.git



More information about the Pkg-haskell-commits mailing list