+available <- NULL
+ctv.available <- NULL
+
+mirrors <- NULL
+mirrors <- c(mirrors,CRAN='http://cran.r-project.org')
+#mirrors <- c(mirrors,BioC='http://www.bioconductor.org/packages/2.2')
+mirrors <- c(mirrors,BioC='http://www.bioconductor.org/packages/2.7')
+
+verbose<-TRUE
+debug<-FALSE
+
+for (mirror.name in names(mirrors)) {
+ mirror.url<-mirrors[mirror.name]
+ message(paste("Updating list of available R packages from ",mirror.name," [",mirror.url,"].\n",sep=""))
+ packages.retrieved <- NULL
+ if ("CRAN" == mirror.name) {
+ packages.retrieved <- available.packages(contrib.url(mirror.url))
+ } else if ("BioC" == mirror.name) {
+ repos <- c(
+ "bioc"
+ ,"data/annotation"
+ ,"data/experiment"
+ ,"extra"
+ )
+ for (s in repos) {
+ packages.retrieved <- rbind(
+ packages.retrieved,
+ available.packages(contrib.url(paste(mirror.url,s,sep="/")))
+ )
+ }
+ } else {
+ packages.retrieved <- available.packages(mirror.url)
+ }
+ if (verbose) message(paste("Retrieved ",nrow(packages.retrieved)," package descriptions.\n",sep=""))
+ available <- rbind(available, packages.retrieved)
+ message('updating list of available R task views...')
+ ctv.available <- rbind(ctv.available,available.views(repo=mirror.url))
+}