---
title: "Configuration with options or environment variables"
author: "Floris Vanderhaeghe"
date: |
  | Last update: 2024-06-28
  | Last run: `r Sys.Date()`
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Configuration with options or environment variables}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

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

Options and environment variables are available to manage `{qgisprocess}` behaviour.
Several options have a corresponding environment variable.
When both have a value, the _option_ will be given priority.

Options are typically harder to isolate from the R code that you collaborate on.
Consequently, it is advised to:

- use `options()` where this affects behaviour that must be the same across
users and machines for reproducibility.
Put these inside your script, or at least in a `.Rprofile` file that is
shared together with the other project files.
- use environment variables where behaviour must be machine-specific.
For example, you can create a `.Renviron` file in your working directory
and ignore it in distributed version control.
Or you can set the environment variable at a higher level, e.g. in a
`.Renviron` file in your home directory.
See `base::Startup` for more information.

# Overview

Below table lists the available options and environment variables.

Option | Environment variable | Type
-- | -- | --
`qgisprocess.path` | `R_QGISPROCESS_PATH` | string (filepath)
`qgisprocess.tmp_vector_ext` | not available | string (file extension)
`qgisprocess.tmp_raster_ext` | not available | string (file extension)
`qgisprocess.detect_newer_qgis` | `R_QGISPROCESS_DETECT_NEWER_QGIS` | logical
`qgisprocess.use_json_input` | `R_QGISPROCESS_USE_JSON_INPUT` | logical 
`qgisprocess.use_json_output` | `R_QGISPROCESS_USE_JSON_OUTPUT` | logical
`qgisprocess.cachefiles_days_keep` | `R_QGISPROCESS_CACHEFILES_DAYS_KEEP` | numeric
`qgisprocess.use_cached_help` | `R_QGISPROCESS_USE_CACHED_HELP` | logical
`qgisprocess.env` | not available | named list

# Descriptions

Following descriptions are applicable to both option and environment variable:

- `qgisprocess.path`: sets the path to 'qgis_process'; see `qgis_configure()`
- `qgisprocess.tmp_vector_ext`: sets the vector file extension for temporary files; see `qgis_tmp_vector()`
- `qgisprocess.tmp_raster_ext`: sets the raster file extension for temporary files; see `qgis_tmp_raster()`
- `qgisprocess.detect_newer_qgis`: for Windows and macOS; will report availability of an installed (standalone) QGIS version that is more recent than the cached version
- `qgisprocess.use_json_input`: control whether the JSON input method is used; see `qgis_using_json_input()`
- `qgisprocess.use_json_output`: control whether the JSON output method is used; see `qgis_using_json_output()`
- `qgisprocess.cachefiles_days_keep`: control a cache file's age (as days) that must be exceeded for it to be deleted when loading the package (default is 90); see `?qgis_delete_old_cachefiles`
- `qgisprocess.use_cached_help`: whether to fetch an algorithm's documentation from a cached file (corresponding to the QGIS and `{qgisprocess}` versions in use) if this file exists (default is `TRUE`; if `FALSE`, always (re)query documentation from QGIS)
- `qgisprocess.env`: named list of environment variable values used in each call to 'qgis_process'; see `qgis_run()`
