---
title: "New project checklist"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{New project checklist}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

## Creating and starting a new project

This is very much started as a personal reference checklist when starting new *R*-projects.

Much of it is based on work from [ROSTOOLS](), but I have added a few personal preferences.

### Init renv

After initiating renv, do

```{r eval=FALSE}
usethis::edit_r_profile()
```

Copy the following to the profile-file:

```
options(
  renv.settings.snapshot.type = "explicit",
  renv.config.auto.snapshot = TRUE,
  renv.config.pak.enabled = TRUE
)
source("renv/activate.R")

if (interactive()) {
  suppressMessages(require(usethis))
}
```



### Publishing the project

Run in terminal:

```         
quarto publish gh-pages
```

This will create a new `gh-pages` branches in the repository.

Then run

```{r eval=FALSE}
edit_file(".github/workflows/build-website.yaml")
```

And then copy/paste this content to that file:

```         
on:
  push:
    branches:
      - main
      - master
  workflow_dispatch:

name: Render and Publish

permissions:
  contents: write
  pages: write

jobs:
  build-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Check out repository
        uses: actions/checkout@v4

      - name: Set up Quarto
        uses: quarto-dev/quarto-actions/setup@v2
        with:
          # To install LaTeX to build PDF book
          tinytex: true
          # uncomment below and fill to pin a version
          # version: 0.9.600

       # The next two steps are used to setup the project when renv is used. Just uncomment and away you go!
#      - uses: r-lib/actions/setup-r@v2

#      - uses: r-lib/actions/setup-renv@v2

      # From https://github.com/r-lib/actions/tree/v2-branch/setup-r
      - name: Publish to GitHub Pages (and render)
        uses: quarto-dev/quarto-actions/publish@v2
        with:
          target: gh-pages
        env:
          # this secret is always available for github actions
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```

# New CRAN release checklist

-   Commit all changes to GIT

-   Checks for publishing with RHUB

```{r eval=FALSE}
results <- rhub::check_for_cran()
```

      
Let it run. Takes some hours.
Check results:


```{r eval=FALSE}
results$cran_summary()
```

         
Copy results to `cran-comments.md`


```{r eval=FALSE}
usethis::use_cran_comments()
```

-   Release on CRAN

```{r eval=FALSE}
devtools::release()
```

         
Follow instruction on e-mail to confirm upload


-   When approved, release to GitHub (this also publishes newest version to Zenodo if setup)

```{r eval=FALSE}
usethis::use_github_release()
```
