downloadPackages :: Index -> IO ()
downloadPackages index = do
    putStrLn "Downloading Packages ..."
    void (
        forM (Map.toList index) (\(packagename,versionnumbers) -> do
            forM versionnumbers (\versionnumber -> do
                let directory = archiveFilePath packagename versionnumber
                exists <- doesFileExist directory
                when (not exists) (do
                    createDirectoryIfMissing True "data/archives"
                    void (rawSystem "wget" [
                        "-nv",
                        "-O",directory,
                        packageUrl packagename versionnumber])))))
downloadPackages :: Index -> IO ()
downloadPackages index = do
    putStrLn "Downloading Packages ..."
    void (
        forM (Map.toList index) (\(packagename,versionnumbers) -> do
            forM versionnumbers (\versionnumber -> do
                let directory = archiveFilePath packagename versionnumber
                exists <- doesFileExist directory
                when (not exists) (do
                    createDirectoryIfMissing True "data/archives"
                    void (rawSystem "wget" [
                        "-nv",
                        "-O",directory,
                        packageUrl packagename versionnumber])))))
downloadPackages index = do
    putStrLn "Downloading Packages ..."
    void (
        forM (Map.toList index) (\(packagename,versionnumbers) -> do
            forM versionnumbers (\versionnumber -> do
                let directory = archiveFilePath packagename versionnumber
                exists <- doesFileExist directory
                when (not exists) (do
                    createDirectoryIfMissing True "data/archives"
                    void (rawSystem "wget" [
                        "-nv",
                        "-O",directory,
                        packageUrl packagename versionnumber])))))