packages feed

debian-3.14: demos/Versions.hs

-- |Print the available version numbers of a package.
module Main where

import Control.Exception (throw)
import Control.Monad.Trans
import Data.Maybe
import Debian.Repo.IO
import Debian.Repo.PackageIndex
import Debian.Repo.Package
import Debian.Repo.Release
import Debian.Repo.Repository
import Debian.Repo.Types
import Debian.URI
import Extra.CIO
import Extra.IO ()
import Prelude hiding (putStrLn)

main :: IO ()
main = runAptIO main'

main' :: AptIOT IO ()
main' =
    do repo <- prepareRepository (fromJust (parseURI uri))
       releases <- mapM insertRelease (map (Release repo) (repoReleaseInfo repo))
       let binaryIndexes = map (filter (\ i -> packageIndexArch i == arch)) (map binaryIndexList releases)
       binaryPackages <- mapM packageLists binaryIndexes
       liftIO (putStrLn ("\n" ++ show releases))
{-
    where
      insert repo info = insertRelease repo 
-}

packageLists :: [PackageIndex] -> AptIOT IO [[BinaryPackage]]
packageLists indexes = mapM packages indexes

packages :: PackageIndex -> AptIOT IO [BinaryPackage]
packages index = liftIO (binaryPackagesOfIndex index) >>= return . either throw id

uri = "http://deb.seereason.com/ubuntu/"
arch = Binary "i386"