--- title: "How to update documentation" output: github_document vignette: | %\VignetteIndexEntry{How to update documentation} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ## Roxygen2 and Pkgdown Roxygen2-style comments are how we generate most content. Example: ``` ##' TileDB Cloud Manual Layer for Array Info ##' ##' This function shows array information on TileDB Cloud. ##' ##' Nominally you will first call \code{\link{login}}; if not, the results of ##' the last login at \code{~/.tiledb/cloud.json} will be used. ##' ##' @param namespace Like "TileDB-Inc" ##' ##' @param arrayname Like "quickstart_dense" ##' ##' @return A list of array properties ##' @export array_info <- function(namespace, arrayname) { apiClientInstance <- get_api_client_instance() arrayApiInstance <- ArrayApi$new(apiClientInstance) # The $toJSON() converts from R6 class to R named list. # That in turn is nicely printable using str(). arrayApiInstance$GetArrayMetadata(namespace, arrayname)$toJSON() } ``` Notes: * The first sentence will become the title -- used as one-line summary in the `docs/reference/index.html` reference page, and HTML/H1-style title when someone clicks through the link to the `docs/reference/name-of-the-function.html` details page. * The second sentence will become summary text under the title in the `docs/reference/name-of-the-function.html` details page. * The remaining bits will become the Details section in the `docs/reference/name-of-the-function.html` details page. * Use `\code{\link{...}}` for in-package function references; use `\code{...}` for any other program text. * The `@param` and `@return` are used for autogenerating the `docs/reference/name-of-the-function.html` details page. * The `@export` tag is used by Roxygen2 to populate the `NAMESPACE` file. Note however that even non-exported functions will regardless appear in the `docs/reference/index.html` reference page. It's handy to name these with a leading `.` which matches a rule in our `_pkgdown.yml`, placing these functions in their own section at the bottom of the `docs/reference/index.html` reference page. * The code autogenerated by OpenAPI already follows these conventions. ### _pkgdown.yml See this repo's `_pkgdown.yml` for the `reference` and `articles` syntax which allow us to control section-ordering for reference and articles (vignettes). The rule in the `reference` section is that items starting with `a-z` are manual-layer functions; those starting with `A-Z` are OpenAPI-autogen functions/classes; those starting with `.` are package-internal. As long as you follow these naming conventions for the code you write, you shouldn't need to modify `_pkgdown.yml` when you write new functions. For new articles (vignettes), by contrast, you will need to add the information for your new vignette to `_pkgdown.yml`. ## Build steps After `install.packages("roxygen2")` and `install.packages("pkgdown")` you should do `roxygen2::roxygenise()`. These outputs go into source control. You can optionally do `pkgdown::build_site` and `open docs/index.html` to preview HTML locally and check that the rendering is as desired, but, be sure not to commit any of these outputs to source control. How this works: * On [https://github.com/TileDB-Inc/TileDB-Cloud-R/pull/103](https://github.com/TileDB-Inc/TileDB-Cloud-R/pull/103) we did a one-time `usethis::use_github_action("pkgdown")` which created `.github/workflows/pkgdown.yaml` and `.github/.gitignore`. * In this repo's Settings -> Pages in GitHub we set up GitHub Pages to publish from the root directory on branch `gh-pages`, which is what the YAML from the previous bullet provides. * This populates https://tiledb-inc.github.io/TileDB-Cloud-R/. ## Publishing See [HowToRelease.md](./HowToRelease.md).