---
title: "How to use just.install"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{How to use just.install}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
    echo=TRUE,
    eval=FALSE,
    comment = "#>"
)
```


The purpose of this package is to provide a simple utility to *just install* R packages, without loading it. This is especially useful when using with packages like **[{box}](https://klmr.me/box/)**, which can be use to only load specify functions rather than a full package.


This package is a wrapper for the *install_* family of functions in the [{remotes}](https://remotes.r-lib.org/) package.


There are many tools to load install and load packages, which this tool does not try to replace. This package is comprised of just one function (*justinstall()*), which only does the following:


1. Checks if the package is installed. If it is installed, it won't load it nor attempt to reinstall (unlike _require()_).

1. If the package is not there, it will install it from the specified source. 

The second motivation behind this package is too address the a common requirement in R training/university assignment, where it is asked to provide a "self-contained" script or notebook that install all required libraries. Having a function that does check before installing can make testing faster by allowing to run code from start to end without reinstalling packages over and over (Note:this does not pretend to be a replacement to [{renv}](https://rstudio.github.io/renv/)).


## How to use

To determine what to install, create a data frame or a *tibble*, containing the package name, the source repoistory and the url/github adress or the repository in question. For instance, using **tibble::tribble()**:

```{r}
packages_to_install <- tibble::tribble(~package,       ~source,~url,
                                  "librarian",    "github","DesiQuintans/librarian",    
                                  "box",          "cran","",
                                  "randomForest", "cran","",    # for RandomForest
                                  "here",         "cran","",
                                  "fs",           "cran","",
                                  "aussiemaps",    "r-universe","https://carlosyanez.r-universe.dev"
                                  )

```


Then, just pass the data frame/tibble as input into the function:

```{r}
just.install::justinstall(packages_to_install)
```


Finally, load the packages or functions using your preferred method.

As mentioned before, this package leverages the *install_* family from the remotes package. The  sources and url formats matches each of those functions, i.e.:

|Source | URL |
|-------|--------------------------------|
|cran   | (empty,uses system settings)   |
|bioc   | package name, for more options, look at ?install_bioc|
|bitbucket| user/repository |
|dev     | (empty)          |
|git     | url/file.git     |
|gitlab  | user/repository  |
|github  | user/repository  |
|local   | folder           |
|svn     | url              |
|url     | url              |
|r-universe| url            |

For more details, you can check the documentation for each *install_* function.

