Generate platform version comparision page
[darcs-mirror-hpvt.git] / Main.hs
1 import Data.Maybe
2 import Data.List
3 import qualified Data.Map as M
4 import System.Time
5 import Control.Applicative ((<$>))
6
7 import Distribution.PackageDescription.Parse
8 import Distribution.PackageDescription.Configuration
9 import Distribution.Verbosity
10
11 import Hackage as H
12 import Debian as D
13
14 import HTMLOutput
15 import CabalDebianMap
16 import PlatformOutput
17 import Types
18 import Utils
19
20
21 main = do 
22         putStrLn "Haskell Package Version Tracker"
23
24         hackage <- H.readFile "00-index.tar.gz"
25         putStrLn $ "Read " ++ show (M.size hackage) ++ " packages from Hackage"
26
27         debian_unstable <- D.readFile "Sources.unstable" "sid" hackage
28         putStrLn $ "Read " ++ show (M.size debian_unstable) ++ " packages from Debian (Unstable)"
29
30         debian_squeeze <- D.readFile "Sources.squeeze" "squeeze" hackage
31         putStrLn $ "Read " ++ show (M.size debian_squeeze) ++ " packages from Debian (Squeeze)"
32
33         platform_2010_1_0_0 <- flattenPackageDescription <$> readPackageDescription normal "haskell-platform-2010.1.0.0.cabal"
34         platform_2010_2_0_0 <- flattenPackageDescription <$> readPackageDescription normal "haskell-platform-2010.2.0.0.cabal"
35         platform_darcs <- flattenPackageDescription <$> readPackageDescription normal "haskell-platform-darcs.cabal"
36         putStrLn $ "Read platform package descriptions"
37         
38         let combined = stopCombine $ startCombine (,,)
39                                      `mapCombine` hackage
40                                      `mapCombine` debian_unstable
41                                      `mapCombine` debian_squeeze
42         putStrLn $ "Found " ++ show (M.size combined) ++ " total packages"
43
44         time <- getClockTime
45         writeFile "output.html" $ outputHTML combined time
46         writeFile "cabalDebianMap.txt" $ outputCabalDebianMap combined
47         writeFile "platform.html" $ outputPlatform time hackage [
48                 (platform_2010_1_0_0, [
49                     ("Squeeze", debian_squeeze),
50                     ("Unstable", debian_unstable)
51                 ])
52                 , (platform_2010_2_0_0, [])
53                 -- , (platform_darcs, [])
54             ]
55
56
57