---
title: "Updating public repositories"
author: "Martin John Hadley, @martinjhnhadley"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Updating public repos}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

The process for updating an existing public repository with new versions of existing files requires multiple steps:

1. Delete existing copies of files
2. Upload new copies of the files
3. Make your changes public

Note that the example below is for a specific repository, as you are not the author of the article you will not be able to run the code without errors.

## Delete existing copies of files

Obtain the article_id of the deposit, this is the numeric component of the DOI after figshare e.g. https://doi.org/10.6084/m9.figshare.3761562

```{r, eval=FALSE, echo=TRUE}
library(rfigshare)
article_id <- 3761562
deposit_details <- fs_details(article_id)
deposit_details$title
```

Several files in this deposit are updated nightly, for instance:

```{r, eval=FALSE, echo=TRUE}
"OLIdata_YYYY-MM-DD.txt"
```

To delete this file, the file_id must be found. It is simplest to convert the lists to a `data_frame` such that they may be operated on with `dplyr`.

```{r, eval=FALSE, echo=TRUE}
library(dplyr)
deposit_files <- unlist(deposit_details$files)
deposit_files <- data.frame(split(deposit_files, names(deposit_files)),stringsAsFactors = F)
file_id <- deposit_files %>%
  filter(grepl("^OLIdata_", name)) %>%
  select(id) %>%
  .[[1]]
```

Prepare the article for the new version of the file, by deleting the existant version with `fs_delete`

```{r, eval=FALSE, echo=TRUE}
fs_delete(article_id, file_id)
```

## Upload new version of the file

The new file can be downloaded as follows:

```{r, eval=FALSE, echo=TRUE}
# This file does not exist in these training materials.
fs_upload(article_id, paste0("OLIdata_", as.Date(Sys.time())))
```

## Make changes public

The actions you have performed have been saved as draft changes, you must use `fs_make_public` to update the article and create a new version:

```{r, eval=FALSE, echo=TRUE}
fs_make_public(article_id)
```




