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"