---
title:  "Using repositories other than CRAN with miniCRAN"
author: "Andrie de Vries"
date:   "`r as.character(format(Sys.Date(), format = '%B %d, %Y'))`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteIndexEntry{Using repositories other than CRAN with miniCRAN}
  %\VignettePackage{miniCRAN}
  %\VignetteKeyword{miniCRAN}
  %\usepackage[utf8]{inputenc}
---

Although the package name `miniCRAN` seems to indicate you can only use CRAN as a repository, you can in fact use any CRAN-like repository.

This vignette contains some examples of how to refer to different package repositories, including CRAN, alternative mirrors of CRAN, R-Forge as well as BioConductor.

To simplify the code to show the salient features, we use a little helper function, `index()` that is a simple wrapper around `available.packages()`:


```{r setup}
# Wrapper around available.packages ---------------------------------------
 
index <- function(url, type = "source", filters = NULL, head = 5, 
                  cols = c("Package", "Version")) {
  contribUrl <- contrib.url(url, type = type)
  p <- available.packages(contribUrl, type = type, filters = filters)
  p[1:head, cols]
}
 
```

## Using CRAN

The URL for the master mirror in Austria:

```{r CRAN, eval=FALSE}
CRAN <- "https://cran.r-project.org"
index(CRAN)
```

Your output should look like this (albeit with different packages and version numbers):

```
              Package         Version
A3            "A3"            "1.0.0"
AalenJohansen "AalenJohansen" "1.0"  
AATtools      "AATtools"      "0.0.2"
ABACUS        "ABACUS"        "1.0.0"
abasequence   "abasequence"   "0.1.0"
```

## Using a different mirror

You can also point to any other mirror, for example the snapshot taken on 2024-01-02 by Posit Public Package Manager:

```{r p3m, eval=FALSE}
p3m <- "https://packagemanager.posit.co/cran/2024-01-02"
index(p3m)
```

## Using R-forge

R-forge has CRAN-like structure:

```{r rforge, eval=FALSE}
rforge <- "https://r-forge.r-project.org"
index(rforge)
```