ThinkR-open / attachment

Tools to deal with dependencies in scripts, Rmd and packages
https://thinkr-open.github.io/attachment/
Other
108 stars 13 forks source link

att_amend_desc cant deal parametrized chunk in vignettes #105

Closed VincentGuyader closed 12 months ago

VincentGuyader commented 1 year ago
    tmpdir <- tempfile("dummyextra")
    dir.create(tmpdir)
    file.copy(system.file("dummypackage", package = "attachment"), tmpdir, recursive = TRUE)
    dummypackage <- file.path(tmpdir, "dummypackage")
    dummypackage

    cat('---
    title: "dummy"
    output: rmarkdown::html_vignette
    ---

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

```{r}
truc <- FALSE
```

```{r eval = truc}
1+1
```

',file=file.path(dummypackage,"vignettes","banana.Rmd"))
attachment::att_amend_desc(path = dummypackage)


> Error in eval(x, envir = envir) : object 'truc' not found
statnmap commented 1 year ago

attachment finds the package correctly. If you use {ggplot2}, you can see it appears in DESCRIPTION

tmpdir <- tempfile("dummyextra")
dir.create(tmpdir)
file.copy(system.file("dummypackage", package = "attachment"), tmpdir, recursive = TRUE)
dummypackage <- file.path(tmpdir, "dummypackage")
dummypackage

cat('---
    title: "dummy"
    output: rmarkdown::html_vignette
    ---

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

```{r}
truc <- FALSE
```

```{r eval = truc}
1+1
```

',file=file.path(dummypackage,"vignettes","banana.Rmd"))

attachment::att_amend_desc(path = dummypackage)

readLines(file.path(dummypackage,"DESCRIPTION"))


![image](https://github.com/ThinkR-open/attachment/assets/21193866/5b62080c-1234-44b2-aaa4-e464725776a1)

Indeed, the error comes from `knitr:purl()` for which I can not do anything...
````r
temp_rmd <- tempfile(fileext = ".Rmd")
cat('---
    title: "dummy"
    output: rmarkdown::html_vignette
    ---

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

```{r}
truc <- FALSE
```

```{r eval = truc}
1+1
```

',file = temp_rmd)

knitr::purl(temp_rmd) # Works but shows an error suppressMessages(knitr::purl(temp_rmd, quiet = TRUE)) suppressWarnings(knitr::purl(temp_rmd, quiet = TRUE)) file.exists(basename(gsub("Rmd$", "R", temp_rmd))) file.remove(basename(gsub("Rmd$", "R", temp_rmd)))

knitr::knit(temp_rmd, tangle = TRUE) # Works without error file.exists(basename(gsub("Rmd$", "R", temp_rmd)))

VincentGuyader commented 12 months ago

ok, it works even with [stringr} after the chunk here :

tmpdir <- tempfile("dummyextra")
dir.create(tmpdir)
file.copy(system.file("dummypackage", package = "attachment"), tmpdir, recursive = TRUE)
dummypackage <- file.path(tmpdir, "dummypackage")
dummypackage

cat('---
    title: "dummy"
    output: rmarkdown::html_vignette
    ---

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

```{r}
truc <- FALSE
```

```{r eval = truc}
1+1
```
```{r }
library(stringr)
```    
',file=file.path(dummypackage,"vignettes","banana.Rmd"))

attachment::att_amend_desc(path = dummypackage)

readLines(file.path(dummypackage,"DESCRIPTION"))