library(attachment)
When building your package, create a file called “dev_history.R” in a
“dev/” directory. You will store all “manual” calls to
devtools::xxx
and usethis::xxx
in this
script.
Its first line should be :
::use_build_ignore("dev") usethis
You can then call {attachment} in this file to help you build your description file.
What you really want is to fill and update your description file
along with the modifications of your documentation. Indeed, only this
function will really be called in your “dev/dev_history.R”.
Run attachment::att_amend_desc()
each time before
devtools::check()
, this will save you some warnings and
errors !
att_amend_desc()
If you are running this inside a Rmd like here, you may need
parameter inside_rmd = TRUE
.
# Copy package in a temporary directory
<- tempdir()
tmpdir file.copy(system.file("dummypackage",package = "attachment"), tmpdir, recursive = TRUE)
#> [1] TRUE
<- file.path(tmpdir, "dummypackage")
dummypackage # browseURL(dummypackage)
att_amend_desc(path = dummypackage, inside_rmd = TRUE)
#> Updating dummypackage documentation
#> Updating roxygen version in /tmp/RtmpCnwEnR/dummypackage/DESCRIPTION
#> ℹ Loading dummypackage
#> Writing NAMESPACE
#> Writing NAMESPACE
#> Package(s) Rcpp is(are) in category 'LinkingTo'. Check your Description file to be sure it is really what you want.
#> [-] 1 package(s) removed: utils.
#> [+] 2 package(s) added: stats, glue.
set_remotes_to_desc()
adds packages that were installed
from other source than CRAN to Remotes:
field in
DESCRIPTION.
For instance:
Remotes: thinkr-open/attachment
Remotes: gitlab::jimhester/covr
You may want to run it after att_amend_desc()
.
att_amend_desc(dummypackage) %>%
set_remotes_to_desc()
If you only want to find if packages were installed from other source
than CRAN, without amending DESCRIPTION, you can use
find_remotes()
.
You can use it on a vector of packages names
find_remotes(pkg = c("attachment", "desc", "glue"))
#> $attachment
#> local maybe ?
#> NA
You may also want to combine it to
att_from_description()
att_from_description() %>%
find_remotes()
Once your package is finished. Well, is a package ever finished ?
Let’s say, once you want to release a version of your package, you may
want to deliver the list of dependencies your users will have to
install. A little script like
install.packages(c(...all dep...))
would be so nice :
create_dependencies_file()
This file will be placed in inst/dependencies.R
and
contains :
# No Remotes ----
# remotes::install_github("ThinkR-open/fcuk")
# Attachments ----
<- c("covr", "desc", "devtools", "glue", "knitr", "magrittr", "rmarkdown", "stats", "stringr", "testthat", "utils")
to_install for (i in to_install) {
message(paste("looking for ", i))
if (!requireNamespace(i)) {
message(paste(" installing", i))
install.packages(i)
} }
Of course, you can also use {attachment} out of a package to list all
package dependencies of R scripts using att_from_rscripts()
or Rmd files using att_from_rmds()
.
<- system.file("dummypackage", package = "attachment")
dummypackage
att_from_rscripts(path = file.path(dummypackage, "R"))
#> [1] "stats"
att_from_rmds(path = file.path(dummypackage, "vignettes"), inside_rmd = TRUE)
#> [1] "knitr" "rmarkdown" "glue"