devtools/ 0000755 0001750 0001750 00000000000 14151364022 012241 5 ustar nilesh nilesh devtools/MD5 0000644 0001750 0001750 00000025663 14151364022 012565 0 ustar nilesh nilesh 333e725e95c9cd3eb816a6d1618522c4 *DESCRIPTION
19545c77acbd277a383c948b34f77d84 *LICENSE
68d4853bb9afe8be0cec9cdc0f6558c8 *NAMESPACE
60d491457519db3f95cd5ab1606764b6 *NEWS.md
f72c92122cbbe5562dd8614be2dd36f7 *R/R.R
1dc901522c8f32163705224b90d90c66 *R/active.R
ce3be42a5b85d95cbee8d7fd7fb4a62d *R/bash.R
4985629ee07301fb35489c3e58d41451 *R/build-manual.R
a5e5897f15ac1b0c2e32720caa260c3e *R/build-readme.R
315d0bd94b97dab4c0cc225365ce044e *R/build-site.R
f036d6adb618b4a32d1782bb58a0dc83 *R/check-devtools.R
d2644f58a085cb3c566dc5daffcd2e7e *R/check-doc.R
0fce8f9aff8a8e0534000ff21a21c8cc *R/check-git.R
fe4477b098ceac830189a1ec9312c681 *R/check-mac.R
5501b2540cd25405eea2a81c10b804fd *R/check-win.R
7661d79613d2351036b08ead649684b4 *R/check.R
a209c238f5e01cbbfb3ee08ff301b0a1 *R/create.R
8040fdad7643645ccb225fdc71f1c3b3 *R/dev-mode.R
6679135e2575f02ed06a8fbde40dd796 *R/document.R
339bac72afc3d66473f6edd6fef81ded *R/git.R
339bd3bab4d457ae402cced8c2921866 *R/has-tests.R
805f9f5eefd6d4344e3ede9a12ef3b0b *R/install.R
ca62027f0f25ad6510596d96f8f11990 *R/lint.R
a69f07ad387d18405dd29786bcfae2fa *R/missing-s3.R
eae46eb28401fb52029c3145d17eda78 *R/package-deps.R
943a94a1491f9d4f920158910f4265d6 *R/package.R
e937ed0766104a4ec11d74f2956a2613 *R/pkgbuild.R
53e9c0f4192713622fc594e4cbf241f9 *R/pkgload.R
536adc6450680af438d08b34dc0468c0 *R/r-hub.R
c9854d6f23fad36548d182fe0b262323 *R/release.R
4cfb279ac28c840e1577d09e2f9c9d98 *R/reload.R
444462f510c29e07011a73f7329b5328 *R/remotes.R
0665dd70f316c5bfe5b0598aaa75f387 *R/revdep.R
88a9ec49425951e7328f3b7b2cb7d7bf *R/run-examples.R
bc57a67c63d4c2bea863300de4912d62 *R/run-source.R
4ca1404a53a594d47c22051d25791f4c *R/save-all.R
b020b61137ff394f382fff2fa47c601d *R/session-info.R
bb5fc1637678c28cd57706bb8597337e *R/show-news.R
8b020d9ddc699b3385c16fbd7aba9c10 *R/sitrep.R
dbc6bc73afa1dcd41e156e2709d2ee22 *R/spell-check.R
2509d1b6c298c7166321bc82d0fec931 *R/test.R
d426627c5f6d0239e1d41f5f9adea175 *R/uninstall.R
531724e1dbab75e613c22ed8487c3587 *R/usethis.R
3a00e5f748ba55d30aeae4b34ca84674 *R/utils.R
8c0b4a5218c7b64523222043032ddbc5 *R/vignette-r.R
f2c9e24a7b1296c359d72c552f5b1efd *R/vignettes.R
d39eb2082fe1a88237a2971077379faa *R/wd.R
07c1b603a6e26b28a765a3e647cd5341 *R/zzz.R
22731ccfe97b0f1a7967ab2289ac8b50 *README.md
e5d208e8455fe8a0e464b12eb8120697 *build/vignette.rds
b9e77fcab0b263d2dae5bbd888fd4438 *inst/WORDLIST
e537d648a6ceb5fd6cc5e5f5450e7ad5 *inst/doc/dependencies.Rmd
5aa571fdba2163e9daf224e64d7a8510 *inst/doc/dependencies.html
48df05798555d5765a367c469daf7375 *inst/rstudio/addins.dcf
649b07c70f310d03b99284860c349e1a *man/as.package.Rd
4b1d5143f8dcd64533fefd1c9a371620 *man/bash.Rd
614d29a2936fb630df562f3f8d21bb79 *man/build.Rd
456a622adb3a84eb539fee55e62ba475 *man/build_manual.Rd
4893b5c00f80602199a220cf05aa270b *man/build_rmd.Rd
0b4f1dfb339eeeb86148a3952159e87b *man/build_site.Rd
e64ee3d4c4318716300e10fdd6ba9541 *man/build_vignettes.Rd
3f12100bbca5b654914366de5cb0cda2 *man/check.Rd
428496be6363e8c56330cdfcd0c1ec6e *man/check_mac_release.Rd
8a2e6bffa9ad2e527f4f5135aa7fe0ca *man/check_man.Rd
9a9a5ecd9d8a37ee4a6ef5f6c255c5f4 *man/check_rhub.Rd
7a329c4b021df625bb44e4978df8e475 *man/check_win.Rd
934c609d831b3ef5b81c0029fefb3247 *man/clean_vignettes.Rd
79d1ff3f2af8cff6ed8b783496925f0f *man/create.Rd
7b5f5edee31ddd580530552bd740081f *man/dev_mode.Rd
3de2d969524b420f4846036bd90b6abf *man/dev_packages.Rd
65a9afb06bd352704517ea75990c98c5 *man/dev_sitrep.Rd
7a9a1549052f1d733ea16b5e478d7b3e *man/devtools-deprecated.Rd
4309157846bf0408da5250af48990c0d *man/devtools.Rd
770446c533bfd7015d7ef44c21f7e701 *man/document.Rd
90be1a8cfa73872e693212364f81f846 *man/figures/logo.svg
3279a0aab1fc7cb5a0f381b2b3014fd0 *man/git_checks.Rd
2caa4f66807eec87e14bdb2e6b83aded *man/has_tests.Rd
4069de5a36ecf9443482987372d403e9 *man/install.Rd
3c0dedc1ac31448f4b6e368be9b7710e *man/install_deps.Rd
77ed6f21da974951f90d961e63cf1189 *man/is.package.Rd
0fa30e6869230eaad9ce04a0d2c0c1ee *man/lint.Rd
f5d2e65acb2887218bf4c89b2be2be04 *man/load_all.Rd
5a6a87c3b374eac586e3f8e761e62636 *man/loaded_packages.Rd
53b7e2ae3592b3baff18e95247552837 *man/missing_s3.Rd
82bca1e79883be645d76ff79d4b87058 *man/package_file.Rd
241029e6ba9792bef15c93b07047e2d1 *man/r_env_vars.Rd
2ec25d810a91632fd89e2108f072dd38 *man/reexports.Rd
6ed38ff585eca4a4df3b613875144df7 *man/release.Rd
5a90c0ee7ea56bcaa256b1b636f3098b *man/release_checks.Rd
01b7863fbab1074a1c3b89238216de80 *man/reload.Rd
2678c5bdcd7637f7c4d42ddc8240b292 *man/remote-reexports.Rd
256bc49353613d3c047f65917209dc09 *man/revdep.Rd
46b2b31314788ca001096dd4c74bc038 *man/run_examples.Rd
bc6a6a15402c314987ed6ee78c1070c6 *man/save_all.Rd
96867eca8c23c11ae02e0d86d5612677 *man/show_news.Rd
0a5c5ce0941ff8dd9ce9ddde8e88c223 *man/source_gist.Rd
20da442ec24e1d07f5216bc0fa495177 *man/source_url.Rd
bfafd8b9099bbf12e80ba7ba9856442b *man/spell_check.Rd
8f48992c6a420105e57372562014d948 *man/submit_cran.Rd
737b303fd492ee73d09aa612daa0ad68 *man/test.Rd
a03bc39672052f7cb8ff967d45085c13 *man/uninstall.Rd
d6845d7354e4f23d4bdd25ad68ea9ffc *man/uses_testthat.Rd
200f407374e5153431a19b7d6abb37c0 *man/wd.Rd
0622a97a2aaa3c342f09636052c2d7f5 *tests/spelling.R
9bc76059e15e27f1fe80fbce9db84eb7 *tests/testthat.R
604e31b0e928d069d21ea4a8be3919cb *tests/testthat/archive.rds
2913f95b2e0f8b0c189759c4a228f46c *tests/testthat/check-results-note.log
15a21091b5fd5906ba9a32653538f8c0 *tests/testthat/helper.R
4cf2d64e44205fe628ddd534e1151b58 *tests/testthat/shallowRepo/HEAD
f64c2e160407ee686211bd819bb1ff68 *tests/testthat/shallowRepo/config
a0a7c3fff21f2aea3cfa1d0316dd816c *tests/testthat/shallowRepo/description
036208b4a1ab4a235d75c181e685e5a3 *tests/testthat/shallowRepo/info/exclude
593fdfcbcc04d475782bc046132edcef *tests/testthat/shallowRepo/objects/pack/pack-c4e0f1d1d68408f260cbbf0a533ad5f6bfd5524e.idx
2554b1bae0dbb84947faff32cf409287 *tests/testthat/shallowRepo/objects/pack/pack-c4e0f1d1d68408f260cbbf0a533ad5f6bfd5524e.pack
2d1cf6b7f2fa49adb6f307e98766c975 *tests/testthat/shallowRepo/packed-refs
e09030d939f08dcad3985f33db51c18f *tests/testthat/shallowRepo/refs/tags/v1.10.0
4ef4145c4fc7a472499a55cb0b25e3d3 *tests/testthat/shallowRepo/shallow
379ab92fd2bddf0afed791ea3fc80179 *tests/testthat/test-active.R
c47c38553fb9fb09eb97dd9085a9213b *tests/testthat/test-build-readme.R
4cf0237102a4d170e3460b774511aa65 *tests/testthat/test-build-site.R
ac9773c1bfb7d5ec64e24a93e6f1f366 *tests/testthat/test-check-doc.R
ed50d9a8ce205a999775592371a19a02 *tests/testthat/test-check.R
7ad2a8d4cd2077f3842fdf5967523ecd *tests/testthat/test-install.R
d2bb65ee44bfc32546b9171d888359f5 *tests/testthat/test-reload.R
2c5c8c2ecd3ff94e2d4b21798a5a57f6 *tests/testthat/test-run-examples.R
11a65dca1fce53dd9c43ad1d8d7dac69 *tests/testthat/test-run-source.R
6aec09fa4dc114948266b38b62b09002 *tests/testthat/test-sitrep.R
1af4c5e8ae88c4604c7b44489c6ad3ff *tests/testthat/test-test.R
e97fc73f9d8f1d095a5c966935911b5d *tests/testthat/test-uninstall.R
d38c15bdf1db1f8f7f032eef857986b0 *tests/testthat/test-utils.R
818bb22a6bfff3dad020a52f515a4fb1 *tests/testthat/test-vignettes.R
872b6d963de006fd1d5f630014d44fd6 *tests/testthat/testCheckExtrafile/DESCRIPTION
85601cb90b291bb14a88bc9e7349b653 *tests/testthat/testCheckExtrafile/NAMESPACE
abd2e85f330c6edb718f21b70c4025fd *tests/testthat/testCheckExtrafile/R/a.R
7dd2e80bb9bc9a2e5b5242cfa0773594 *tests/testthat/testCheckExtrafile/an_extra_file
f2156963e20e8b103d1c56ff19952e05 *tests/testthat/testCheckExtrafile/man/a.Rd
3ef2ad4e721c38bf6b4dbd213ca8e474 *tests/testthat/testError/DESCRIPTION
482ad90a326645dfd29cb4009d87fc77 *tests/testthat/testError/R/error.R
1ff80625254babe3f685c65f120f9311 *tests/testthat/testHelp/DESCRIPTION
07493dea1b5bdd08b83fc86e7207e4a6 *tests/testthat/testHelp/NAMESPACE
ed61308da230ce41b4a2ec373a434237 *tests/testthat/testHelp/R/foofoo.R
9ea3ed4f53478f3643e1cad9018b8995 *tests/testthat/testHelp/man/foofoo.Rd
94cd54a1ac1228f566e3353a266fda0f *tests/testthat/testMarkdownVignettes/DESCRIPTION
79b420e1c7ec95ab732d36ed0fc00e5b *tests/testthat/testMarkdownVignettes/vignettes/test.Rmd
1494bf61f7e5b6e5a36a6df0faf2c486 *tests/testthat/testMissingNsObject/DESCRIPTION
9fb09fba835e687b843b78452bbeb820 *tests/testthat/testMissingNsObject/NAMESPACE
26813d0f7f8e272af05102662163c53b *tests/testthat/testMissingNsObject/R/a.R
b7c9f68e639e02977dfc9e029b09b764 *tests/testthat/testPkgdown/DESCRIPTION
ec57db2c3a62d8292430ed1cb473acc2 *tests/testthat/testPkgdown/NAMESPACE
837c8d1b6475820e4063bacaa9688a0c *tests/testthat/testPkgdown/R/pkgdown-test-test.R
8f3c82762bc460cbab37b7db5b00bfa2 *tests/testthat/testPkgdown/_pkgdown.yml
c1bd9be45b7b4fdbe562160c97ed6d3c *tests/testthat/testPkgdown/man/pkgdown_test_test.Rd
ba416f9c93325996a32015459de57df7 *tests/testthat/testPkgdown/vignettes/test.Rmd
0863c87096fde593c6a111953714d32e *tests/testthat/testTest/DESCRIPTION
dc21c19f0d6968ee25d441b2cf46017d *tests/testthat/testTest/NAMESPACE
68b329da9893e34099c7d8ad5cb9c940 *tests/testthat/testTest/R/dummy.R
9d0478fe975946f3ce9fbd3c4e003c67 *tests/testthat/testTest/tests/testthat.R
225e3812b897786befc574f805c96dc2 *tests/testthat/testTest/tests/testthat/test-dummy.R
ce91db0c743f0490510846f28971aa79 *tests/testthat/testTest/tests/testthat/test-envvar.R
de918500a6a50ddacc42bdbe04ca6a11 *tests/testthat/testTestWithDepends/DESCRIPTION
012592abf4b40a8d741b299df2ded05a *tests/testthat/testTestWithDepends/NAMESPACE
d8f7b32e5a6ab4d463e3c33080c80537 *tests/testthat/testTestWithDepends/tests/testthat.R
225e3812b897786befc574f805c96dc2 *tests/testthat/testTestWithDepends/tests/testthat/test-dummy.R
506ba2c08494863af3e5d5bf73ad2b21 *tests/testthat/testTestWithFailure/DESCRIPTION
dc21c19f0d6968ee25d441b2cf46017d *tests/testthat/testTestWithFailure/NAMESPACE
68b329da9893e34099c7d8ad5cb9c940 *tests/testthat/testTestWithFailure/R/dummy.R
9d0478fe975946f3ce9fbd3c4e003c67 *tests/testthat/testTestWithFailure/tests/testthat.R
3c813eaf9f13945b51ea5ffc7975e607 *tests/testthat/testTestWithFailure/tests/testthat/test-fail.R
858d20e34a072df15088cd855c2fc580 *tests/testthat/testTestWithFailure/tests/testthat/test-warn.R
755c328df07127fa8a38f18b61dae04d *tests/testthat/testUseData/DESCRIPTION
f9ea5333e6efd9c51fc46fe34164c341 *tests/testthat/testUseData/NAMESPACE
68b329da9893e34099c7d8ad5cb9c940 *tests/testthat/testUseData/R/a.R
06242e2cea47b189439bf8477f8aab09 *tests/testthat/testVignetteExtras/DESCRIPTION
d41d8cd98f00b204e9800998ecf8427e *tests/testthat/testVignetteExtras/NAMESPACE
26813d0f7f8e272af05102662163c53b *tests/testthat/testVignetteExtras/vignettes/a.R
2106801e8a4dfc0552ff0fcf3ae2fe7a *tests/testthat/testVignetteExtras/vignettes/new.Rnw
06242e2cea47b189439bf8477f8aab09 *tests/testthat/testVignettes/DESCRIPTION
d41d8cd98f00b204e9800998ecf8427e *tests/testthat/testVignettes/NAMESPACE
2106801e8a4dfc0552ff0fcf3ae2fe7a *tests/testthat/testVignettes/vignettes/new.Rnw
f56fba6bb35d06307179111a2375e2b2 *tests/testthat/testVignettesBuilt/DESCRIPTION
343f94d4d7972a1af6cb10fd64bae431 *tests/testthat/testVignettesBuilt/NAMESPACE
ea67dc1edf62b5901bb4eee40db481a6 *tests/testthat/testVignettesBuilt/R/code.R
4a91678fed5c1ef66c63b3d4ee51520e *tests/testthat/testVignettesBuilt/vignettes/new.Rnw
e537d648a6ceb5fd6cc5e5f5450e7ad5 *vignettes/dependencies.Rmd
devtools/NEWS.md 0000644 0001750 0001750 00000263363 14151174524 013362 0 ustar nilesh nilesh # devtools 2.4.3
* New `check_mac_release()` function to check a package using the macOS builder at https://mac.r-project.org/macbuilder/submit.html (#2375)
* Jenny Bryan is now the official maintainer.
* `release()` and `submit_cran()` now record submission details using the Debian Control File format, for better machine-readability. This file has a new name, CRAN-SUBMISSION (instead of CRAN-RELEASE) and now includes package version, in addition to the full SHA and a timestamp.
# devtools 2.4.2
* `check_man()` now works with R versions 4.1+ (#2354)
* `test_active_file()` now again works on windows projects stored under the user's home directory (`~`) (#2355)
* `document(quiet = TRUE)` now works without failure on windows (#2351)
* Minor test failure on R 4.2 has been fixed.
* New Rstudio addin for `run_examples()` (#2358)
# devtools 2.4.1
* `build_readme()` now uses the `path` argument, as designed (#2344)
* `create()` no longer opens projects by default to avoid duplicate projects opened by the RStudio IDE project template (#2347, @malcolmbarrett)
* The RStudio addins now use `test_active_file()` and `test_coverage_active_file()` instead of the deprecated `test_file()` and `test_coverage_file()` (#2339)
* RStudio addins now run in interactive mode, rather than background mode (@jennybc, #2350)
* `install(upgrade)` now defaults to 'default' rather than 'ask'. This allows you to control the default asking behavior with the `R_REMOTES_UPGRADE` environment variable (#2345)
# devtools 2.4.0
## Breaking changes and deprecated functions
* The `check_results()` function has been removed.
It was not used by any CRAN package, and much better alternatives are available in the [rcmdcheck](https://github.com/r-lib/rcmdcheck) package.
* `pkgload::inst()` is no longer re-exported (#2218).
* `test_file()` has been renamed to `test_active_file()` and `test_coverage_file()` has been renamed to `test_coverage_active_file()` to avoid a name collision with `testthat::test_file()`.
The previous names have been soft deprecated in this release, they will be hard deprecated in the next release and eventually removed. (#2125)
## Re-licensing
* devtools is now released under a MIT license (#2326)
## Minor improvements and fixes
* `build_readme()` now supports readme files located in `inst/README.Rmd`, as intended (#2333)
* `build_vignettes()` now creates more specific `.gitignore` entries (@klmr, #2317)
* `check()` now only re-documents if you have a matching version of roxygen2 (#2263).
* `change_maintainer_email()` now has a check to assess whether the email is actually changed.
If the email is not changed, the code now stops such that an email is not accidentally sent to the wrong recipient. (@emilsjoerup, #2073)
* `run_examples(fresh = TRUE)` again works without error (#2264)
* The covr and DT packages have been moved from Imports to Suggests.
They are only needed when running `test_coverage()` and `test_coverage_active_file()` so now you'll be prompted to install them when needed.
* Switched to fs for all file system functions (#2331, @malcolmbarrett)
* Now uses testthat 3.0.0 to power `test()`, `test_active_file()`, `test_coverage()`, and `test_coverage_active_file()`.
The major difference is that `test_active_file()` now generates a compact summary that takes up less space on the console.
# devtools 2.3.2
* Fix for compatibility with withr 2.3.0
# devtools 2.3.1
* `check_win_*()` function now resets the email to the original email after
execution, this bug was fixed and crept back in (@muschellij2, #2152).
* `run_examples()` arguments `run` and `test` are deprecated in favor of the (hopefully) more clear `run_dontrun` and `run_donttest` (pkgload/#107).
* Previously deprecated functions `dr_devtools()` and `dr_github()` have been removed.
* Documentation has been synced with remotes 2.2.0
# devtools 2.3.0
* `build()` now errors with a more informative error message when passed an
invalid `pkg`. (#2177)
* New `build_rmd()` can build any `.Rmd` file in a clean session.
* `dev_sitrep()` now works correctly when R is out of date (#2204)
# devtools 2.2.2
* `install_dev_deps()` now passes formal args onto `remotes::install_deps()`
(@t-gibson, #2166)
* `spell_check()` now checks if `spelling` is installed and prompts users to
install it if not (@mikemahoney218, #2172)
* `submit_cran()` now returns a more informative error when the CRAN submission
portal is down (#1958)
* `check()` gains a `vignettes` argument, to more easily disable checks for
vignettes (#2165).
* `check_win_*()` function now resets the email to the original email after
execution (@muschellij2, #2152).
* `check()` now sets `NOT_CRAN=true` by default, as was originally intended (#2135).
* `install_deps()` now supports `options("devtools.ellipsis_action")` as well
(#2169)
* `test()` now takes `stop_on_failure` as a formal argument (FALSE by default)
instead of in `...`. Its value is still passed to `testthat::test_dir` as
before (@infotroph, #2129).
* `test()` and `test_coverage_file()` gain a `export_all` argument, which
controls if all functions in a package are automatically exported (#1201).
* `dev_sitrep()` now works if run outside a package directory (#2127).
* `release()` now works if the package root is not in the working directory.
# devtools 2.2.1
* `test()` now sets the collation order to `C` before running, which matches
the behavior of tests when run with `R CMD check` (#2121)
* New `options("devtools.ellipsis_action")` option added to control the action
of ellipsis in devtools. This should be one of
- `rlang::abort` - to emit an error if arguments are unused
- `rlang::warn` - to emit a warning if arguments are unused
- `rlang::inform` - to emit a message if arguments are unused
- `rlang::signal` - to emit a message if arguments are unused
Using `rlang::signal` will produce no output unless the custom condition is
caught, so it is the best way to retain backwards compatibility with devtools
behavior prior to 2.2.0.
The default behavior was also changed to issue a
warning rather than an error if any arguments are unused, as there are some
cases where devtools does not need to install the package, so unused
arguments are false positives (#2109).
* `install()` now throws an error when it fails, as intended (#2120)
* `install()` now again reloads and re-attaches packages if they were
previously loaded (#2111).
* `release()` no longer calls the deprecated `dr_devtools()` (#2105)
* `test()` now explicitly passes `stop_on_failure = FALSE` to
`testthat::test_dir()` (@jameslamb, #2099)
# devtools 2.2.0
## New Features
* `create()` added back, the RStudio IDE uses `create()` in the create packages
dialog, so removing it in version 2.1.0 broke old versions of the IDE.
* New `dev_sitrep()` function to return information about your development
environment and diagnose common problems. The former functions
`dr_devtools()` and `dr_github()` have been deprecated. (#1970)
* All functions taking `...` now use the ellipsis package. This catches errors
when arguments are misspelled or incorrectly specified (#2016)
## Minor improvements and fixes
* `build_vignettes()` now correctly installs the vignette builder if it is not
already installed (#2089).
* `dev_sitrep()` now uses the same endpoint to detect the current RStudio
version as the IDE (#2050).
* `document()` gains a `quiet` parameter, to silence output and `check()` now
passes its quiet argument to it (#1986).
* Add the DT package as a dependency, so that `test_coverage()` and
`test_coverage_file()` work without having to install additional packages
(#2085).
* `check_man()` now succeeds when `tools::undoc()` returns empty results
(#1944).
* `check_win_*()` functions gain a `email` argument, so temporarily change the
email the check results will be sent to (#1723).
* `install()` now explicitly unloads packages before trying to install a new
version (#2094).
* All `install_*()` functions now attach build tools to the PATH, which makes them work on
Windows when RTools is not on the default PATH (#2093).
* `test_coverage_file()` now works when there is not a 1 to 1 correspondence
between test and source files (#2011).
* `release()` now works again when `pkg` is not the current working directory
(#1974).
* `release()` now works without error when `options("repos")` is unnamed (#1956).
* `create()` added, the RStudio IDE uses `create()`, so removing it in version 2.1.0
broke old versions of the IDE.
* In several places `http:` URLs were used instead of `https:`, the most
critical being in the `cran_mirror`, `cran_pacakges`, and `cran_submission_url`
values which could have enabled discrete activity disclosure and person-in-the-middle
attacks (i.e. changing the contents while uploading/downloading). All `http:`
URLS have been changed to `https:` URLs. (@hrbrmstr, #2091)
# devtools 2.1.0
## New Features
* `testthat` and `roxygen2` are now added to `Imports` rather than `Suggests`,
so they are automatically installed when you install devtools.
## Deprecated functions now removed
* `create()`, `create_description()`, `setup()`
`use_appveyor()`, `use_build_ignore()`, `use_code_of_conduct()`,
`use_coverage()`, `use_cran_badge()`, `use_cran_comments()`, `use_data()`,
`use_data_raw()`, `use_dev_version()`, `use_git()`, `use_git_hook()`,
`use_github()`, `use_github_links()`, `use_gpl3_license()`,
`use_mit_license()`, `use_news_md()`, `use_package()`, `use_package_doc()`,
`use_rcpp()`, `use_readme_md()`, `use_readme_rmd()`, `use_revdep()`,
`use_rstudio()`, `use_test()`, `use_testthat()`, `use_travis()`,
`use_vignette()`, have been removed after being deprecated in previous
releases. Use the versions in the [usethis](https://usethis.r-lib.org/)
package directly.
* `check_cran()`, `revdep_check()`, `revdep_check_print_problems()`,
`revdep_check_reset()`, `revdep_check_resume()`, `revdep_check_save_summary()`,
`revdep_email()` have been removed after being
deprecated in previous releases. It is recommended to use the
[revdepcheck](https://github.com/r-lib/revdepcheck) package instead.
* `system_check()`, `system_output()` have been removed after being deprecated
in previous releases. It is recommend to use the
[processx](https://processx.r-lib.org/) package instead.
* `build_win()` has been removed, after being deprecated in previous releases.
* `yesno()` as used in `release()` now has clearer synonyms for "yes" (@mattmalin, #1993)
## Minor improvements and fixes
* `check_rhub` gains a new argument `build_args` for arguments passed to
`R CMD build`. `...` is now passed to `rhub::check_for_cran()` (@gaborcsardi, @maelle, #2041)
* `build_manual()` now fails if the manual fails to build. (#2056)
* `test_file()` and `test_coverage_file()` now work with C
and C++ files in the src/ directory as well.
# devtools 2.0.2
* Two tests are now skipped when run on CRAN, as they fail due to an outdated
pandoc and restrictions on writing to the package library respectively.
* `load_all()` now accepts 'package' objects, regaining previous behavior in
devtools prior to 2.0.0 (#1923)
* `test()`, `test_coverage()` and `test_coverage_file()` now set the
`TESTTHAT_PKG` environment variable, so it is more consistent with running
the tests during `R CMD check` (testthat#787).
* `check()` now replaces existing environment variables rather than appending
them (#1914).
# devtools 2.0.1
This is a minor release mainly fixing bugs which snuck through in the devtools
2.0.0 release.
* `install()` now correctly passes the `upgrade` parameter to
`remotes::install_deps()` (@Paxanator, #1898).
* `install_deps()` now again works from any directory within a package (#1905)
* Add a RStudio addin for `test_coverage()`.
* All tests which use remote resources are now skipped on CRAN, to avoid
spurious failures
# devtools 2.0.0
Devtools 2.0.0 is a _major_ release that contains work from the past year and a
half, since the major devtools release (1.13.0).
This release splits the functionality in **devtools** into a number of smaller
packages which are simpler to develop and also easier for other packages to
depend on. In particular the following packages have been spun off in what we
are calling the 'conscious uncoupling' of **devtools**.
* remotes: Installing packages (i.e. `install_github()`).
* pkgbuild: Building binary packages (including checking if build tools are available) (i.e. `build()`).
* pkgload: Simulating package loading (i.e. `load_all()`).
* rcmdcheck: Running R CMD check and reporting the results (i.e. `check()`).
* revdepcheck: Running R CMD check on all reverse dependencies, and figuring
out what's changed since the last CRAN release (i.e. `revdep_check()`).
* sessioninfo: R session info (i.e. `session_info()`).
* usethis: Automating package setup (i.e. `use_test()`).
devtools will remain the main package developers will interact with when
writing R packages; it will just rely on these other packages internally
for most of the functionality.
## Breaking changes
There have been a number of breaking changes in this release, while this will
cause some short term pain for users it will result in a easier to understand
API in the future, so we feel the tradeoff is worthwhile.
* `devtools::install()` arguments have been changed as follows.
- `local` -> `build`
- `force_deps` -> `force`
- `upgrade_dependencies` -> `upgrade`
- `threads` -> Removed, but you can use `Ncpus`, which is passed by `...` to `install.packages()`
- `metadata` -> Removed
- `out_dir` -> Removed
- `skip_if_log_exists` -> Removed
* `check()` argument `check_version` has been renamed to `remote` to better
describe what tests are disabled (#1811)
* `get_path()`, `set_path()`, `add_path()` and `on_path()` have been removed,
this functionality is available with `withr::with_path()` (#1796).
* The `lang` argument to `spell_check()` was removed, for compatibility with
[spelling](https://CRAN.R-project.org/package=spelling) v1.1. (#1715)
* The previously deprecated `with_` functions have now been removed. The
functionality has been moved to the **withr** package.
* `RCMD()`, `clean_source()`, `eval_clean()` and `evalq_clean()` have been
removed. These functions never worked terribly well, and have been replaced
by the much better functions in **callr**.
* `build_win()` has been renamed to `check_win_release()`, `check_win_devel()`,
and `check_win_oldrelease()` (#1598).
## Deprecated functions
* Infrastructure functions (`use_*`) now use the implementations in **usethis**
and the versions in **devtools** are deprecated. If you use these from a package
you should switch your package to depend on **usethis** directly instead.
* The `revdep_check_*` functions have been deprecated in favor of the
**revdepcheck** package.
* `system_check()` and `system_output()` have been deprecated in factor of the
**processx** package.
## Major changes
* All `install_*()` functions are now re-exported from **remotes** rather than
being defined in **devtools**
* **devtools** now depends on **roxygen2** 6.1.0: this considerably simplifies
`devtools::document()` and makes it more consistent with
`roxygen2::roxygenise()`.
* `test_file()` function added to test one or more files from a package
(#1755).
* `test_coverage()` function added to provide a helper to compute test coverage
using **covr** (#1628).
* `test_file()` and `test_coverage_file()` now have RStudio addins (#1650)
* `test_file_coverage()` function added to show the test coverage of one or
more files from a package. (#1755).
* `session_info()` now uses the implementation in the **sessioninfo** package.
Packages using `devtools::session_info()` are encouraged to switch to using
`sessioninfo::session_info()` instead.
* `package_info()` function now re-exported from the **sessioninfo** package.
* `check()` now uses **rcmdcheck** to run and parse R CMD check output (#1153).
* Code related to simulating package loading has been pulled out into a
separate package, **pkgload**. The following functions have been moved to
pkgload without a shim: `clean_dll()`, `compile_dll()`, `dev_example()`,
`dev_help()`, `dev_meta()`, `find_topic()`, `imports_env()`, `inst()`,
`load_code()`, `load_dll()`, `ns_env()`, `parse_ns_file()`, `pkg_env()`.
These functions are primarily for internal use.
`load_all()` and `unload()` have been moved to pkgload, but **devtools**
provides shims since these are commonly used.
* `find_rtools()`, `setup_rtools()`, `has_devel()`, `compiler_flags()`,
`build()` and `with_debug()` have moved to the new **pkgbuild** package.
`build()` and `with_debug()` are re-exported by **devtools**
* The `spell_check()` code has been moved into the new **spelling** package and
has thereby gained support for vignettes and package wordlists. The **devtools**
function now wraps `spelling::spell_check_package()`.
## Minor improvements and fixes
* `check_win_*()` now build the package with `manual = TRUE` by default (#1890).
* `check()` output now works more nicely with recent changes to **rcmdcheck** (#1874).
* `reload()` now reloads loaded but not attached packages as well as attached ones.
* Executed `styler::style_pkg()` to update code style (#1851, @amundsenjunior).
* `save_all()` helper function wraps `rstudioapi::documentSaveAll()` calls (#1850, @amundsenjunior).
* `check()` now allows users to run without `--timings` (#1655)
* `update_packages()` better documented to advertise it can be used to update
packages installed by any of the `install_*` functions.
* `check()` gains a `incoming` option to toggle the CRAN incoming checks.
* `build_vignette()` gains a `keep_md` option to allow keeping the intermediate markdown output (#1726)
* `remote_sha.github()` now correctly looks up SHA in private repositories
(#1827, @renozao).
* **devtools** `use_*()` functions now temporarily set the active **usethis** project
if given a pkg argument that is not the current directory. This provides
backwards compatibility with previous behavior (#1823).
* Vignettes are now built in a separate process, and the package is installed
before building the vignettes (#1822)
* `build_readme()` added to build the README.md from a README.Rmd (#1762)
* `build_vignettes()` now has a `clean` and `upgrade` arguments, to control
cleaning of intermediate files and upgrading vignette dependencies
respectively. (#1770).
* `release()` gains an additional question ensuring you updated codemeta.json
if one exists (#1774, #1754)
* `test()` now sets `useFancyQuotes = FALSE` to better mimic the environment tests
are run under with `R CMD check` (#1735).
* `test()` no longer passes encoding argument to `testthat::test_dir()` (#1776)
* `install_url()` can now install package binaries on windows (#1765)
* Fix skipping when installing from a full SHA (#1624)
* add `pkgdown::build_site()` wrapper (@kiwiroy, #1777)
* add pkgdown site (https://devtools.r-lib.org) (#1779, @jayhesselberth)
* `install_version()` can now install current version of CRAN package on Windows
and macOS (@jdblischak, #1730)
* The CRAN-RELEASE file is now added to .Rbuildignore (#1711)
* `check()` and `check_built()` now have an `error_on` argument to specify if
they should throw an error on check failures. When run non-interactively this
is set to "warnings" unless specified.
* `check()` now sets `_R_CHECK_CRAN_INCOMING_REMOTE_` instead of
`_R_CHECK_CRAN_INCOMING_`on R versions which support the former option
(#1271, #1276, #1702).
* Now use cli package to draw rules - they are more aesthetically pleasing
and the correct width in the RStudio build pane (#1627).
* `release()` has been tweaked to reflect modern submission workflow and to
ask questions rather than running code for you (#1632).
* `document()`, `load_all()`, `check()`, `build()` and `test()` now
automatically save open files when they are run inside the RStudio IDE. (#1576)
* New `check_rhub()` function to check packages using .
* `run_examples` was mistakenly passing `show` to
`pkgload::run_example`, causing it to fail (@amcdavid, #1449)
* New `build_manual()` function that produces pdf manual for the package
(@twolodzko, #1238).
* If you use git `release()` now generates a file called `CRAN-RELEASE`
that reminds you to tag the commit that you submitted to CRAN (#1198).
* `release()` once again looks for additional release questions in the
correct environment (#1434).
* `submit_cran()` now checks that you're ready to submit, since this is a
potentially expensive operation (#1228)
* `check()` defaults to running `document()` only if you have used
roxygen previously (#1437).
* Signal an error if commas are missing in between remote entries (#1511,
@ianmcook).
* `build_vignettes()` gains a quiet argument (#1543).
* `source_gist()` works once more when there is only a single file
in the gist (#1266).
* In order to not run test helpers in `document()`, the `helpers` argument of
`load_all()` is set to `FALSE` (@nbenn, #1669)
* The `my_unzip()` function is now able to use the `utils::unzip` fallback when
R is compiled from source with no *unzip* package present
(@theGreatWhiteShark, #1678)
* If the **foghorn** package is installed, `release()` displays the results
of the CRAN checks (#1672, @fmichonneau).
# devtools 1.13.5
* Fix two test errors related to GitHub rate limiting and mocking base functions.
# devtools 1.13.4
* Fix test errors for upcoming testthat release.
# devtools 1.13.3
* Workaround a change in how Rcpp::compileAttributes stores the symbol names
that broke tests.
# devtools 1.13.2
* Workaround a regression in Rcpp::compileAttributes. Add trimws implementation
for R 3.1 support.
# devtools 1.13.1
* Bugfix for installing from git remote and not passing git2r credentials
(@james-atkins, #1498)
* Bugfix for installation of dependencies of dependencies (@jimhester, #1409).
* Bugfix for installation of dependencies in CRAN-like repositories such as
those created by drat (@jimhester, #1243, #1339).
* `load_all()` no longer automatically creates a description for you.
* `use_test()` template no longer includes useless comments (#1349)
* Fix `test()` compatibility with testthat versions 1.0.2 (#1503).
* Fix `install_version()`, `install_bitbucket()`, `install_local()`,
`install_url()`, `install_svn()`, `install_bioc()` gain `quiet` arguments and
properly pass them to internal functions. (#1502)
# devtools 1.13.0
## New Features
* `spell_check` gains a `dict` argument to set a custom language or dictionary
* `release()` now checks documentation for spelling errors by default.
* New `use_gpl3_license()` sets the license field in `DESCRIPTION` and
includes a copy of the license in `LICENSE`.
## Revdep check improvements
* Various minor improvements around checking of reverse dependencies
(#1284, @krlmlr). All packages involved are listed at the start,
the whole process is now more resilient against package
installation failures.
* `revdep_check()` and `revdep_check_resume()` gain a skip argument
which takes a character vector of packages to skip.
* `revdep_check()` and `check_cran()` gain a `quiet_check` argument.
You can use `quiet_check = FALSE` to see the actual text of R CMD
check as it runs (not recommending with multiple threads).
* `revdep_check_resume()` now takes `...` which can be used to
override settings from `revdep_check()`. For debugging a problem
with package checks, try
`revdep_check(threads = 1, quiet_check = FALSE)`
* `revdep_check()` collects timing information in `timing.md` (#1319, @krlmlr).
* Package names and examples are sorted in case-insensitive C collation (#1322, @krlmlr).
* `use_revdep()` adds `.gitignore` entry for check database (#1321, @krlmlr).
* Own package is installed in temporary library for revdep checking (#1338, @krlmlr).
* Automated revdep check e-mails now can use the new `my_version` and
`you_cant_install` variables. The e-mail template has been updated
to use these variables (#1285, @krlmlr).
* Installation failures are logged during revdep checking, by default in
`revdep/install`. Once an installation has failed, it is not attempted
a second time (#1300, @krlmlr).
* Print summary table in README.md and problems.md (#1284, @krlmlr).
* Revdep check improvements (#1284)
## Bug fixes and minor improvements
* Handle case of un-installed package being passed to session_info (#1281).
* Using authentication to access Github package name. (#1262, @eriknil).
* `spell_check()` checks for hunspell before running (#1475, @jimvine).
* `add_desc_package()` checks for package dependencies correctly (#1463, @thomasp85).
* Remove deprecated `args` argument from `install_git()` to allow passthrough to `install` (#1373, @ReportMort).
* added a `quiet` argument to `install_bitbucket()`, with a default value
of `FALSE` (fixes issue #1345, @plantarum).
* `update_packages()` allows for override of interactive prompt (#1260, @pkq).
* `use_test()` template no longer includes useless comments (#1349)
* Add encoding support in `test_dir()` call by adding reference to pkg$encoding (#1306, @hansharhoff)
* Parse valid Git remote URLs that lack trailing `.git`, e.g. GitHub browser URLs (#1253, @jennybc).
* Add a `check_bioconductor()` internal function to automatically install
BiocInstaller() if it is not installed and the user wants to do so.
* Improve Git integration. `use_git_ignore()` and `use_git_config()` gain
`quiet` argument, tests work without setting `user.name` and `user.email` Git
configuration settings (#1320, @krlmlr).
* Improve Git status checks used in `release()` (#1205, @krlmlr).
* Improved handling of local `file://` repositories in `install()` (#1284, @krlmlr).
* `setup()` and `create()` gain new `quiet` argument (#1284, @krlmlr).
* Avoid unnecessary query of `available_packages()` (#1269, @krlmlr).
* Add cache setting to AppVeyor template (#1290, @krlmlr).
* Fix AppVeyor test by manually installing `curl` (#1301).
* `install(dependencies = FALSE)` doesn't query the available packages anymore (@krlmlr, #1269).
* `use_travis()` now opens a webpage in your browser to more easily activate
a repo.
* `use_readme_rmd()` and `use_readme()` share a common template with sections
for package overview, GitHub installation (if applicable), and an example
(@jennybc, #1287).
* `test()` doesn't load helpers twice anymore (@krlmlr, #1256).
* Fix auto download method selection for `install_github()` on R 3.1 which
lacks "libcurl" in `capabilities()`. (@kiwiroy, #1244)
* Fix removal of vignette files by not trying to remove files twice anymore (#1291)
* add timestamp to messages in `build_win()` (@achubaty, #1367).
# devtools 1.12.0
## New features
* New `install_bioc()` function and bioc remote to install Bioconductor
packages from their SVN repository.
* `install_dev_deps()` gets everything you need to start development on source
package - it installs all dependencies, and roxygen2 (#1193).
* `use_dev_version()` automates the process of switching from a release
version number by tweaking the `DESCRIPTION`, adding a heading to
`NEWS.md` (if present), and checking into git (if you use it) (#1076.)
* `use_github()` accepts a host argument, similar to `install_github()`
(@ijlyttle, #1101)
## Bug fixes and minor improvements
* Update with Rtools-3.4 information, (@jimhester)
* devtools now uses https to access the RStudio CRAN mirror if it will work
on your system (#1059)
* Handle case when a GitHub request returns a non-JSON error response.
(@jimhester, #1204, #1211)
* Suggested packages, including those specified as `Remotes:` are now installed
after package installation. This allows you to use circular `Remotes:`
dependencies for two related packages as long as one of the dependencies is a
Suggested package. (@jimhester, #1184, hadley/dplyr#1809)
* bug fix for installation of binary packages on windows, they must be
installed directly from a zip file. (@jimhester, #1191, #1192)
* `build_vignette()` will now only install the "VignetteBuilder" if it's
not present, not try and upgrade it if it is (#1139).
* `clean_dll()` Only removes package_name.def files and now operates
recursively. (@jimhester, #1175, #1159, #1161)
* `check_man()` now prints a message if no problems are found (#1187).
* `install_*` functions and `update_packages()` refactored to allow updating of
packages installed using any of the install methods. (@jimhester, #1067)
* `install_github()` now uses `https://api.github.com` as the host argument, so
users can specify 'http:' or other protocols if needed. (@jimhester, #1131, #1200)
* `load_all()` runs package hooks before sourcing test helper files
allowing test helper to make use of objects created when a package is loaded
or attached. (@imanuelcostigan, #1146)
* `revdep_check()` will now create the `revdep/` directory if it does not
already exist (#1178).
* `source_gist()` gains a `filename` argument to specify a particular file to
source from a GitHub gist. (@ateucher, #1172)
* Add a default codecov.yml file to turn off commenting with `use_coverage()`
(@jimhester, #1188)
* Bug fix for 'nchar(text) : invalid multibyte string' errors when running
`write_dcf()` on DESCRIPTION files with non-ASCII encodings (#1224, @jimhester).
# devtools 1.11.1
* Bug fix in `search_path_for_rtools()` using the gcc-4.9.3 toolchain when
there is no rtools setting in the windows registry. (@jimhester, #1155)
# devtools 1.11.0
## Infrastructure helpers
* `create_description()` now sets `Encoding: UTF-8`. This helps non-English
package authors (#1123).
* All `use_` function have been overhauled to be more consistent, particularly
around notification. Most functions now also ask to overwrite if a file
already exists (#1074).
* `use_coverage()` now adds covr to "Suggests", rather than recommending you
install it explicitly in `.travis.yml`.
* `use_cran_badge()` now uses HTTPS URL (@krlmlr, #1124).
* `use_github()` now confirms that you've picked a good title and description
(#1092) and prints the url of the repo (#1063).
* `use_news()`, and `use_test()` open the files in RStudio (if you're using
it and have the rstudioapi package installed).
* `use_testthat()` tells you what it's doing (#1056).
* `use_travis()` generates a template compatible with the newest R-travis.
* `use_readme_md()` creates a basic `README.md` template (#1064).
* `use_revdep()` has an updated template for the new revdep check
system (#1090, @krlmlr).
* Removed the deprecated `use_coveralls()`, `add_rstudio_project()`,
`add_test_infrastructure()`, and `add_travis()`.
* Deprecated `build_github_devtools()` has been removed.
## Checks and release()
* `check()` now always succeeds (instead of throwing an error when
`R CMD check` finds an `ERROR`), returning an object that summarises
the check failures.
* `check()` gains `run_dont_test` and `manual` arguments to control whether or
not `\donttest{}` tests are tested, or manuals are built. This defaults to
`FALSE`, but `release()` runs check with it set to `TRUE` (#1071; #1087,
@krlmlr).
* The `cleanup` argument to `check()` is deprecated: it now always returns
the path to the check directory.
* `check_built()` allows you to run `R CMD check` on an already built package.
* `check_cran()` suppresses X11 with `DISPLAY = ""`.
* `release()` has been tweaked to improve the order of the questions,
and to ensure that you're ok with problems. It warns if both `inst/NEWS.Rd`
and `NEWS.md` exist (@krlmlr, #1135), doesn't throw error if Git head is
detached (@krlmlr, #1136).
* `release()` gains an `args` argument to control build options, e.g.
to allow passing `args = "--compact-vignettes=both"` for packages with
heavy PDF vignettes (@krlmlr, #1077).
* `system_check()` gains new arguments `path` to controls the working directory
of the command, and `throw` to control whether or not it throws an error
on command failure. `env` has been renamed to the more explicit `env_vars`.
## Revdep checks
`revdep_check()` has been overhauled. All `revdep_` functions now work like
other devtools functions, taking a path to the package as the first argument.
`revdep_check()` now saves its results to disk as `check/check.rds`, and the other `revdep()` functions read from that cache. This also allows you to resume a partial run with `revdep_check_resume()`. This should be a big time saver if something goes unexpected wrong in the middle of the checks. You can blow away the cache and start afresh with `revdep_check_reset()`.
`revdep_check_save_summary()` now creates `README.md` to save one level of clicking in github. It also creates a `problems.md` that contains only results for only packages that had warnings or errors. Each problem is limited to at most 25 lines of output - this avoids lengthy output for failing examples. `revdep_check_print_problems()` prints a bulleted list of problems, suitable for inclusion in your `cran-comments.md`.
Summary results are reported as they come in, every then messages you'll get a message giving elapsed and estimated remaining time.
An experimental `revdep_email()` emails individual maintainers with their `R CMD check` summary results (#1014). See testthat and dplyr for example usage.
There were a handful of smaller fixes:
* `revdep_check()` doesn't complain about missing `git2r` package anymore
(#1068, @krlmlr).
* Package index caches for `revdep_check()` now time out after 30 minutes.
* `revdep_check_save_logs()` has been removed - it is just not that useful.
* `revdep_check_summary()` has been removed - it never should have been
part of the exported API.
## Other improvements
* Devtools now uses new gcc toolchain on windows, if installed (@jimhester).
* `install_git()` now allows you to pass credentials to git2r to specify
specific ssh credentials (@onlymee, #982)
* `load_all()` now sources all test helpers if you use testthat. This makes it
much easier to interactively run tests (#1125). `load_all()` also correctly
handles `unix` and `windows` subdirectories within `R` (@gaborcsardi, #1102)
* `build_win()` defaults to only R-devel, since this is most commonly
what you want.
* Help shims now inform you that you're using development documentation
(#1049).
* `git_sha1()` Fix fetching the latest git commit so that it also works
for shallow git clones, i.e. git clones which make use of depth.
(#1048, #1046, @nparley)
# devtools 1.10.0
## New features
* `curl`, `evaluate`, `roxygen2` and `rversions` have been moved from Imports
to Suggests to lighten the dependency load of devtools. If you run a
function that needs one of the packages, you'll prompted to install it
(#962, @jimhester).
* Devtools uses a new strategy for detecting RTools on windows: it now only
looks for Rtools if you need to `load_all()` or `build()` a package with
compiled code. This should make it easier to work with devtools if
you're developing pure R packages (#947).
* `package_file()` lets you find files inside a package. It starts by
finding the root directory of the package (i.e. the directory that contains
`DESCRIPTION`) (#985).
* `use_news_md()` adds a basic `NEWS.md` template (#957).
* `use_mit_license()` writes the necessary infrastructure to declare and
release an R package under the MIT license in a CRAN-compliant way.
(#995, @kevinushey)
* `check(cran = TRUE)` adds `--run-donttest` since you do need to test
code in `\dontest()` for CRAN submission (#1002).
## Package installation
* `install()` installs packages specified in the `Additional_repositories`
field, such as drat repositories. (#907, #1028, @jimhester). It
correctly installs missing dependencies (#1013, @gaborcsardi). If called on a
Bioconductor package, include the Bioconductor repositories if they are not
already set (#895, @jimhester).
* `install()` gains a `metadata` argument which lets you add extra fields to
the `DESCRIPTION` on install. (#1027, @rmflight)
* `install_github()` and `install_git()` only downloads and installs the
package if the remote SHA1 reference differs from the currently installed
reference (#903, @jimhester).
* `install_local()` captures git and github information and stores it in the
`DESCRIPTION` (#1027, @rmflight).
* `install_version()` is more robust when handling multiple repos (#943, #1030,
@jimhester).
* Bugfix for `Remotes: ` feature that prevented it from working if devtools was
not attached as is done in travis-r (#936, @jimhester).
## Bug fixes and minor improvements
* `check_dev_versions()` checks only package dependencies (#983).
* `check_man()` replaces `check_doc()` (since most other functions are
named after the corresponding directory). `check_doc()` will hang around
as an alias for the forseeable future (#958).
* `create()` produces a dummy namespace will fake comment so roxygen2 will
overwrite silently (#1016).
* `create()` and `setup()` are more permissive -- they now accept a path to
either a new directory or empty directory. (#966, @kevinushey)
* `document()` now only runs `update_collate()` once.
* `load_all()` resolves a longstanding lazy load database corruption issue when
reloading packages which define S3 methods on generics from base or other
packages (#1001, @jimhester).
* `release_checks()` gains two new checks:
* `check_vignette_titles()` checks that your vignette titles aren't the
default "Vignette Title" (#960, @jennybc).
* `check_news_md()` checks that `NEWS.md` isn't in your `.Rbuildignore`
(since it's now supported by CRAN, #1042).
* `revdep_check()`:
* More verbose about which package is installed (#926, @krlmlr)
* Verifies the integrity of already downloaded package archives
(#930, @krlmlr)
* Is now more tolerant of errors when retrieving the summary for a
checked package (#929, @krlmlr).
* When `ncpus > 1`, it includes the package name for when so you know
which package has failed and can start looking at the output without
needing to wait for all packages to finish (@mattdowle).
* Uses proper repository when `BiocInstaller::useDevel(TRUE)`
(#937, @jimhester).
* Shimmed `system.file()` now respects `mustWork = TRUE` and throws an error
if the file does not exist (#1034).
* `use_appveyor()` template now creates `failure.zip` artifact instead of
polluting the logs with `R CMD check` output (#1017, @krlmlr, @HenrikBengtsson).
* `use_cran_comments()` template has been improved (#1038).
* `use_data()` now warns when trying to save the same object twice,
and stops if there is no object to save (#948, @krlmlr).
* `use_revdep_check()` no longer includes `revdep_check_save_logs` in
default template. I found I never used the logs and they just cluttered up
the package directory (#1003).
* `with_*()` functions have moved into the withr package, and devtools
functions have been deprecated (#925, @jimhester).
# devtools 1.9.1
* Avoid importing heavy dependencies to speed up loading (#830, @krlmlr).
* Remove explicit `library(testthat)` call in `test()` (#798, @krlmlr).
* `as.package()` and `load_all()` gain new argument `create`. Like other
functions with a `pkg` argument, `load_all()` looks for a `DESCRIPTION` file
in parent directories - if `create = TRUE` it will be automatically
created if there's a `R/` or `data/` directory (#852, @krlmlr).
* `build_vignettes()` gains dependencies argument (#825, @krlmlr).
* `build_win()` now uses `curl` instead of `RCurl` for ftp upload.
* `build_win()` asks for consent to receive e-mail at maintainer address
in interactive mode (#800, @krlmlr).
* `check()` now uses a better strategy when `cran = TRUE`. Instead of
attempting to simulate `--as-cran` behaviour by turning on certain env vars,
it now uses `--as-cran` and turns off problematic checks with env vars (#866).
The problematic `cran_env_vars()` function has been removed.
* `find_rtools()` now looks for registry keys in both HKCU (user) and
HKLM (admin) locations (@Kevin-Jin, #844)
* `install()` can now install dependencies from remote repositories by
specifying them as `Remotes` in the `DESCRIPTION` file (#902, @jimhester).
See `vignette("dependencies")` for more details.
* `install_*()` detects if called on a Bioconductor package and if so,
automatically includes the Bioconductor repositories if needed (#895,
@jimhester).
* `install_deps()` now automatically upgrades out of date dependencies. This
is typically what you want when you're working on a development version of a
package. To suppress this behaviour, set `upgrade_dependencies = FALSE`
(#863). `install_deps()` is more careful with `...` - this means additional
arguments to `install_*` are more likely to work (#870).
* `install_gitorious()` has been removed since gitorious no longer exists
(#913).
* `load_all()` no longer fails if a `useDynLib()` entry in the NAMESPACE
is incorrect. This should make it easy to recover from an incorrect
`@useDynLib`, because re-documenting() should now succeed.
* `release()` works for packages not located at root of git repository
(#845, #846, @mbjones).
* `revdep_check()` now installs _suggested_ packages by default (#808), and
sets `NOT_CRAN` env var to `false` (#809). This makes testing more similar to
CRAN so that more packages should pass cleanly. It also sets `RGL_USE_NULL`
to `true` to stop rgl windows from popping up during testing (#897). It
also downloads all source packages at the beginning - this makes life a
bit easier if you're on a flaky internet connection (#906).
* New `uninstall()` removes installed package (#820, @krlmlr).
* Add `use_coverage()` function to add codecov.io or coveralls.io to a project,
deprecate `use_coveralls()` (@jimhester, #822, #818).
* `use_cran_badge()` uses canonical url form preferred by CRAN.
* `use_data()` also works with data from the parent frame (#829, @krlmlr).
* `use_git_hook()` now creates `.git/hooks` if needed (#888)
* GitHub integration extended: `use_github()` gains a `protocol` argument (ssh or https), populates URL and BugReports fields of DESCRIPTION (only if non-existent or empty), pushes to the newly created GitHub repo, and sets a remote tracking branch. `use_github_links()` is a new exported function. `dr_github()` diagnoses more possible problems. (#642, @jennybc).
* `use_travis()`: Default travis script leaves notifications on default
settings.
* `uses_testthat()` and `check_failures()` are now exported (#824, #839,
@krlmlr).
* `use_readme_rmd()` uses `uses_git()` correctly (#793).
* `with_debug()` now uses `with_makevars()` rather than `with_env()`, because R
reads compilation variables from the Makevars rather than the environment
(@jimhester, #788).
* Properly reset library path after `with_lib()` (#836, @krlmlr).
* `remove_s4classes()` performs a topological sort of the classes
(#848, #849, @famuvie).
* `load_all()` warns (instead of failing) if importing symbols, methods, or classes
from `NAMESPACE` fails (@krlmlr, #921).
# devtools 1.8.0
## Helpers
* New `dr_devtools()` runs some common diagnostics: are you using the
latest version of R and devtools? It is run automatically by
`release()` (#592).
* `use_code_of_conduct()` adds a contributor code of conduct from
http://contributor-covenant.org. (#729)
* `use_coveralls()` allows you to easily add test coverage with coveralls
(@jimhester, #680, #681).
* `use_git()` sets up a package to use git, initialising the repo and
checking the existing files.
* `use_test()` adds a new test file (#769, @krlmlr).
* New `use_cran_badge()` adds a CRAN status badge that you can copy into a README file. Green indicates package is on CRAN. Packages not yet submitted or accepted to CRAN get a red badge.
## Package installation and info
* `build_vignettes()` automatically installs the VignetteBuilder package,
if necessary (#736).
* `install()` and `install_deps()` gain a `...` argument, so additional
arguments can be passed to `utils::install.packages()` (@jimhester, #712).
`install_svn()` optionally accepts a revision (@lev-kuznetsov, #739).
`install_version()` now knows how to look in multiple repos (#721).
* `package_deps()` (and `dev_package_deps()`) determines all recursive
dependencies and whether or not they're up-to-date (#663). Use
`update(package_deps("xyz"))` to update out of date dependencies. This code
is used in `install_deps()` and `revdep_check()` - it's slightly more
aggressive than previous code (i.e. it forces you to use the latest version),
which should avoid problems when you go to submit to CRAN.
* New `update_packages()` will install a package (and its dependencies) only if
they are missing or out of date (#675).
* `session_info()` can now take a vector of package names, in which case it
will print the version of those packages and their dependencies (#664).
## Git and github
* Devtools now uses the git2r package to inspect git properties and install
remote git packages with `install_git()`. This should be considerably
more reliable than the previous strategy which involves calling the
command line `git` client. It has two small downsides: `install_git()`
no longer accepts additional `args`, and must do a deep clone when
installing.
* `dr_github()` checks for common problems with git/github setup (#643).
* If you use git, `release()` now warns you if you have uncommited changes,
or if you've forgotten to synchronise with the remote (#691).
* `install_github()` warns if repository contains submodules (@ashander, #751).
## Bug fixes and minor improvements
* Previously, devtools ran all external R processes with `R --vanilla`.
Now it only suppresses user profiles, and constructs a custom `.Rprofile` to
override the default. Currently, this `.Rprofile` sets up the `repos` option.
Among others, this enables the cyclic dependency check in `devtools::release`
(#602, @krlmlr).
* `R_BROWSER` and `R_PDFVIEWER` environment variables are set to "false" to
suppress random windows opening during checks.
* Devtools correctly identifies RTools 3.1 and 3.2 (#738), and
preserves continuation lines in the `DESCRIPTION` (#709).
* `dev_help()` now uses `normalizePath()`. Hopefully this will make it more
likely to work if you're on windows and have a space in the path.
* `lint()` gains a `cache` argument (@jimhester, #708).
* Fixed namespace issues related to `stats::setNames()` (#734, #772) and
`utils::unzip()` (#761, @robertzk).
* `release()` now reminds you to check the existing CRAN check results page
(#613) and shows file size before uploading to CRAN (#683, @krlmlr).
* `RCMD()` and `system_check()` are now exported so they can be used by other
packages. (@jimhester, #699).
* `revdep_check()` creates directories if needed (#759).
* `system_check()` combines arguments with ` `, not `, `. (#753)
* `test()` gains an `...` argument so that additional arguments can be passed
to `testthat::test_dir` (@jimhester, #747)
* `use_travis()` now suggests you link to the svg icon since that looks a
little sharper. Default template sets `CRAN: http://cran.rstudio.com/` to
enable the cyclic dependency check.
* `NOT_CRAN` envvar no longer overrides externally set variable.
* `check(check_version = TRUE)` also checks spelling of the `DESCRIPTION`; if no
spell checker is installed, a warning is given (#784, @krlmlr).
# devtools 1.7.0
## Improve reverse dependency checking
Devtools now supports a new and improved style of revdep checking with `use_revdep()`. This creates a new directory called `revdep` which contains a `check.R` template. Run this template to check all reverse dependencies, and save summarised results to `check/summary.md`. You can then check this file into git, making it much easier to track how reverse dependency results change between versions. The documentation for `revdep_check()` is much improved, and should be more useful (#635)
I recommend that you specify a library to use when checking with `options("devtools.revdep.libpath")`. (This should be a directory that already exists). This should be difference from your default library to keep the revdep environment isolated from your development environment.
I've also tweaked the output of `revdep_maintainers()` so it's easier to copy and paste into an email (#634). This makes life a little easier pre-release.
## New helpers
* `lint()` runs `lintr::lint_package()` to check style consistency and errors
in a package. (@jimhester, #694)
* `use_appveyor()` sets up a package for testing with AppVeyor (@krlmlr, #549).
* `use_cran_comments()` creates a `cran-comments.md` template and adds it
to `.Rbuildignore` to help with CRAN submissions. (#661)
* `use_git_hook()` allows you to easily add a git hook to a package.
* `use_readme_rmd()` sets up a template to generate a `README.md` from a
`README.Rmd` with knitr.
## Minor improvements
* Deprecated `doc_clean` argument to `check()` has been removed.
* Initial package version in `create()` is now `0.0.0.9000` (#632).
`create()` and `create_description()` checks that the package name is
valid (#610).
* `load_all()` runs `roxygen2::update_collate()` before loading code. This
ensures that files are sourced in the way you expect, as defined by
roxygen `@include` tags. If you don't have any `@include` tags, the
collate will be not be touched (#623).
* `session_info()` gains `include_base` argument to also display loaded/attached
base packages (#646).
* `release()` no longer asks if you've read the CRAN policies since the
CRAN submission process now asks the same question (#692).
`release(check = TRUE)` now runs some additional custom checks. These include:
* Checking that you don't depend on a development version of a package.
* Checking that the version number has exactly three components (#633).
`release()` now builds packages without the `--no-manual` switch, both for
checking and for actually building the release package (#603, @krlmlr).
`build()` gains an additional argument `manual`, defaulting to `FALSE`,
and `check()` gains `...` unmodified to `build()`.
* `use_travis()` now sets an environment variable so that any WARNING will
also cause the build to fail (#570).
* `with_debug()` and `compiler_flags()` set `CFLAGS` etc instead of
`PKG_CFLAGS`. `PKG_*` are for packages to use, the raw values are for users
to set. (According to http://cran.rstudio.com/doc/manuals/r-devel/R-exts.html#Using-Makevars)
* New `setup()` works like `create()` but assumes an existing, not necessarily
empty, directory (#627, @krlmlr).
## Bug fixes
* When installing a pull request, `install_github()` now uses the repository
associated with the pull request's branch (and not the repository of the user
who created the pull request) (#658, @krlmlr).
* `missing_s3()` works once again (#672)
* Fixed scoping issues with `unzip()`.
* `load_code()` now executes the package's code with the package's root as
working directory, just like `R CMD build` et al. (#640, @krlmlr).
# devtools 1.6.1
* Don't set non-portable compiler flags on Solaris.
* The file `template.Rproj` is now correctly installed and the function
`use_rstudio` works as it should. (#595, @hmalmedal)
* The function `use_rcpp` will now create the file `src/.gitignore` with the
correct wildcards. (@hmalmedal)
* The functions `test`, `document`, `load_all`, `build`, `check` and any
function that applies to some package directory will work from subdirectories
of a package (like the "R" or "inst/tests" directories). (#616, @robertzk)
# devtools 1.6
## Tool templates and `create()`
* `create()` no longer generates `man/` directory - roxygen2 now does
this automatically. It also no longer generates an package-level doc
template. If you want this, use `use_package_doc()`. It also makes a dummy
namespace so that you can build & reload without running `document()` first.
* New `use_data()` makes it easy to include data in a package, either
in `data/` (for exported datasets) or in `R/sysdata.rda` (for internal
data). (#542)
* New `use_data_raw()` creates `data-raw/` directory for reproducible
generation of `data/` files (#541).
* New `use_package()` allows you to set dependencies (#559).
* New `use_package_doc()` sets up an Roxygen template for package-level
docs.
* New `use_rcpp()` sets up a package to use Rcpp.
* `use_travis()` now figures out your github username and repo so it can
construct the markdown for the build image. (#546)
* New `use_vignette()` creates a draft vignette using Rmarkdown (#572).
* renamed `add_rstudio_project()` to `use_rstudio()`, `add_travis()` to
`use_travis()`, `add_build_ignore()` to `use_build_ignore()`, and
`add_test_infrastructure()` to `use_testthat()` (old functions are
aliased to new)
## The release process
* You can add arbitrary extra questions to `release()` by defining a function
`release_questions()` in your package. Your `release_questions()` should
return a character vector of questions to ask (#451).
* `release()` uses new CRAN submission process, as implemented by
`submit_cran()` (#430).
## Package installation
* All `install_*` now use the same code and store much useful metadata.
Currently only `session_info()` takes advantage of this information,
but it will allow the development of future tools like generic update
functions.
* Vignettes are no longer installed by default because they potentially require
all suggested packages to also be installed. Use `build_vignettes = TRUE` to
force building and to install all suggested packages (#573).
* `install_bitbucket()` has been bought into alignment with `install_github()`:
this means you can now specify repos with the compact `username/repo@ref`
syntax. The `username` is now deprecated.
* `install_git()` has been simplified and many of the arguments have changed
names for consistency with metadata for other package installs.
* `install_github()` has been considerably improved:
* `username` is deprecated - please include the user in the repo name:
`rstudio/shiny`, `hadley/devtools` etc.
* `dependencies = TRUE` is no longer forced (regression in 1.5)
(@krlmlr, #462).
* Deprecated parameters `auth_user`, `branch`, `pull` and `password` have
all been removed.
* New `host` argument which allows you to install packages from github
enterprise (#410, #506).
* The GitHub API is used to download archive file (@krlmlr, #466) - this
makes it less likely to break in the future.
* To download a specified pull request, use `ref = github_pull(...)`
(@krlmlr, #509). To install the latest release, use `"user/repo@*release"`
or `ref = github_release()` (@krlmlr, #350).
* `install_gitorious()` has been bought into alignment with `install_github()`:
this means you can now specify repos with the compact `username/repo@ref`
syntax. You must now always supply user (project) name and repo.
* `install_svn()` lets you install an R package from a subversion repository
(assuming you have subversion installed).
* `decompress()` and hence `install_url()` now work when the downloaded
file decompresses without additional top-level directory (#537).
## Other minor improvements and bug fixes
* If you're using RStudio, and you're trying to build a binary package
without the necessary build tools, RStudio will prompt to download and
install the right thing. (#488)
* Commands are no longer run with `LC_ALL=C` - this no longer seems
necessary (#507).
* `build(binary = TRUE)` creates an even-more-temporary package library
avoid conflicts (#557).
* `check_dir()` no longer fails on UNC paths (#522).
* `check_devtools()` also checks for dependencies on development versions
of packages (#534).
* `load_all()` no longer fails on partial loading of a package containing
S4 or RC classes (#577).
* On windows, `find_rtools()` is now run on package load, not package
attach.
* `help()`, `?`, and `system.file()` are now made available when a package is
loaded with `load_all()`, even if the devtools package isn't attached.
* `httr` 0.3 required (@krlmlr, #466).
* `load_all()` no longer gives an error when objects listed as exports are
missing.
* Shim added for `library.dynam.unload()`.
* `loaded_packages()` now returns package name and path it was loaded from.
(#486)
* The `parenvs()` function has been removed from devtools, because is now in the
pryr package.
* `missing_s3()` uses a better heuristic for determining if a function
is a S3 method (#393).
* New `session_info()` provides useful information about your R session.
It's a little more focussed than `sessionInfo()` and includes where
packages where installed from (#526).
* `rstudioapi` package moved from suggests to imports, since it's always
needed (it's job is to figure out if rstudio is available, #458)
* Implemented own version `utils::unzip()` that throws error if command
fails and doesn't print unneeded messages on non-Windows platforms (#540).
* Wrote own version of `write.dcf()` that doesn't butcher whitespace and
fieldnames.
## Removed functionality
* The `fresh` argument to `test()` has been removed - this is best done by
the editor since it can run the tests in a completely clean environment
by starting a new R session.
* `compile_dll()` can now build packages located in R's `tempdir()`
directory (@richfitz, #531).
# devtools 1.5
Four new functions make it easier to add useful infrastructure to packages:
* `add_test_infrastructure()` will create test infrastructure for a new package.
It is called automatically from `test()` if no test directories are
found, the session is interactive and you agree.
* `add_rstudio_project()` adds an RStudio project file to your package.
`create()` gains an `rstudio` argument which will automatically create
an RStudio project in the package directory. It defaults to `TRUE`:
if you don't use RStudio, just delete the file.
* `add_travis()` adds a basic travis template to your package. `.travis.yml`
is automatically added to `.Rbuildignore` to avoid including it in the built
package.
* `add_build_ignore()` makes it easy to add files to `.Rbuildignore`,
correctly escaping special characters
Two dependencies were incremented:
* devtools requires at least R version 3.0.2.
* `document()` requires at least roxygen2 version 3.0.0.
## Minor improvements
* `build_win()` now builds R-release and R-devel by default (@krlmlr, #438).
It also gains parameter `args`, which is passed on to `build()`
(@krlmlr, #421).
* `check_doc()` now runs `document()` automatically.
* `install()` gains `thread` argument which allows you to install multiple
packages in parallel (@mllg, #401). `threads` argument to `check_cran()`
now defaults to `getOption("Ncpus")`
* `install_deps(deps = T)` no longer installs all dependencies of
dependencies (#369).
* `install_github()` now prefers personal access tokens supplied to
`auth_token` rather than passwords (#418, @jeroenooms).
* `install_github()` now defaults to `dependencies = TRUE` so you definitely
get all the packages you need to build from source.
* devtools supplies its own version of `system.file()` so that when the function
is called from the R console, it will have special behavior for packages
loaded with devtools.
* devtools supplies its own version of `help` and `?`, which will search
devtools-loaded packages as well as normally-loaded packages.
## Bug fixes
* `check_devtools()` no longer called by `check()` because the relevant
functionality is now included in `R CMD CHECK` and it was causing
false positives (#446).
* `install_deps(TRUE)` now includes packages listed in `VignetteBuilder` (#396)
* `build()` no longer checks for `pdflatex` when building vignettes, as
many modern vignettes don't need it (#398). It also uses
`--no-build-vignettes` for >3.0.0 compatibility (#391).
* `release()` does a better job of opening your email client if you're inside
of RStudio (#433).
* `check()` now correctly reports the location of the `R CMD
check` output when called with a custom `check_dir`. (Thanks to @brentonk)
* `check_cran()` records check times for each package tested.
* Improved default `DESCRIPTION` file created by `create_description()`.
(Thanks to @ncarchedi, #428)
* Fixed bug in `install_github()` that prevented installing a pull request by
supplying `repo = "username/repo#pull"`. (#388)
* explicitly specify user agent when querying user name and ref for pull request
in `install_github`. (Thanks to Kirill Müller, #405)
* `install_github()` now removes blank lines found in a package `DESCRIPTION`
file, protecting users from the vague `error: contains a blank line` error.
(#394)
* `with_options()` now works, instead of throwing an error (Thanks to
@krlmlr, #434)
# devtools 1.4.1
* Fixed bug in `wd()` when `path` was omitted. (#374)
* Fixed bug in `dev_help()` that prevented it from working when not using
RStudio.
* `source_gist()` respects new github policy by sending user agent
(hadley/devtools)
* `install_github()` now takes repo names of the form
`[username/]repo[/subdir][@ref|#pull]` -
this is now the recommended form to specify username, subdir, ref and/or
pull for install_github. (Thanks to Kirill Müller, #376)
# devtools 1.4
## Installation improvements
* `install()` now respects the global option `keep.source.pkgs`.
* `install()` gains a `build_vignettes` which defaults to TRUE, and ensures
that vignettes are built even when doing a local install. It does this
by forcing `local = FALSE` if the package has vignettes, so `R CMD build`
can follow the usual process. (#344)
* `install_github()` now takes repo names of the form `username/repo` -
this is now the recommended form for install_github if your username is
not hadley ;)
* `install_github()` now adds details on the source of the installed package
(e.g. repository, SHA1, etc.) to the package DESCRIPTION file. (Thanks to JJ
Allaire)
* Adjusted `install_version()` to new meta data structure on CRAN.
(Thanks to Kornelius Rohmeyer)
* Fixed bug so that `install_version()` works with version numbers that
contain hyphens. (Thanks to Kornelius Rohmeyer)
* `install_deps()` is now exported, making it easier to install the dependencies
of a package.
## Other minor improvements
* `build(binary = TRUE)` now no longer installs the package as a side-effect.
(#335)
* `build_github_devtools()` is a new function which makes it easy for Windows
users to upgrade to the development version of devtools.
* `create_description()` does a better job of combining defaults and user
specified options. (#332)
* `install()` also installs the dependencies that do not have the required
versions; besides, the argument `dependencies` now works like
`install.packages()` (in previous versions, it was essentially
`c("Depends", "Imports", "LinkingTo")`) (thanks, Yihui Xie, #355)
* `check()` and `check_cran()` gain new `check_dir` argument to control where
checking takes place (#337)
* `check_devtools()` no longer incorrectly complains about a `vignettes/`
directory
* Decompression of zip files now respects `getOption("unzip")` (#326)
* `dev_help` will now use the RStudio help pane, if you're using a recent
version of RStudio (#322)
* Release is now a little bit smarter: if it's a new package, it'll ask you
to read and agree to the CRAN policies; it will only ask about
dependencies if it has any.
* `source_url()` (and `source_gist()`) accept SHA1 prefixes.
* `source_gist()` uses the GitHub API to reliably locate the raw gist.
Additionally it now only attempts to source files with `.R` or `.r`
extensions, and gains a `quiet` argument. (#348)
* Safer installation of source packages, which were previously extracted
directly into the temp directory; this could be a problem if directory
names collide. Instead, source packages are now extracted into unique
subdirectories.
# devtools 1.3
## Changes to best practices
* The documentation for many devtools functions has been considerably expanded,
aiming to give the novice package developer more hints about what they should
be doing and why.
* `load_all()` now defaults to `reset = TRUE` so that changes to the NAMESPACE
etc. are incorporated. This makes it slightly slower (but hopefully not
noticeably so), and generally more accurate, and a better simulation of
the install + restart + reload cycle.
* `test()` now looks in both `inst/test` and `tests/testthat` for unit tests.
It is recommended to use `tests/testthat` because it allows users to
choose whether or not to install test. If you move your tests from
`inst/tests` to `tests/testthat`, you'll also need to change
`tests/test-all.R` to run `test_check()` instead of `test_package()`.
This change requires testthat 0.8 which will be available on CRAN shortly.
* New devtools guarantee: if because of a devtools bug, a CRAN maintainer yells
at you, I'll send you a hand-written apology note. Just forward me the email
and your address.
## New features
* New `install_local()` function for installing local package files
(as zip, tar, tgz, etc.) (Suggested by landroni)
* `parse_deps()`, which parses R's package dependency strings, is now exported.
* All package and user events (e.g. load, unload, attach and detach) are now
called in the correct place.
## Minor improvements and bug fixes
* `build()` gains `args` parameter allowing you to add additional arbitrary
arguments, and `check()` gains similar `build_args` parameter.
* `install_git` gains `git_arg` parameter allowing you to add arbitrary
additional arguments.
* Files are now loaded in a way that preserves srcreferences - this means
that you will get much better locations on error messages, which should
considerably aid debugging.
* Fixed bug in `build_vignettes()` which prevented files in `inst/doc` from
being updated
* `as.package()` no longer uses the full path, which should make for nicer
error messages.
* More flexibility when installing package dependencies with the
`dependencies` argument to `install_*()` (thanks to Martin Studer)
* The deprecated `show_rd()` function has now been removed.
* `install_bitbucket()` gains `auth_user` and `password` params so that you can
install from private repos (thanks to Brian Bolt)
* Better git detection on windows (thanks to Mikhail Titov)
* Fix bug so that `document()` will automatically create `man/` directory
* Default `DESCRIPTION` gains `LazyData: true`
* `create_description()` now checks that the directory is probably a package
by looking for `R/`, `data/` or `src/` directories
* Rolled back required R version from 3.0 to 2.15.
* Add missing import for `digest()`
* Bump max compatible version of R with RTools 3.0, and add details for
RTools 3.1
# devtools 1.2
## Better installation
* `install` gains a `local` option for installing the package from the local
package directory, rather than from a built tar.gz. This is now used by
default for all package installations. If you want to guarantee a clean
build, run `local = FALSE`
* `install` now uses option `devtools.install.args` for default installation
arguments. This allows you to set any useful defaults (e.g. `--no-multiarch`)
in your Rprofile.
* `install_git` gains `branch` argument to specify branch or tag (Fixes #255)
## Clean sessions
* `run_examples` and `test` gain a `fresh` argument which forces them to run
in a fresh R session. This completely insulates the examples/tests from your
current session but means that interactive code (like `browser()`) won't work.(Fixes #258)
* New functions `eval_clean` and `evalq_clean` make it easy to evaluate code
in a clean R session.
* `clean_source` loses the `vanilla` argument (which did not work) and gains
a `quiet` argument
## New features
* `source_url` and `source_gist` now allow you to specify a sha, so you can
make sure that files you source from the internet don't change without you
knowing about it. (Fixes #259)
* `build_vignettes` builds using `buildVignette()` and movies/copies outputs
using the same algorithm as `R CMD build`. This means that
`build_vignettes()` now exactly mimics R's regular behaviour, including
building non-Sweave vignettes (#277), building in the correct directory
(#231), using make files (if present), and copying over extra files.
* devtools now sets best practice compiler flags: from `check()`,
`-Wall -pedantic` and from `load_all()`, `-Wall -pedantic -g -O0 -UNDEBUG`.
These are prefixed to existing environment variables so that you can override
them if desired. (Fixes #257)
* If there's no `DESCRIPTION` file present, `load_all()` will automatically
create one using `create_description()`. You can set options in your
`.Rprofile` to control what it contains: see `package?devtools` for more
details.
## Minor improvements
* `check()` now also sets environment variable
`_R_CHECK_CODE_DATA_INTO_GLOBALENV_` to TRUE (to match current `--as-cran`
behaviour) (Fixes #256)
* Improved default email sent by `release()`, eliminating `create.post()`
boilerplate
* `revdep` includes LinkingTo by default.
* Fixed regular expression problem that caused RTools `3.0.*` to fail to be
found on Windows.
* `load_data()` got an overhaul and now respects `LazyData` and correctly
exports datasets by default (Fixes #242)
* `with_envvar` gains the option to either replace, prefix or suffix existing
environmental variables. The default is to replace, which was the previous
behaviour.
* `check_cran` includes `sessionInfo()` in the summary output (Fixes #273)
* `create()` gains a `check` argument which defaults to FALSE.
* `with_env` will be deprecated in 1.2 and removed in 1.3
* When `load_all()` calls `.onAttach()` and `.onLoad()`, it now passes the
lib path to those functions.
# devtools 1.1
* `source_gist()` has been updated to accept new gist URLs with username.
(Fixes #247)
* `test()` and `document()` now set environment variables, including NOT_CRAN.
* Test packages have been renamed to avoid conflicts with existing packages on
CRAN. This bug prevented devtools 1.0 from passing check on CRAN for some
platforms.
* Catch additional case in `find_rtools()`: previously installed, but directory
empty/deleted (Fixes #241)
# devtools 1.0
## Improvements to package loading
* Rcpp attributes are now automatically compiled during build.
* Packages listed in depends are `require()`d (Fixes #161, #178, #192)
* `load_all` inserts a special version of `system.file` into the package's
imports environment. This tries to simulate the behavior of
`base::system.file` but gives modified results because the directory structure
of installed packages and uninstalled source packages is different.
(Fixes #179). In other words, `system.file` should now just work even if the
package is loaded with devtools.
* Source files are only recompiled if they've changed since the last run, and
the recompile will be clean (`--preclean`) if any exported header files have
changed. (Closes #224)
* The compilation process now performs a mock install instead of using
`R CMD SHLIB`. This means that `Makevars` and makefiles will now be respected
and generally there should be fewer mismatches between `load_all` and
the regular install and reload process.
* S4 classes are correctly loaded and unloaded.
## Windows
* Rtools detection on windows has been substantially overhauled and should both
be more reliable, and when it fails give more information about what is wrong
with your install.
* If you don't have rtools installed, devtools now automatically sets the TAR
environment variable to internal so you can still build packages.
## Minor features
* `check_cran` now downloads packages from cran.rstudio.com.
* `check()` now makes the CRAN version check optional, and off by default. The
`release()` function still checks the version number against CRAN.
* In `check()`, it is optional to require suggested packages, using the
`force_suggests` option.
* When `check()` is called, the new default behavior is to not delete existing
.Rd files from man/. This behavior can be set with the "devtools.cleandoc"
option.
* `install_bitbucket()` now always uses lowercase repo names. (Thanks to mnel)
* New function `with_lib()`, which runs an expression code with a library path
prepended to the existing libpaths. It differs slightly from
`with_libpaths()`, which replaces the existing libpaths.
* New function `install_git()` installs a package directly from a git
repository. (Thanks to David Coallier)
* If `pdflatex` isn't available, don't try to build vignettes with `install()`
or `check()`. (Fixes #173)
* `install_github()` now downloads from a new URL, to reflect changes on how
files are hosted on GitHub.
* `build()` now has a `vignettes` option to turn off rebuilding vignettes.
* `install(quick=TRUE)` now builds the package without rebuilding vignettes.
(Fixes #167)
* All R commands called from `devtools` now have the environment variable
`NOT_CRAN` set, so that you can perform tasks when you know your code
is definitely not running on CRAN. (Closes #227)
* Most devtools functions can a quiet argument that suppresses output. This is
particularly useful for testing.
## Bug fixes
* Fixed path issue when looking for Rtools on windows when registry entry is not present. (Fixes #201)
* Reloading a package that requires a forced-unload of the namespace now works.
* When reloading a package that another loaded package depends on, if there
was an error loading the code, devtools would print out something about an
error in `unloadNamespace`, which was confusing. It now gives more useful
errors.
* An intermittent error in `clear_topic_index` related to using `rm()` has
been fixed. (Thanks to Gregory Jefferis)
* `revdep()` now lists "Suggests" packages, in addition to "Depends" and
"Imports".
* `revdep_check()` now correctly passes the `recursive` argument to `revdep()`.
* The collection of check results at the end of `check_cran()` previously did
not remove existing results, but now it does.
* When a package is loaded with `load_all()`, it now passes the name of the
package to the `.onLoad()` function. (Thanks to Andrew Redd)
# devtools 0.8.0
## New features
* `create` function makes it easier to create a package skeleton using
devtools standards.
* `install_github()` can now install from a pull request -- it installs
the branch referenced in the pull request.
* `install_github` now accepts `auth_user` and `password` arguments if you
want to install a package in a private github repo. You only need to specify
`auth_user` if it's not your package (i.e. it's not your `username`)
(Fixes #116)
* new `dev_help` function replaces `show_rd` and makes it easy to get help on
any topic in a development package (i.e. a package loaded with `load_all`)
(Fixes #110)
* `dev_example` runs the examples for one in-development package. (Fixes #108)
* `build_vignettes` now looks in modern location for vignettes (`vignettes/`)
and warn if vignettes found in old location (`inst/doc`). Building now
occurs in a temporary directory (to avoid polluting the package with
build artefacts) and only final pdf files are copied over.
* new `clean_vignettes` function to remove pdfs in `inst/doc` that were built
from vignettes in `vignettes/`
* `load_all` does a much better job at simulating package loading (see
LOADING section). It also compiles and loads C/C++/Fortran code.
* `unload()` is now an exported function, which unloads a package, trying
harder than just `detach`. It now also unloads DLLs. (Winston Chang.
Fixes #119)
* `run_examples` now has parameters `show`, `test`, `run` to control which of
`\dontrun{}`, `\dontshow{}`, `\donttest{}` and `\testonly{}` are commented
out. The `strict` parameter has been removed since it is no longer necessary
because `load_all` can respect namespaces. (Fixes #118)
* `build()`, `check()`, `install()` etc now run R in `--vanilla` mode which
prevents it from reading any of your site or personal configuration files.
This should prevent inconsistencies between the environment in which the
package is run between your computer and other computers (e.g. the CRAN
server) (Fixes #145)
* All system R command now print the full command used to make it easier to
understand what's going on.
## Package paths
* `as.package` no longer uses `~/.Rpackages`.
* `as.package` provides more informative error messages when path does not
exist, isn't a directory, or doesn't contain a `DESCRIPTION` file.
* New function `inst()` takes the name of a package and returns the installed
path of that package. (Winston Chang. Fixes #130). This makes it possible to
use `devtools` functions (e.g. `unload`) with regular installed packages,
not just in-development source packages.
* New function `devtest()` returns paths to an internal testing packages
in devtools.
## Loading
* Development packages are now loaded into a namespace environment,
, and then the objects namespace are copied to the
package environment, . This more accurately simulates
how packages are normally loaded. However, all of the objects (not
just the exported ones) are still copied to the package environment.
(Winston Chang. Fixes #3, #60, and #125)
* Packages listed in Imports and Depends are now loaded into an imports
environment, with name attribute "imports:xxxx", which is the parent
of the namespace environment. The imports environment is in turn a
child of the environment, which is a child of the
global environment. This more accurately simulates how packages are
normally loaded. These packages previously were loaded and attached.
(Winston Chang. Fixes #85)
* The NAMESPACE file is now used for loading imports, instead of the
DESCRIPTION file. Previously, `load_all` loaded all objects from the
packages listed in DESCRIPTION. Now it loads packages (and,
when 'importFrom' is used, specific objects from packages) listed in
NAMESPACE. This more closely simulates normal package loading. It
still checks version numbers of packages listed in DESCRIPTION.
(Winston Chang)
* `load_all` can now be used to properly reload devtools. It does this
by creating a copy of the devtools namespace environment, and calling
`load_all` from that environment. (Winston Chang)
* The `.onLoad` and `.onAttach` functions for a development package are
now both called when loading a package for the first time, or with
`reset=TRUE`, and the order more correctly simulates normal package
loading (create the namespace, call `.onLoad`, copy objects to the
package environment, and then call `.onAttach`). (Winston Chang)
* `load_all` will now throw a warning if a dependency package does not
satisfy the version requirement listed in DESCRIPTION. (Winston Chang.
Fixes #109)
* The package environment now has a 'path' attribute, similar to a
package loaded the normal way. (Winston Chang)
* `load_all` now has an option `export_all`. When set to TRUE, only the
objects listed as exports in NAMESPACE are exported. (Winston Chang)
* `load_all` now compiles C files in the /src directory. (Winston Chang)
* New functions `compile_dll()` and `clean_dll()`, which compile C/C++/
Fortran source code, and clean up the compiled objects, respectively.
(Winston Chang. Fixes #131)
## Bug fixes
* `load_code` now properly skips missing files. (Winston Chang)
* Add `--no-resave-data` to default build command.
* The subject line of the email created by `release` is now "CRAN submission
[package] [version]", per CRAN repository policy.
* `install_bitbucket` properly installs zip files of projects stored
in Mercurial repositories. (Winston Chang. Fixes #148)
* `build` now builds vignettes because `install` does not. (Fixes #155)
## Introspection
* New function `loaded_packages()`, which returns the names of packages
that are loaded and attached.
* Packages loaded with `load_all` now store devtools metadata in their
namespace environment, in a variable called `.__DEVTOOLS__`. This can
be accessed with the `dev_meta` function. (Winston Chang. Fixes #128)
* `dev_mode` now stores the path it uses in option `dev_path`. That makes it
easy for other applications to detect when it is on and to act accordingly.
* New function `parse_ns_file()`, which parses a NAMESPACE file for a
package.
* New function `parenvs()`, which parents the parent environments
of an object. (Winston Chang)
# devtools 0.7.1
* bump dependency to R 2.15
* `load_code` now also looks for files ending in `.q` - this is not
recommended, but is needed for some older packages
# devtools 0.7
## Installation
* `install_bitbucket` installs R packages on bitbucket.
* `install` now uses `--with-keep.source` to make debugging a little easier.
* All remote install functions give better error messages in the case of http
errors (Fixes #82).
* `install` has new quick option to make package installation faster, by
sacrificing documentation, demos and multi-architecture binaries.
(Fixes #77)
* `install_url`, `install_github` and `install_gitorious` gain a subdir
argument which makes it possible to install packages that are contained
within a sub-directory of a repository or compressed file. (Fixes #64)
## Checking
* `with_debug` function temporarily sets env vars so that compilation is
performed with the appropriate debugging flags set. Contributed by Andrew
Redd.
* `revdep`, `revdep_maintainers` and `revdep_check` for calculating reverse
dependencies, finding their maintainers and running `R CMD check`.
(Fixes #78)
* `check_cran` has received a massive overhaul: it now checks multiple
packages, installs dependencies (in user specified library), and parse check
output to extract errors and warnings
* `check` uses new `--as-cran` option to make checking as close to CRAN as
possible (fixes #68)
## Other new features
* devtools now uses options `devtools.path` to set the default path to use
with devmode, and `github.user` to set the default user when installing
packages from github.
* if no package supplied, and no package has been worked with previously, all
functions now will try the working directory. (Fixes #87)
* on windows, devtools now looks in the registry to find where Rtools is
installed, and does a better a job of locating gcc. (Contributed by Andrew
Redd)
* `show_rd` passes `...` on to `Rd2txt` - this is useful if you're checking
how build time `\Sexpr`s are generated.
* A suite of `with` functions that allow you to temporarily alter the
environment in which code is run: `in_dir`, `with_collate`, `with_locale`,
`with_options`, `with_path`, ... (Fixes #89)
* `release` ask more questions and randomises correct answers so you really
need to read them (Fixes #79)
* `source_gist` now accepts default url such as "https://gist.github.com/nnn"
* New system path manipulation functions, `get_path`, `set_path`, `add_path`
and `on_path`, contributed by Andrew Redd.
* If you're on windows, `devtools` now suppresses the unimportant warning from
CYGWIN about the dos style file paths
## Bug fixes
* `decompress` now uses target directory as defined in the function call
when expanding a compressed file. (Fixes #84)
* `document` is always run in a C locale so that `NAMESPACE` sort order is
consistent across platforms.
* `install` now quotes `libpath` and build path so paths with embedded spaces
work (Fixes #73 and #76)
* `load_data` now also loads `.RData` files (Fixes #81)
* `install` now has `args` argument to pass additional command line arguments
on to `R CMD install` (replaces `...` which didn't actually do anything).
(Fixes #69)
* `load_code` does a better job of reconciling files in DESCRIPTION collate
with files that actually exist in the R directory. (Fixes #14)
# devtools 0.6
## New features
* `test` function takes `filter` argument which allows you to restrict which
tests are to be run
* `check` runs with example timings, as is done on CRAN. Run with new param
`cleanup = F` to access the timings.
* `missing_s3` function to help figure out if you've forgotten to export any
s3 methods
* `check_cran` downloads and checks a CRAN package - this is useful to run as
part of the testing process of your package if you want to check the
dependencies of your package
* `strict` mode for `run_examples` which runs each example in a clean
environment. This is much slower than the default (running in the current
environment), but ensures that each example works standalone.
* `dev_mode` now updates prompt to indicate that it's active (Thanks to Kohske
Takahashi)
* new `source_url` function for sourcing script on a remote server via
protocols other than http (e.g. https or ftp). (Thanks to Kohske Takahashi)
* new `source_gist` function to source R code stored in a github gist. (Thanks
to Kohske Takahashi)
* `load_all` now also loads all package dependencies (including suggestions) -
this works around some bugs in the way that devtools attaches the
development environment into the search path in a way that fails to recreate
what happens normally during package loading.
## Installation
* remote installation will ensure the configure file is executable.
* all external package installation functions are vectorised so you can
install multiple packages at time
* new `install_gitorious` function install packages in gitorious repos.
* new `install_url` function for installing package from an arbitrary url
* include `install_version` function from Jeremy Stephens for installing a
specific version of a CRAN package from the archive.
## Better windows behaviour
* better check for OS type (thanks to Brian Ripley)
* better default paths for 64-bit R on windows (Fixes #35)
* check to see if Rtools is already available before trying to mess with the
paths. (Fixes #55)
## Bug fixes
* if an error occurs when calling loading R files, the cache will be
automatically cleared so that all files are loaded again next time you try
(Fixes #55)
* functions that run R now do so with `R_LIBS` set to the current
`.libPaths()` - this will ensure that checking uses the development library
if you are in development mode. `R_ENVIRON_USER` is set to an empty file to
avoid your existing settings overriding this.
* `load_data` (called by `load_all`) will also load data defined in R files in
the data directory. (Fixes #45)
* `dev_mode` performs some basic tests to make sure you're not setting your
development library to a directory that's not already an R library.
(Fixes #25)
# devtools 0.5.1
* Fix error in that was causing R commands to fail on windows.
# devtools 0.5
## New functions
* new `show_rd` function that will show the development version of a help
file.
## Improvements and bug fixes
* external R commands always run in locale `C`, because that's what the CRAN
severs do.
* `clean_source` sources an R script into a fresh R environment, ensuring that
it can run independently of your current working environment. Optionally
(`vanilla = T`), it will source in a vanilla R environment which ignores all
local environment settings.
* On windows, `devtools` will also add the path to `mingw` on startup. (Thanks
to pointer from Dave Lovell)
# devtools 0.4
## New functions
* new `wd` function to change the working directory to a package subdirectory.
* `check_doc` now checks package documentation as a whole, in the same way
that `R CMD check` does, rather than low-level syntax checking, which is
done by `roxygen2. DESCRIPTION checking has been moved into `load_all`.
`check_rd` has been removed.
* `build` is now exported, and defaults to building in the package's parent
directory. It also gains a new `binary` parameter controls whether a binary
or a source version (with no vignettes or manuals) is built. Confusingly,
binary packages are built with `R CMD INSTALL`.
* `build_win` sends your package to the R windows builder, allowing you to
make a binary version of your package for windows users if you're using
linux or macOS (if you're using windows already, use `build(binary = T)`)
## Improvements and bug fixes
* if using `.Rpackages` config file, default function is used last, not first.
* on Windows, `devtools` now checks for the presence of `Rtools` on startup,
and will automatically add it to the path if needed.
* `document` uses `roxygen2` instead of `roxygen`. It now loads package
dependency so that they're available when roxygen executes the package
source code.
* `document` has new parameter `clean` which clears all roxygen caches and
removes all existing man files. `check` now runs `document` in this mode.
* `dev_mode` will create directories recursively, and complain if it can't
create them. It should also work better on windows.
* `install_github` now allows you to specify which branch to download, and
automatically reloads package if needed.
* `reload` now will only reload if the package is already loaded.
* `release` gains `check` parameter that allows you to skip package check (if
you've just done it.)
* `test` automatically reloads code so you never run tests on old code
# devtools 0.3
* new `bash()` function that starts bash shell in package directory. Useful if
you want to use git etc.
* removed inelegant `update_src()` since now superseded by `bash()`
* fix bug in ftp upload that was adding extraneous space
* `build` function builds package in specified directory. `install`, `check`
and `release` now all use this function.
* `build`, `install`, `check` and `release` better about cleaning up after
themselves - always try to both work in session temporary directory and
delete any files/directories that they create
# devtools 0.2
* `install_github` now uses `RCurl` instead of external `wget` to retrieve
package. This should make it more robust wrt external dependencies.
* `load_all` will skip missing files with a warning (thanks to suggestion from Jeff Laake)
* `check` automatically deletes `.Rcheck` directory on successful completion
* Quote the path to R so it works even if there are spaces in the path.
# devtools 0.1
* Check for presence of `DESCRIPTION` when loading packages to avoid false
positives
* `install` now works correctly with `devel_mode` to install packages in your
development library
* `release` prints news so you can more easily check it
* All `R CMD xxx` functions now use the current R, not the first R found on
the system path.
devtools/DESCRIPTION 0000644 0001750 0001750 00000004046 14151364022 013753 0 ustar nilesh nilesh Package: devtools
Title: Tools to Make Developing R Packages Easier
Version: 2.4.3
Authors@R:
c(person(given = "Hadley",
family = "Wickham",
role = "aut"),
person(given = "Jim",
family = "Hester",
role = "aut"),
person(given = "Winston",
family = "Chang",
role = "aut"),
person(given = "Jennifer",
family = "Bryan",
role = c("aut", "cre"),
email = "jenny@rstudio.com",
comment = c(ORCID = "0000-0002-6983-2759")),
person(given = "RStudio",
role = c("cph", "fnd")))
Description: Collection of package development tools.
License: MIT + file LICENSE
URL: https://devtools.r-lib.org/, https://github.com/r-lib/devtools
BugReports: https://github.com/r-lib/devtools/issues
Depends: R (>= 3.0.2), usethis (>= 2.0.1)
Imports: callr (>= 3.6.0), cli (>= 3.0.0), desc (>= 1.3.0), ellipsis
(>= 0.3.1), fs (>= 1.5.0), httr (>= 1.4.2), lifecycle (>=
1.0.0), memoise (>= 2.0.0), pkgbuild (>= 1.2.0), pkgload (>=
1.2.1), rcmdcheck (>= 1.3.3), remotes (>= 2.3.0), rlang (>=
0.4.10), roxygen2 (>= 7.1.1), rstudioapi (>= 0.13), rversions
(>= 2.0.2), sessioninfo (>= 1.1.1), stats, testthat (>= 3.0.2),
tools, utils, withr (>= 2.4.1)
Suggests: BiocManager (>= 1.30.12), covr (>= 3.5.1), curl (>= 4.3),
digest (>= 0.6.27), DT (>= 0.17), foghorn (>= 1.3.2), gh (>=
1.2.1), gmailr (>= 1.0.0), knitr (>= 1.31), lintr (>= 2.0.1),
MASS, mockery (>= 0.4.2), pingr (>= 2.0.1), pkgdown (>= 1.6.1),
rhub (>= 1.1.1), rmarkdown (>= 2.7), spelling (>= 2.2)
VignetteBuilder: knitr
Encoding: UTF-8
Language: en-US
RoxygenNote: 7.1.2
NeedsCompilation: no
Packaged: 2021-11-29 16:01:54 UTC; jhester
Author: Hadley Wickham [aut],
Jim Hester [aut],
Winston Chang [aut],
Jennifer Bryan [aut, cre] (),
RStudio [cph, fnd]
Maintainer: Jennifer Bryan
Repository: CRAN
Date/Publication: 2021-11-30 09:00:02 UTC
devtools/README.md 0000644 0001750 0001750 00000020033 14145520536 013525 0 ustar nilesh nilesh # devtools
[](https://github.com/r-lib/devtools/actions)
[](https://app.codecov.io/gh/r-lib/devtools?branch=main)
[](https://cran.r-project.org/package=devtools)
The aim of devtools is to make package development easier by providing R
functions that simplify and expedite common tasks. [R
Packages](https://r-pkgs.org/) is a book based around this workflow.
## Installation
```r
# Install devtools from CRAN
install.packages("devtools")
# Or the development version from GitHub:
# install.packages("devtools")
devtools::install_github("r-lib/devtools")
```
## Cheatsheet
## Usage
All devtools functions accept a path as an argument, e.g.
`load_all("path/to/mypkg")`. If you don't specify a path, devtools will
look in the current working directory - this is a recommended practice.
### Frequent development tasks:
* `load_all()` simulates installing and reloading your package, loading R code
in `R/`, compiled shared objects in `src/` and data files in `data/`. During
development you would usually want to access all functions (even un-exported
internal ones) so `load_all()` works as if all functions were exported in the
package `NAMESPACE`.
* `document()` updates generated documentation in `man/`, file collation and
`NAMESPACE`.
* `test()` reloads your code with `load_all()`, then runs all `testthat` tests.
* `test_coverage()` runs test coverage on your package with
[covr](https://github.com/r-lib/covr). This makes it easy to see what parts of your
package could use more tests!
### Building and installing:
* `install()` reinstalls the package, detaches the currently loaded version
then reloads the new version with `library()`. Reloading a package is not
guaranteed to work: see the documentation for `unload()` for caveats.
* `build()` builds a package file from package sources. You can use it to build
a binary version of your package.
* `install_*` functions install an R package:
* `install_github()` from GitHub
* `install_gitlab()` from GitLab
* `install_bitbucket()` from Bitbucket
* `install_url()` from an arbitrary url
* `install_git()` and `install_svn()` from an arbitrary git or SVN repository
* `install_local()` from a local file on disk
* `install_version()` from a specific version on CRAN
* `update_packages()` updates a package to the latest version. This works
both on packages installed from CRAN as well as those installed from any of
the `install_*` functions.
### Check and release:
* `check()` updates the documentation, then builds and checks the package locally.
`check_win()` checks a package using
[win-builder](https://win-builder.r-project.org/), and `check_rhub()` checks a package using
[r-hub](https://log.r-hub.io/). This allows you to easily check
your package on all systems CRAN uses before submission.
* `release()` makes sure everything is ok with your package (including asking
you a number of questions), then builds and uploads to CRAN.
## Learning more
R package development can be intimidating, however there are now a number of
valuable resources to help!
1. R Packages is a book that gives a comprehensive treatment of all common parts
of package development and uses devtools throughout.
* The first edition is available at , but note that
it has grown somewhat out of sync with the current version of devtools.
* A second edition is under development and is evolving to reflect the
current state of devtools. It is available at .
* The [Whole Game](https://r-pkgs.org/whole-game.html) and
[Package structure](https://r-pkgs.org/package-structure-state.html) chapters
make great places to start.
2. [RStudio community - package
development](https://community.rstudio.com/c/package-development/11)
is a great place to ask specific questions related to package development.
3. [rOpenSci packages](https://devguide.ropensci.org/) has
extensive documentation on best practices for R packages looking to be
contributed to rOpenSci, but also very useful general recommendations
for package authors.
4. There are a number of fantastic blog posts on writing your first package, including
- [Writing an R package from scratch - Hilary Parker](https://hilaryparker.com/2014/04/29/writing-an-r-package-from-scratch/)
- [How to develop good R packages - Maëlle Salmon](https://masalmon.eu/2017/12/11/goodrpackages/)
- [Making your first R package - Fong Chun Chan](https://tinyheero.github.io/jekyll/update/2015/07/26/making-your-first-R-package.html)
- [Writing an R package from scratch - Tomas Westlake](https://r-mageddon.netlify.app/post/writing-an-r-package-from-scratch/)
5. [Writing R
Extensions](https://cran.r-project.org/doc/manuals/r-release/R-exts.html) is
the exhaustive, canonical reference for writing R packages, maintained by
the R core developers.
## Conscious uncoupling
devtools started off as a lean-and-mean package to facilitate local package
development, but over the years it accumulated more and more functionality.
devtools has undergone a [conscious
uncoupling](https://web.archive.org/web/20140326060230/https://www.goop.com/journal/be/conscious-uncoupling)
to split out functionality into smaller, more tightly focussed packages. This
includes:
* [testthat](https://github.com/r-lib/testthat): Writing and running tests
(i.e. `test()`).
* [roxygen2](https://github.com/r-lib/roxygen2): Function and package documentation
(i.e. `document()`).
* [remotes](https://github.com/r-lib/remotes): Installing packages (i.e.
`install_github()`).
* [pkgbuild](https://github.com/r-lib/pkgbuild): Building binary packages
(including checking if build tools are available) (i.e. `build()`).
* [pkgload](https://github.com/r-lib/pkgload): Simulating package loading (i.e.
`load_all()`).
* [rcmdcheck](https://github.com/r-lib/rcmdcheck): Running R CMD check and
reporting the results (i.e. `check()`).
* [revdepcheck](https://github.com/r-lib/revdepcheck): Running R CMD check on
all reverse dependencies, and figuring out what's changed since the last CRAN
release (i.e. `revdep_check()`).
* [sessioninfo](https://github.com/r-lib/sessioninfo): R session info (i.e.
`session_info()`).
* [usethis](https://github.com/r-lib/usethis): Automating package setup (i.e.
`use_test()`).
Generally, you would not need to worry about these different packages, because
devtools installs all of them automatically. You will need to care, however, if
you're filing a bug because reporting it at the correct place will lead to a
speedier resolution.
You may also need to care if you are trying to use some devtools functionality
in your own package or deployed application. Generally in these cases it
is better to depend on the particular package directly rather than depend on devtools,
e.g. use `sessioninfo::session_info()` rather than `devtools::session_info()`,
or `remotes::install_github()` vs `devtools::install_github()`.
However for day to day development we recommend you continue to use
`library(devtools)` to quickly load all needed development tools, just like
`library(tidyverse)` quickly loads all the tools necessary for data exploration
and visualization.
## Code of conduct
Please note that the devtools project is released with a [Contributor Code of Conduct](https://github.com/r-lib/devtools/blob/main/.github/CODE_OF_CONDUCT.md). By contributing to this project, you agree to abide by its terms.
devtools/man/ 0000755 0001750 0001750 00000000000 14151154613 013017 5 ustar nilesh nilesh devtools/man/as.package.Rd 0000644 0001750 0001750 00000001040 13532242644 015302 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/package.R
\name{as.package}
\alias{as.package}
\title{Coerce input to a package.}
\usage{
as.package(x = NULL, create = NA)
}
\arguments{
\item{x}{object to coerce to a package}
\item{create}{only relevant if a package structure does not exist yet: if
\code{TRUE}, create a package structure; if \code{NA}, ask the user
(in interactive mode only)}
}
\description{
Possible specifications of package:
\itemize{
\item path
\item package object
}
}
\keyword{internal}
devtools/man/source_gist.Rd 0000644 0001750 0001750 00000003443 13532242644 015644 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/run-source.R
\name{source_gist}
\alias{source_gist}
\title{Run a script on gist}
\usage{
source_gist(id, ..., filename = NULL, sha1 = NULL, quiet = FALSE)
}
\arguments{
\item{id}{either full url (character), gist ID (numeric or character of
numeric).}
\item{...}{other options passed to \code{\link[=source]{source()}}}
\item{filename}{if there is more than one R file in the gist, which one to
source (filename ending in '.R')? Default \code{NULL} will source the
first file.}
\item{sha1}{The SHA-1 hash of the file at the remote URL. This is highly
recommend as it prevents you from accidentally running code that's not
what you expect. See \code{\link[=source_url]{source_url()}} for more information on
using a SHA-1 hash.}
\item{quiet}{if \code{FALSE}, the default, prints informative messages.}
}
\description{
\dQuote{Gist is a simple way to share snippets and pastes with others.
All gists are git repositories, so they are automatically versioned,
forkable and usable as a git repository.}
\url{https://gist.github.com/}
}
\examples{
\dontrun{
# You can run gists given their id
source_gist(6872663)
source_gist("6872663")
# Or their html url
source_gist("https://gist.github.com/hadley/6872663")
source_gist("gist.github.com/hadley/6872663")
# It's highly recommend that you run source_gist with the optional
# sha1 argument - this will throw an error if the file has changed since
# you first ran it
source_gist(6872663, sha1 = "54f1db27e60")
# Wrong hash will result in error
source_gist(6872663, sha1 = "54f1db27e61")
#' # You can speficy a particular R file in the gist
source_gist(6872663, filename = "hi.r")
source_gist(6872663, filename = "hi.r", sha1 = "54f1db27e60")
}
}
\seealso{
\code{\link[=source_url]{source_url()}}
}
devtools/man/package_file.Rd 0000644 0001750 0001750 00000001164 14031104013 015664 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/package.R
\name{package_file}
\alias{package_file}
\title{Find file in a package.}
\usage{
package_file(..., path = ".")
}
\arguments{
\item{...}{Components of the path.}
\item{path}{Place to start search for package directory.}
}
\description{
It always starts by walking up the path until it finds the root directory,
i.e. a directory containing \code{DESCRIPTION}. If it cannot find the root
directory, or it can't find the specified path, it will throw an error.
}
\examples{
\dontrun{
package_file("figures", "figure_1")
}
}
\keyword{internal}
devtools/man/release.Rd 0000644 0001750 0001750 00000003224 13705571551 014737 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/release.R
\name{release}
\alias{release}
\title{Release package to CRAN.}
\usage{
release(pkg = ".", check = FALSE, args = NULL)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{check}{if \code{TRUE}, run checking, otherwise omit it. This
is useful if you've just checked your package and you're ready to
release it.}
\item{args}{An optional character vector of additional command
line arguments to be passed to \verb{R CMD build}.}
}
\description{
Run automated and manual tests, then post package to CRAN.
}
\details{
The package release process will:
\itemize{
\item Confirm that the package passes \verb{R CMD check} on relevant platforms
\item Confirm that important files are up-to-date
\item Build the package
\item Submit the package to CRAN, using comments in "cran-comments.md"
}
You can add arbitrary extra questions by defining an (un-exported) function
called \code{release_questions()} that returns a character vector
of additional questions to ask.
You also need to read the CRAN repository policy at
'https://cran.r-project.org/web/packages/policies.html' and make
sure you're in line with the policies. \code{release} tries to automate as
many of polices as possible, but it's impossible to be completely
comprehensive, and they do change in between releases of devtools.
}
\seealso{
\code{\link[usethis:use_release_issue]{usethis::use_release_issue()}} to create a checklist of release
tasks that you can use in addition to or in place of \code{release}.
}
devtools/man/build_vignettes.Rd 0000644 0001750 0001750 00000006132 14033115641 016474 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/vignettes.R
\name{build_vignettes}
\alias{build_vignettes}
\title{Build package vignettes.}
\usage{
build_vignettes(
pkg = ".",
dependencies = "VignetteBuilder",
clean = TRUE,
upgrade = "never",
quiet = TRUE,
install = TRUE,
keep_md = TRUE
)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{dependencies}{Which dependencies do you want to check?
Can be a character vector (selecting from "Depends", "Imports",
"LinkingTo", "Suggests", or "Enhances"), or a logical vector.
\code{TRUE} is shorthand for "Depends", "Imports", "LinkingTo" and
"Suggests". \code{NA} is shorthand for "Depends", "Imports" and "LinkingTo"
and is the default. \code{FALSE} is shorthand for no dependencies (i.e.
just check this package, not its dependencies).
The value "soft" means the same as \code{TRUE}, "hard" means the same as \code{NA}.
You can also specify dependencies from one or more additional fields,
common ones include:
\itemize{
\item Config/Needs/website - for dependencies used in building the pkgdown site.
\item Config/Needs/coverage for dependencies used in calculating test coverage.
}}
\item{clean}{Remove all files generated by the build, even if there
were copies there before.}
\item{upgrade}{Should package dependencies be upgraded? One of "default", "ask", "always", or "never". "default"
respects the value of the \code{R_REMOTES_UPGRADE} environment variable if set,
and falls back to "ask" if unset. "ask" prompts the user for which out of
date packages to upgrade. For non-interactive sessions "ask" is equivalent
to "always". \code{TRUE} and \code{FALSE} are also accepted and correspond to
"always" and "never" respectively.}
\item{quiet}{If \code{TRUE}, suppresses most output. Set to \code{FALSE}
if you need to debug.}
\item{install}{If \code{TRUE}, install the package before building
vignettes.}
\item{keep_md}{If \code{TRUE}, move md intermediates as well as rendered
outputs. Most useful when using the \code{keep_md} YAML option for Rmarkdown
outputs. See
\url{https://bookdown.org/yihui/rmarkdown/html-document.html#keeping-markdown}.}
}
\description{
Builds package vignettes using the same algorithm that \verb{R CMD build}
does. This means including non-Sweave vignettes, using makefiles (if
present), and copying over extra files. The files are copied in the 'doc'
directory and an vignette index is created in 'Meta/vignette.rds', as they
would be in a built package. 'doc' and 'Meta' are added to
\code{.Rbuildignore}, so will not be included in the built package. These
files can be checked into version control, so they can be viewed with
\code{browseVignettes()} and \code{vignette()} if the package has been
loaded with \code{load_all()} without needing to re-build them locally.
}
\seealso{
\code{\link[=clean_vignettes]{clean_vignettes()}} to remove the pdfs in
\file{doc} created from vignettes
\code{\link[=clean_vignettes]{clean_vignettes()}} to remove build tex/pdf files.
}
\keyword{programming}
devtools/man/is.package.Rd 0000644 0001750 0001750 00000000362 13532242644 015320 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/package.R
\name{is.package}
\alias{is.package}
\title{Is the object a package?}
\usage{
is.package(x)
}
\description{
Is the object a package?
}
\keyword{internal}
devtools/man/clean_vignettes.Rd 0000644 0001750 0001750 00000001005 13536443710 016461 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/vignettes.R
\name{clean_vignettes}
\alias{clean_vignettes}
\title{Clean built vignettes.}
\usage{
clean_vignettes(pkg = ".")
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
}
\description{
This uses a fairly rudimentary algorithm where any files in \file{doc}
with a name that exists in \file{vignettes} are removed.
}
devtools/man/source_url.Rd 0000644 0001750 0001750 00000002726 13532242644 015503 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/run-source.R
\name{source_url}
\alias{source_url}
\title{Run a script through some protocols such as http, https, ftp, etc.}
\usage{
source_url(url, ..., sha1 = NULL)
}
\arguments{
\item{url}{url}
\item{...}{other options passed to \code{\link[=source]{source()}}}
\item{sha1}{The (prefix of the) SHA-1 hash of the file at the remote URL.}
}
\description{
If a SHA-1 hash is specified with the \code{sha1} argument, then this
function will check the SHA-1 hash of the downloaded file to make sure it
matches the expected value, and throw an error if it does not match. If the
SHA-1 hash is not specified, it will print a message displaying the hash of
the downloaded file. The purpose of this is to improve security when running
remotely-hosted code; if you have a hash of the file, you can be sure that
it has not changed. For convenience, it is possible to use a truncated SHA1
hash, down to 6 characters, but keep in mind that a truncated hash won't be
as secure as the full hash.
}
\examples{
\dontrun{
source_url("https://gist.github.com/hadley/6872663/raw/hi.r")
# With a hash, to make sure the remote file hasn't changed
source_url("https://gist.github.com/hadley/6872663/raw/hi.r",
sha1 = "54f1db27e60bb7e0486d785604909b49e8fef9f9")
# With a truncated hash
source_url("https://gist.github.com/hadley/6872663/raw/hi.r",
sha1 = "54f1db27e60")
}
}
\seealso{
\code{\link[=source_gist]{source_gist()}}
}
devtools/man/test.Rd 0000644 0001750 0001750 00000004062 14031104013 014251 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/test.R
\name{test}
\alias{test}
\alias{test_active_file}
\alias{test_coverage}
\alias{test_coverage_active_file}
\title{Execute testthat tests in a package}
\usage{
test(pkg = ".", filter = NULL, stop_on_failure = FALSE, export_all = TRUE, ...)
test_active_file(file = find_active_file(), ...)
test_coverage(pkg = ".", show_report = interactive(), ...)
test_coverage_active_file(
file = find_active_file(),
filter = TRUE,
show_report = interactive(),
export_all = TRUE,
...
)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{filter}{If not \code{NULL}, only tests with file names matching this
regular expression will be executed. Matching is performed on the file
name after it's stripped of \code{"test-"} and \code{".R"}.}
\item{stop_on_failure}{If \code{TRUE}, throw an error if any tests fail.}
\item{export_all}{If \code{TRUE} (the default), export all objects.
If \code{FALSE}, export only the objects that are listed as exports
in the NAMESPACE file.}
\item{...}{additional arguments passed to wrapped functions.}
\item{file}{One or more source or test files. If a source file the
corresponding test file will be run. The default is to use the active file
in RStudio (if available).}
\item{show_report}{Show the test coverage report.}
}
\description{
\itemize{
\item \code{test()} runs all tests in a package. It's a shortcut for
\code{\link[testthat:test_dir]{testthat::test_dir()}}
\item \code{test_active_file()} runs \code{test()} on the active file.
\item \code{test_coverage()} computes test coverage for your package. It's a
shortcut for \code{\link[covr:package_coverage]{covr::package_coverage()}} plus \code{\link[covr:report]{covr::report()}}.
\item \code{test_coverage_active_file()} computes test coverage for the active file. It's a
shortcut for \code{\link[covr:file_coverage]{covr::file_coverage()}} plus \code{\link[covr:report]{covr::report()}}.
}
}
devtools/man/show_news.Rd 0000644 0001750 0001750 00000001032 13536443710 015323 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/show-news.R
\name{show_news}
\alias{show_news}
\title{Show package news}
\usage{
show_news(pkg = ".", latest = TRUE, ...)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{latest}{if \code{TRUE}, only show the news for the most recent
version.}
\item{...}{other arguments passed on to \code{news}}
}
\description{
Show package news
}
devtools/man/missing_s3.Rd 0000644 0001750 0001750 00000000701 13536443710 015367 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/missing-s3.R
\name{missing_s3}
\alias{missing_s3}
\title{Find missing s3 exports.}
\usage{
missing_s3(pkg = ".")
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
}
\description{
The method is heuristic - looking for objs with a period in their name.
}
devtools/man/devtools-deprecated.Rd 0000644 0001750 0001750 00000000734 14031104013 017231 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/test.R, R/zzz.R
\name{test_file}
\alias{test_file}
\alias{test_coverage_file}
\alias{devtools-deprecated}
\title{Deprecated Functions}
\usage{
test_file(file = find_active_file(), ...)
test_coverage_file(file = find_active_file(), ...)
}
\description{
These functions are Deprecated in this release of devtools, they will be
marked as Defunct and removed in a future version.
}
\keyword{internal}
devtools/man/reexports.Rd 0000644 0001750 0001750 00000002200 14031104013 015315 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/package-deps.R, R/pkgbuild.R, R/pkgload.R,
% R/remotes.R, R/session-info.R
\docType{import}
\name{reexports}
\alias{reexports}
\alias{parse_deps}
\alias{check_dep_version}
\alias{with_debug}
\alias{clean_dll}
\alias{has_devel}
\alias{find_rtools}
\alias{unload}
\alias{github_pull}
\alias{github_release}
\alias{session_info}
\alias{package_info}
\title{Objects exported from other packages}
\keyword{internal}
\description{
These objects are imported from other packages. Follow the links
below to see their documentation.
\describe{
\item{pkgbuild}{\code{\link[pkgbuild]{clean_dll}}, \code{\link[pkgbuild:has_rtools]{find_rtools}}, \code{\link[pkgbuild:has_compiler]{has_devel}}, \code{\link[pkgbuild]{with_debug}}}
\item{pkgload}{\code{\link[pkgload]{check_dep_version}}, \code{\link[pkgload]{parse_deps}}, \code{\link[pkgload]{unload}}}
\item{remotes}{\code{\link[remotes:github_refs]{github_pull}}, \code{\link[remotes:github_refs]{github_release}}}
\item{sessioninfo}{\code{\link[sessioninfo]{package_info}}, \code{\link[sessioninfo]{session_info}}}
}}
devtools/man/lint.Rd 0000644 0001750 0001750 00000002133 14107010173 014244 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/lint.R
\name{lint}
\alias{lint}
\title{Lint all source files in a package.}
\usage{
lint(pkg = ".", cache = TRUE, ...)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{cache}{store the lint results so repeated lints of the same content
use the previous results.}
\item{...}{additional arguments passed to \code{\link[lintr:lint_package]{lintr::lint_package()}}}
}
\description{
The default linters correspond to the style guide at
\url{https://style.tidyverse.org/}, however it is possible to
override any or all of them using the \code{linters} parameter.
}
\details{
The lintr cache is by default stored in \verb{~/.R/lintr_cache/} (this can
be configured by setting \code{options(lintr.cache_directory)}). It can be
cleared by calling \code{\link[lintr:clear_cache]{lintr::clear_cache()}}.
}
\seealso{
\code{\link[lintr:lint_package]{lintr::lint_package()}}, \code{\link[lintr:lint_file]{lintr::lint()}}
}
devtools/man/save_all.Rd 0000644 0001750 0001750 00000001012 13532242644 015072 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/save-all.R
\name{save_all}
\alias{save_all}
\title{Save all documents in an active IDE session.}
\usage{
save_all()
}
\description{
Helper function wrapping IDE-specific calls to save all documents in the
active session. In this form, callers of \code{save_all()} don't need to
execute any IDE-specific code. This function can be extended to include
other IDE implementations of their equivalent
\code{rstudioapi::documentSaveAll()} methods.
}
devtools/man/check.Rd 0000644 0001750 0001750 00000013001 14151154613 014356 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/check.R
\name{check}
\alias{check}
\alias{check_built}
\title{Build and check a package, cleaning up automatically on success.}
\usage{
check(
pkg = ".",
document = NULL,
build_args = NULL,
...,
manual = FALSE,
cran = TRUE,
remote = FALSE,
incoming = remote,
force_suggests = FALSE,
run_dont_test = FALSE,
args = "--timings",
env_vars = c(NOT_CRAN = "true"),
quiet = FALSE,
check_dir = tempdir(),
cleanup = TRUE,
vignettes = TRUE,
error_on = c("never", "error", "warning", "note")
)
check_built(
path = NULL,
cran = TRUE,
remote = FALSE,
incoming = remote,
force_suggests = FALSE,
run_dont_test = FALSE,
manual = FALSE,
args = "--timings",
env_vars = NULL,
check_dir = tempdir(),
quiet = FALSE,
error_on = c("never", "error", "warning", "note")
)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{document}{By default (\code{NULL}) will document if your installed
roxygen2 version matches the version declared in the \code{DESCRIPTION}
file. Use \code{TRUE} or \code{FALSE} to override the default.}
\item{build_args}{Additional arguments passed to \verb{R CMD build}}
\item{...}{Additional arguments passed on to \code{\link[pkgbuild:build]{pkgbuild::build()}}.}
\item{manual}{If \code{FALSE}, don't build and check manual
(\code{--no-manual}).}
\item{cran}{if \code{TRUE} (the default), check using the same settings as
CRAN uses.}
\item{remote}{Sets \verb{_R_CHECK_CRAN_INCOMING_REMOTE_} env var.
If \code{TRUE}, performs a number of CRAN incoming checks that require
remote access.}
\item{incoming}{Sets \verb{_R_CHECK_CRAN_INCOMING_} env var.
If \code{TRUE}, performs a number of CRAN incoming checks.}
\item{force_suggests}{Sets \verb{_R_CHECK_FORCE_SUGGESTS_}. If
\code{FALSE} (the default), check will proceed even if all suggested
packages aren't found.}
\item{run_dont_test}{Sets \code{--run-donttest} so that tests surrounded in
\verb{\\dontest\{\}} are also tested. When \code{cran = TRUE}, this only affects
R 3.6 and earlier; in R 4.0.0 code in \verb{\\dontest\{\}} is always run as
part of CRAN submission.}
\item{args}{Character vector of arguments to pass to \verb{R CMD check}. Pass each
argument as a single element of this character vector (do not use spaces to
delimit arguments like you would in the shell). For example, to skip
running of examples and tests, use \code{args = c("--no-examples", "--no-tests")} and not \code{args = "--no-examples --no-tests"}. (Note that
instead of the \code{--output} option you should use the \code{check_dir} argument,
because \code{--output} cannot deal with spaces and other special characters on
Windows.)}
\item{env_vars}{Environment variables set during \verb{R CMD check}}
\item{quiet}{if \code{TRUE} suppresses output from this function.}
\item{check_dir}{the directory in which the package is checked
compatibility. \code{args = "--output=/foo/bar"} can be used to change the
check directory.}
\item{cleanup}{Deprecated.}
\item{vignettes}{If \code{FALSE}, do not build or check vignettes, equivalent to
using \verb{args = '--ignore-vignettes' and }build_args = '--no-build-vignettes'.}
\item{error_on}{Whether to throw an error on \verb{R CMD check} failures.
Note that the check is always completed (unless a timeout happens),
and the error is only thrown after completion. If \code{"never"}, then
no errors are thrown. If \code{"error"}, then only \code{ERROR} failures
generate errors. If \code{"warning"}, then \code{WARNING} failures generate
errors as well. If \code{"note"}, then any check failure generated an
error. Its default can be modified with the \code{RCMDCHECK_ERROR_ON}
environment variable. If that is not set, then \code{"never"} is used.}
\item{path}{Path to built package.}
}
\value{
An object containing errors, warnings, and notes.
}
\description{
\code{check} automatically builds and checks a source package, using all
known best practices. \code{check_built} checks an already built package.
}
\details{
Passing \verb{R CMD check} is essential if you want to submit your package
to CRAN: you must not have any ERRORs or WARNINGs, and you want to ensure
that there are as few NOTEs as possible. If you are not submitting to CRAN,
at least ensure that there are no ERRORs or WARNINGs: these typically
represent serious problems.
\code{check} automatically builds a package before calling \code{check_built}
as this is the recommended way to check packages. Note that this process
runs in an independent realisation of R, so nothing in your current
workspace will affect the process.
}
\section{Environment variables}{
Devtools does its best to set up an environment that combines best practices
with how check works on CRAN. This includes:
\itemize{
\item The standard environment variables set by devtools:
\code{\link[=r_env_vars]{r_env_vars()}}. Of particular note for package tests is the
\code{NOT_CRAN} env var which lets you know that your tests are not
running on CRAN, and hence can take a reasonable amount of time.
\item Debugging flags for the compiler, set by
\code{\link{compiler_flags}(FALSE)}.
\item If \code{aspell} is found \verb{_R_CHECK_CRAN_INCOMING_USE_ASPELL_}
is set to \code{TRUE}. If no spell checker is installed, a warning is
issued.)
\item env vars set by arguments \code{incoming}, \code{remote} and
\code{force_suggests}
}
}
\seealso{
\code{\link[=release]{release()}} if you want to send the checked package to
CRAN.
}
devtools/man/uses_testthat.Rd 0000644 0001750 0001750 00000000410 14031104013 016162 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/test.R
\name{uses_testthat}
\alias{uses_testthat}
\title{Does a package use testthat?}
\usage{
uses_testthat(pkg = ".")
}
\description{
Does a package use testthat?
}
\keyword{internal}
devtools/man/check_man.Rd 0000644 0001750 0001750 00000001432 13577154220 015223 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/check-doc.R
\name{check_man}
\alias{check_man}
\title{Check documentation, as \verb{R CMD check} does.}
\usage{
check_man(pkg = ".")
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
}
\value{
Nothing. This function is called purely for it's side effects: if
}
\description{
This function attempts to run the documentation related checks in the
same way that \verb{R CMD check} does. Unfortunately it can't run them
all because some tests require the package to be loaded, and the way
they attempt to load the code conflicts with how devtools does it.
}
\examples{
\dontrun{
check_man("mypkg")
}
}
devtools/man/spell_check.Rd 0000644 0001750 0001750 00000001405 13705336467 015577 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/spell-check.R
\name{spell_check}
\alias{spell_check}
\title{Spell checking}
\usage{
spell_check(pkg = ".", vignettes = TRUE, use_wordlist = TRUE)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{vignettes}{also check all \code{rmd} and \code{rnw} files in the pkg \code{vignettes} folder}
\item{use_wordlist}{ignore words in the package \link[spelling:wordlist]{WORDLIST} file}
}
\description{
Runs a spell check on text fields in the package description file, manual
pages, and optionally vignettes. Wraps the \link[spelling:spell_check_package]{spelling}
package.
}
devtools/man/install_deps.Rd 0000644 0001750 0001750 00000006174 14033115641 015774 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/install.R
\name{install_deps}
\alias{install_deps}
\alias{install_dev_deps}
\title{Install package dependencies if needed.}
\usage{
install_deps(
pkg = ".",
dependencies = NA,
repos = getOption("repos"),
type = getOption("pkgType"),
upgrade = c("default", "ask", "always", "never"),
quiet = FALSE,
build = TRUE,
build_opts = c("--no-resave-data", "--no-manual", " --no-build-vignettes"),
...
)
install_dev_deps(
pkg = ".",
dependencies = TRUE,
repos = getOption("repos"),
type = getOption("pkgType"),
upgrade = c("default", "ask", "always", "never"),
quiet = FALSE,
build = TRUE,
build_opts = c("--no-resave-data", "--no-manual", " --no-build-vignettes"),
...
)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{dependencies}{Which dependencies do you want to check?
Can be a character vector (selecting from "Depends", "Imports",
"LinkingTo", "Suggests", or "Enhances"), or a logical vector.
\code{TRUE} is shorthand for "Depends", "Imports", "LinkingTo" and
"Suggests". \code{NA} is shorthand for "Depends", "Imports" and "LinkingTo"
and is the default. \code{FALSE} is shorthand for no dependencies (i.e.
just check this package, not its dependencies).
The value "soft" means the same as \code{TRUE}, "hard" means the same as \code{NA}.
You can also specify dependencies from one or more additional fields,
common ones include:
\itemize{
\item Config/Needs/website - for dependencies used in building the pkgdown site.
\item Config/Needs/coverage for dependencies used in calculating test coverage.
}}
\item{repos}{A character vector giving repositories to use.}
\item{type}{Type of package to \code{update}.}
\item{upgrade}{Should package dependencies be upgraded? One of "default", "ask", "always", or "never". "default"
respects the value of the \code{R_REMOTES_UPGRADE} environment variable if set,
and falls back to "ask" if unset. "ask" prompts the user for which out of
date packages to upgrade. For non-interactive sessions "ask" is equivalent
to "always". \code{TRUE} and \code{FALSE} are also accepted and correspond to
"always" and "never" respectively.}
\item{quiet}{If \code{TRUE}, suppress output.}
\item{build}{if \code{TRUE} \code{\link[pkgbuild:build]{pkgbuild::build()}}s the package first:
this ensures that the installation is completely clean, and prevents any
binary artefacts (like \file{.o}, \code{.so}) from appearing in your local
package directory, but is considerably slower, because every compile has
to start from scratch.}
\item{build_opts}{Options to pass to \verb{R CMD build}, only used when \code{build} is \code{TRUE}.}
\item{...}{additional arguments passed to \code{\link[remotes:install_deps]{remotes::install_deps()}}
when installing dependencies.}
}
\description{
\code{install_deps()} will install the
user dependencies needed to run the package, \code{install_dev_deps()} will also
install the development dependencies needed to test and build the package.
}
\examples{
\dontrun{install_deps(".")}
}
devtools/man/check_rhub.Rd 0000644 0001750 0001750 00000003725 14151154613 015412 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/r-hub.R
\name{check_rhub}
\alias{check_rhub}
\title{Run CRAN checks for package on R-hub}
\usage{
check_rhub(
pkg = ".",
platforms = NULL,
email = NULL,
interactive = TRUE,
build_args = NULL,
...
)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{platforms}{R-hub platforms to run the check on. If \code{NULL}
uses default list of CRAN checkers (one for each major platform, and
one with extra checks if you have compiled code). You can also specify
your own, see \code{\link[rhub:platforms]{rhub::platforms()}} for a complete list.}
\item{email}{email address to notify, defaults to the maintainer
address in the package.}
\item{interactive}{whether to show the status of the build
interactively. R-hub will send an email to the package maintainer's
email address, regardless of whether the check is interactive or not.}
\item{build_args}{Arguments passed to \verb{R CMD build}}
\item{...}{extra arguments, passed to \code{\link[rhub:check_for_cran]{rhub::check_for_cran()}}.}
}
\value{
a \code{rhub_check} object.
}
\description{
It runs \code{\link[=build]{build()}} on the package, with the arguments specified
in \code{args}, and then submits it to the R-hub builder at
\url{https://builder.r-hub.io}. The \code{interactive} option controls
whether the function waits for the check output. Regardless, after the
check is complete, R-hub sends an email with the results to the package
maintainer.
}
\section{About email validation on r-hub}{
To build and check R packages on R-hub, you need to validate your
email address. This is because R-hub sends out emails about build
results. See more at \code{\link[rhub:validate_email]{rhub::validate_email()}}.
}
\seealso{
Other build functions:
\code{\link{check_mac_release}()},
\code{\link{check_win}()}
}
\concept{build functions}
devtools/man/build.Rd 0000644 0001750 0001750 00000004140 14031104013 014366 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/pkgbuild.R
\name{build}
\alias{build}
\title{Build package}
\usage{
build(
pkg = ".",
path = NULL,
binary = FALSE,
vignettes = TRUE,
manual = FALSE,
args = NULL,
quiet = FALSE,
...
)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{path}{Path in which to produce package. If \code{NULL}, defaults to
the parent directory of the package.}
\item{binary}{Produce a binary (\code{--binary}) or source (
\code{--no-manual --no-resave-data}) version of the package.}
\item{vignettes}{For source packages: if \code{FALSE}, don't build PDF
vignettes (\code{--no-build-vignettes}) or manual (\code{--no-manual}).}
\item{manual}{For source packages: if \code{FALSE}, don't build PDF
vignettes (\code{--no-build-vignettes}) or manual (\code{--no-manual}).}
\item{args}{An optional character vector of additional command
line arguments to be passed to \verb{R CMD build} if \code{binary = FALSE},
or \verb{R CMD install} if \code{binary = TRUE}.}
\item{quiet}{if \code{TRUE} suppresses output from this function.}
\item{...}{Additional arguments passed to \link[pkgbuild:build]{pkgbuild::build}.}
}
\value{
a string giving the location (including file name) of the built
package
}
\description{
Building converts a package source directory into a single bundled file.
If \code{binary = FALSE} this creates a \code{tar.gz} package that can
be installed on any platform, provided they have a full development
environment (although packages without source code can typically be
installed out of the box). If \code{binary = TRUE}, the package will have
a platform specific extension (e.g. \code{.zip} for windows), and will
only be installable on the current platform, but no development
environment is needed.
}
\note{
The default \code{manual = FALSE} is not suitable for a CRAN
submission, which may require \code{manual = TRUE}. Even better, use
\code{\link[=submit_cran]{submit_cran()}} or \code{\link[=release]{release()}}.
}
devtools/man/check_mac_release.Rd 0000644 0001750 0001750 00000002565 14151154613 016713 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/check-mac.R
\name{check_mac_release}
\alias{check_mac_release}
\title{Check macOS package}
\usage{
check_mac_release(
pkg = ".",
dep_pkgs = ".",
args = NULL,
manual = TRUE,
quiet = FALSE,
...
)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{dep_pkgs}{Additional custom dependencies to install prior to checking the package.}
\item{args}{An optional character vector of additional command
line arguments to be passed to \verb{R CMD build} if \code{binary = FALSE},
or \verb{R CMD install} if \code{binary = TRUE}.}
\item{manual}{For source packages: if \code{FALSE}, don't build PDF
vignettes (\code{--no-build-vignettes}) or manual (\code{--no-manual}).}
\item{quiet}{If \code{TRUE}, suppresses output.}
\item{...}{Additional arguments passed to \code{\link[pkgbuild:build]{pkgbuild::build()}}.}
}
\value{
The url with the check results (invisibly)
}
\description{
This function works by bundling source package, and then uploading to
\url{https://mac.r-project.org/macbuilder/submit.html}. This function returns a
link to the page with the check results.
}
\seealso{
Other build functions:
\code{\link{check_rhub}()},
\code{\link{check_win}()}
}
\concept{build functions}
devtools/man/install.Rd 0000644 0001750 0001750 00000010635 14042601670 014760 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/install.R
\name{install}
\alias{install}
\title{Install a local development package.}
\usage{
install(
pkg = ".",
reload = TRUE,
quick = FALSE,
build = !quick,
args = getOption("devtools.install.args"),
quiet = FALSE,
dependencies = NA,
upgrade = "default",
build_vignettes = FALSE,
keep_source = getOption("keep.source.pkgs"),
force = FALSE,
...
)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{reload}{if \code{TRUE} (the default), will automatically reload the
package after installing.}
\item{quick}{if \code{TRUE} skips docs, multiple-architectures,
demos, and vignettes, to make installation as fast as possible.}
\item{build}{if \code{TRUE} \code{\link[pkgbuild:build]{pkgbuild::build()}}s the package first:
this ensures that the installation is completely clean, and prevents any
binary artefacts (like \file{.o}, \code{.so}) from appearing in your local
package directory, but is considerably slower, because every compile has
to start from scratch.}
\item{args}{An optional character vector of additional command line
arguments to be passed to \verb{R CMD INSTALL}. This defaults to the
value of the option \code{"devtools.install.args"}.}
\item{quiet}{If \code{TRUE}, suppress output.}
\item{dependencies}{Which dependencies do you want to check?
Can be a character vector (selecting from "Depends", "Imports",
"LinkingTo", "Suggests", or "Enhances"), or a logical vector.
\code{TRUE} is shorthand for "Depends", "Imports", "LinkingTo" and
"Suggests". \code{NA} is shorthand for "Depends", "Imports" and "LinkingTo"
and is the default. \code{FALSE} is shorthand for no dependencies (i.e.
just check this package, not its dependencies).
The value "soft" means the same as \code{TRUE}, "hard" means the same as \code{NA}.
You can also specify dependencies from one or more additional fields,
common ones include:
\itemize{
\item Config/Needs/website - for dependencies used in building the pkgdown site.
\item Config/Needs/coverage for dependencies used in calculating test coverage.
}}
\item{upgrade}{Should package dependencies be upgraded? One of "default", "ask", "always", or "never". "default"
respects the value of the \code{R_REMOTES_UPGRADE} environment variable if set,
and falls back to "ask" if unset. "ask" prompts the user for which out of
date packages to upgrade. For non-interactive sessions "ask" is equivalent
to "always". \code{TRUE} and \code{FALSE} are also accepted and correspond to
"always" and "never" respectively.}
\item{build_vignettes}{if \code{TRUE}, will build vignettes. Normally it is
\code{build} that's responsible for creating vignettes; this argument makes
sure vignettes are built even if a build never happens (i.e. because
\code{build = FALSE}).}
\item{keep_source}{If \code{TRUE} will keep the srcrefs from an installed
package. This is useful for debugging (especially inside of RStudio).
It defaults to the option \code{"keep.source.pkgs"}.}
\item{force}{Force installation, even if the remote state has not changed
since the previous install.}
\item{...}{additional arguments passed to \code{\link[remotes:install_deps]{remotes::install_deps()}}
when installing dependencies.}
}
\description{
Uses \verb{R CMD INSTALL} to install the package. Will also try to install
dependencies of the package from CRAN, if they're not already installed.
}
\details{
If \code{quick = TRUE}, installation takes place using the current package
directory. If you have compiled code, this means that artefacts of
compilation will be created in the \verb{src/} directory. If you want to avoid
this, you can use \code{build = TRUE} to first build a package bundle and then
install it from a temporary directory. This is slower, but keeps the source
directory pristine.
If the package is loaded, it will be reloaded after installation. This is
not always completely possible, see \code{\link[=reload]{reload()}} for caveats.
To install a package in a non-default library, use \code{\link[withr:with_libpaths]{withr::with_libpaths()}}.
}
\seealso{
\code{\link[=update_packages]{update_packages()}} to update installed packages from the
source location and \code{\link[=with_debug]{with_debug()}} to install packages with
debugging flags set.
Other package installation:
\code{\link{uninstall}()}
}
\concept{package installation}
devtools/man/reload.Rd 0000644 0001750 0001750 00000002210 13536443710 014554 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/reload.R
\name{reload}
\alias{reload}
\title{Unload and reload package.}
\usage{
reload(pkg = ".", quiet = FALSE)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{quiet}{if \code{TRUE} suppresses output from this function.}
}
\description{
This attempts to unload and reload an \emph{installed} package. If the package is
not loaded already, it does nothing. It's not always possible to cleanly
unload a package: see the caveats in \code{\link[=unload]{unload()}} for some of the potential
failure points. If in doubt, restart R and reload the package with
\code{\link[=library]{library()}}.
}
\examples{
\dontrun{
# Reload package that is in current directory
reload(".")
# Reload package that is in ./ggplot2/
reload("ggplot2/")
# Can use inst() to find the package path
# This will reload the installed ggplot2 package
reload(pkgload::inst("ggplot2"))
}
}
\seealso{
\code{\link[=load_all]{load_all()}} to load a package for interactive development.
}
devtools/man/build_rmd.Rd 0000644 0001750 0001750 00000002267 13643625021 015257 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/build-readme.R
\name{build_rmd}
\alias{build_rmd}
\alias{build_readme}
\title{Build a Rmarkdown files package}
\usage{
build_rmd(files, path = ".", output_options = list(), ..., quiet = TRUE)
build_readme(path = ".", quiet = TRUE, ...)
}
\arguments{
\item{files}{The Rmarkdown files to be rendered.}
\item{path}{path to the package to build the readme.}
\item{output_options}{List of output options that can override the options
specified in metadata (e.g. could be used to force \code{self_contained} or
\code{mathjax = "local"}). Note that this is only valid when the output
format is read from metadata (i.e. not a custom format object passed to
\code{output_format}).}
\item{...}{additional arguments passed to \code{\link[rmarkdown:render]{rmarkdown::render()}}}
\item{quiet}{If \code{TRUE}, suppress output.}
}
\description{
\code{build_rmd()} is a wrapper around \code{\link[rmarkdown:render]{rmarkdown::render()}} that first installs
a temporary copy of the package, and then renders each \code{.Rmd} in a clean R
session. \code{build_readme()} locates your \code{README.Rmd} and builds it into a
\code{README.md}
}
devtools/man/loaded_packages.Rd 0000644 0001750 0001750 00000000646 13532242644 016406 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/session-info.R
\name{loaded_packages}
\alias{loaded_packages}
\title{Return a vector of names of attached packages}
\usage{
loaded_packages()
}
\value{
A data frame with columns package and path, giving the name of
each package and the path it was loaded from.
}
\description{
Return a vector of names of attached packages
}
\keyword{internal}
devtools/man/dev_packages.Rd 0000644 0001750 0001750 00000000472 13532242644 015731 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/session-info.R
\name{dev_packages}
\alias{dev_packages}
\title{Return a vector of names of packages loaded by devtools}
\usage{
dev_packages()
}
\description{
Return a vector of names of packages loaded by devtools
}
\keyword{internal}
devtools/man/run_examples.Rd 0000644 0001750 0001750 00000003606 13705571651 016026 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/run-examples.R
\name{run_examples}
\alias{run_examples}
\title{Run all examples in a package.}
\usage{
run_examples(
pkg = ".",
start = NULL,
show = TRUE,
run_donttest = FALSE,
run_dontrun = FALSE,
fresh = FALSE,
document = TRUE,
run,
test
)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{start}{Where to start running the examples: this can either be the
name of \code{Rd} file to start with (with or without extensions), or
a topic name. If omitted, will start with the (lexicographically) first
file. This is useful if you have a lot of examples and don't want to
rerun them every time you fix a problem.}
\item{show}{DEPRECATED.}
\item{run_donttest}{if \code{TRUE}, do run \verb{\\donttest} sections in the Rd files.
out.}
\item{run_dontrun}{if \code{TRUE}, do run \verb{\\dontrun} sections in the Rd files.}
\item{fresh}{if \code{TRUE}, will be run in a fresh R session. This has
the advantage that there's no way the examples can depend on anything in
the current session, but interactive code (like \code{\link[=browser]{browser()}})
won't work.}
\item{document}{if \code{TRUE}, \code{\link[=document]{document()}} will be run to ensure
examples are updated before running them.}
\item{run}{Deprecated, see \code{run_dontrun} and \code{run_donttest} above.}
\item{test}{Deprecated, see \code{run_dontrun} and \code{run_donttest} above.}
}
\description{
One of the most frustrating parts of \verb{R CMD check} is getting all of your
examples to pass - whenever one fails you need to fix the problem and then
restart the whole process. This function makes it a little easier by
making it possible to run all examples from an R function.
}
\concept{example functions}
\keyword{programming}
devtools/man/devtools.Rd 0000644 0001750 0001750 00000003372 14151174367 015162 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/zzz.R
\docType{package}
\name{devtools}
\alias{devtools}
\alias{devtools-package}
\title{Package development tools for R.}
\description{
Collection of package development tools.
}
\section{Package options}{
Devtools uses the following \code{\link[=options]{options()}} to configure behaviour:
\itemize{
\item \code{devtools.path}: path to use for \code{\link[=dev_mode]{dev_mode()}}
\item \code{devtools.name}: your name, used when signing draft
emails.
\item \code{devtools.install.args}: a string giving extra arguments passed
to \verb{R CMD install} by \code{\link[=install]{install()}}.
\item \code{devtools.desc.author}: a string providing a default Authors@R
string to be used in new \file{DESCRIPTION}s. Should be a R code, and
look like \code{"Hadley Wickham [aut, cre]"}. See
\code{\link[utils:person]{utils::as.person()}} for more details.
\item \code{devtools.desc.license}: a default license string to use for
new packages.
\item \code{devtools.desc.suggests}: a character vector listing packages to
to add to suggests by defaults for new packages.
\item \code{devtools.desc}: a named list listing any other
extra options to add to \file{DESCRIPTION}
}
}
\seealso{
Useful links:
\itemize{
\item \url{https://devtools.r-lib.org/}
\item \url{https://github.com/r-lib/devtools}
\item Report bugs at \url{https://github.com/r-lib/devtools/issues}
}
}
\author{
\strong{Maintainer}: Jennifer Bryan \email{jenny@rstudio.com} (\href{https://orcid.org/0000-0002-6983-2759}{ORCID})
Authors:
\itemize{
\item Hadley Wickham
\item Jim Hester
\item Winston Chang
}
Other contributors:
\itemize{
\item RStudio [copyright holder, funder]
}
}
\keyword{internal}
devtools/man/load_all.Rd 0000644 0001750 0001750 00000010120 14033115641 015044 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/pkgload.R
\name{load_all}
\alias{load_all}
\title{Load complete package}
\usage{
load_all(
path = ".",
reset = TRUE,
recompile = FALSE,
export_all = TRUE,
helpers = TRUE,
quiet = FALSE,
...
)
}
\arguments{
\item{path}{Path to a package, or within a package.}
\item{reset}{clear package environment and reset file cache before loading
any pieces of the package. This largely equivalent to running
\code{\link[pkgload:unload]{unload()}}, however the old namespaces are not completely removed and no
\code{.onUnload()} hooks are called. Use \code{reset = FALSE} may be faster for
large code bases, but is a significantly less accurate approximation.}
\item{recompile}{DEPRECATED. force a recompile of DLL from source code, if
present. This is equivalent to running \code{\link[pkgbuild:clean_dll]{pkgbuild::clean_dll()}} before
\code{load_all}}
\item{export_all}{If \code{TRUE} (the default), export all objects.
If \code{FALSE}, export only the objects that are listed as exports
in the NAMESPACE file.}
\item{helpers}{if \code{TRUE} loads \pkg{testthat} test helpers.}
\item{quiet}{if \code{TRUE} suppresses output from this function.}
\item{...}{Additional arguments passed to \code{\link[pkgload:load_all]{pkgload::load_all()}}.}
}
\description{
\code{load_all} loads a package. It roughly simulates what happens
when a package is installed and loaded with \code{\link[=library]{library()}}.
}
\details{
Currently \code{load_all}:
\itemize{
\item Loads all data files in \verb{data/}. See \code{\link[pkgload:load_data]{load_data()}}
for more details.
\item Sources all R files in the R directory, storing results in
environment that behaves like a regular package namespace. See
below and \code{\link[pkgload:load_code]{load_code()}} for more details.
\item Compiles any C, C++, or Fortran code in the \verb{src/} directory
and connects the generated DLL into R. See \code{pkgload::compile_dll()}
for more details.
\item Runs \code{.onAttach()}, \code{.onLoad()} and \code{.onUnload()}
functions at the correct times.
\item If you use \pkg{testthat}, will load all test helpers so
you can access them interactively. devtools sets the
\code{DEVTOOLS_LOAD} environment variable to \code{"true"} to
let you check whether the helpers are run during package loading.
}
}
\section{Namespaces}{
The namespace environment \verb{}, is a child of
the imports environment, which has the name attribute
\code{imports:pkgname}. It is in turn is a child of
\verb{}, which is a child of the global environment.
(There is also a copy of the base namespace that is a child of the empty
environment.)
The package environment \verb{} is an ancestor of the
global environment. Normally when loading a package, the objects
listed as exports in the NAMESPACE file are copied from the namespace
to the package environment. However, \code{load_all} by default will
copy all objects (not just the ones listed as exports) to the package
environment. This is useful during development because it makes all
objects easy to access.
To export only the objects listed as exports, use
\code{export_all=FALSE}. This more closely simulates behavior when
loading an installed package with \code{\link[=library]{library()}}, and can be
useful for checking for missing exports.
}
\section{Shim files}{
\code{load_all} also inserts shim functions into the imports environment
of the loaded package. It presently adds a replacement version of
\code{system.file} which returns different paths from
\code{base::system.file}. This is needed because installed and uninstalled
package sources have different directory structures. Note that this is not
a perfect replacement for \code{base::system.file}.
}
\examples{
\dontrun{
# Load the package in the current directory
load_all("./")
# Running again loads changed files
load_all("./")
# With reset=TRUE, unload and reload the package for a clean start
load_all("./", TRUE)
# With export_all=FALSE, only objects listed as exports in NAMESPACE
# are exported
load_all("./", export_all = FALSE)
}
}
devtools/man/uninstall.Rd 0000644 0001750 0001750 00000002137 13577154220 015327 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/uninstall.R
\name{uninstall}
\alias{uninstall}
\title{Uninstall a local development package.}
\usage{
uninstall(pkg = ".", unload = TRUE, quiet = FALSE, lib = .libPaths()[[1]])
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{unload}{if \code{TRUE} (the default), will automatically unload the
package prior to uninstalling.}
\item{quiet}{If \code{TRUE}, suppress output.}
\item{lib}{a character vector giving the library directories to remove the
packages from. If missing, defaults to the first element in
\code{\link{.libPaths}()}.}
}
\description{
Uses \code{remove.package} to uninstall the package.
To uninstall a package from a non-default library,
use \code{\link[withr:with_libpaths]{withr::with_libpaths()}}.
}
\seealso{
\code{\link[=with_debug]{with_debug()}} to install packages with debugging flags
set.
Other package installation:
\code{\link{install}()}
}
\concept{package installation}
devtools/man/remote-reexports.Rd 0000644 0001750 0001750 00000014130 13705571551 016641 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/remotes.R
\name{remote-reexports}
\alias{remote-reexports}
\alias{install_bioc}
\alias{install_bitbucket}
\alias{install_cran}
\alias{install_dev}
\alias{install_git}
\alias{install_github}
\alias{install_gitlab}
\alias{install_local}
\alias{install_svn}
\alias{install_url}
\alias{install_version}
\alias{update_packages}
\alias{dev_package_deps}
\title{Functions re-exported from the remotes package}
\usage{
install_bioc(
repo,
mirror = getOption("BioC_git", download_url("git.bioconductor.org/packages")),
git = c("auto", "git2r", "external"),
dependencies = NA,
upgrade = c("default", "ask", "always", "never"),
force = FALSE,
quiet = FALSE,
build = TRUE,
build_opts = c("--no-resave-data", "--no-manual", "--no-build-vignettes"),
build_manual = FALSE,
build_vignettes = FALSE,
repos = getOption("repos"),
type = getOption("pkgType"),
...
)
install_bitbucket(
repo,
ref = "HEAD",
subdir = NULL,
auth_user = bitbucket_user(),
password = bitbucket_password(),
host = "api.bitbucket.org/2.0",
dependencies = NA,
upgrade = c("default", "ask", "always", "never"),
force = FALSE,
quiet = FALSE,
build = TRUE,
build_opts = c("--no-resave-data", "--no-manual", "--no-build-vignettes"),
build_manual = FALSE,
build_vignettes = FALSE,
repos = getOption("repos"),
type = getOption("pkgType"),
...
)
install_cran(
pkgs,
repos = getOption("repos"),
type = getOption("pkgType"),
dependencies = NA,
upgrade = c("default", "ask", "always", "never"),
force = FALSE,
quiet = FALSE,
build = TRUE,
build_opts = c("--no-resave-data", "--no-manual", "--no-build-vignettes"),
build_manual = FALSE,
build_vignettes = FALSE,
...
)
install_dev(package, cran_url = getOption("repos")[["CRAN"]], ...)
install_git(
url,
subdir = NULL,
ref = NULL,
branch = NULL,
credentials = git_credentials(),
git = c("auto", "git2r", "external"),
dependencies = NA,
upgrade = c("default", "ask", "always", "never"),
force = FALSE,
quiet = FALSE,
build = TRUE,
build_opts = c("--no-resave-data", "--no-manual", "--no-build-vignettes"),
build_manual = FALSE,
build_vignettes = FALSE,
repos = getOption("repos"),
type = getOption("pkgType"),
...
)
install_github(
repo,
ref = "HEAD",
subdir = NULL,
auth_token = github_pat(quiet),
host = "api.github.com",
dependencies = NA,
upgrade = c("default", "ask", "always", "never"),
force = FALSE,
quiet = FALSE,
build = TRUE,
build_opts = c("--no-resave-data", "--no-manual", "--no-build-vignettes"),
build_manual = FALSE,
build_vignettes = FALSE,
repos = getOption("repos"),
type = getOption("pkgType"),
...
)
install_gitlab(
repo,
subdir = NULL,
auth_token = gitlab_pat(quiet),
host = "gitlab.com",
dependencies = NA,
upgrade = c("default", "ask", "always", "never"),
force = FALSE,
quiet = FALSE,
build = TRUE,
build_opts = c("--no-resave-data", "--no-manual", "--no-build-vignettes"),
build_manual = FALSE,
build_vignettes = FALSE,
repos = getOption("repos"),
type = getOption("pkgType"),
...
)
install_local(
path = ".",
subdir = NULL,
dependencies = NA,
upgrade = c("default", "ask", "always", "never"),
force = FALSE,
quiet = FALSE,
build = !is_binary_pkg(path),
build_opts = c("--no-resave-data", "--no-manual", "--no-build-vignettes"),
build_manual = FALSE,
build_vignettes = FALSE,
repos = getOption("repos"),
type = getOption("pkgType"),
...
)
install_svn(
url,
subdir = NULL,
args = character(0),
revision = NULL,
dependencies = NA,
upgrade = c("default", "ask", "always", "never"),
force = FALSE,
quiet = FALSE,
build = TRUE,
build_opts = c("--no-resave-data", "--no-manual", "--no-build-vignettes"),
build_manual = FALSE,
build_vignettes = FALSE,
repos = getOption("repos"),
type = getOption("pkgType"),
...
)
install_url(
url,
subdir = NULL,
dependencies = NA,
upgrade = c("default", "ask", "always", "never"),
force = FALSE,
quiet = FALSE,
build = TRUE,
build_opts = c("--no-resave-data", "--no-manual", "--no-build-vignettes"),
build_manual = FALSE,
build_vignettes = FALSE,
repos = getOption("repos"),
type = getOption("pkgType"),
...
)
install_version(
package,
version = NULL,
dependencies = NA,
upgrade = c("default", "ask", "always", "never"),
force = FALSE,
quiet = FALSE,
build = FALSE,
build_opts = c("--no-resave-data", "--no-manual", "--no-build-vignettes"),
build_manual = FALSE,
build_vignettes = FALSE,
repos = getOption("repos"),
type = "source",
...
)
update_packages(
packages = TRUE,
dependencies = NA,
upgrade = c("default", "ask", "always", "never"),
force = FALSE,
quiet = FALSE,
build = TRUE,
build_opts = c("--no-resave-data", "--no-manual", "--no-build-vignettes"),
build_manual = FALSE,
build_vignettes = FALSE,
repos = getOption("repos"),
type = getOption("pkgType"),
...
)
dev_package_deps(
pkgdir = ".",
dependencies = NA,
repos = getOption("repos"),
type = getOption("pkgType")
)
}
\description{
These functions are re-exported from the remotes package. They differ only
that the ones in devtools use the \link{ellipsis} package to ensure all dotted
arguments are used.
}
\details{
Follow the links below to see the documentation.
\code{\link[remotes:install_bioc]{remotes::install_bioc()}}, \code{\link[remotes:install_bitbucket]{remotes::install_bitbucket()}}, \code{\link[remotes:install_cran]{remotes::install_cran()}}, \code{\link[remotes:install_dev]{remotes::install_dev()}},
\code{\link[remotes:install_git]{remotes::install_git()}}, \code{\link[remotes:install_github]{remotes::install_github()}}, \code{\link[remotes:install_gitlab]{remotes::install_gitlab()}}, \code{\link[remotes:install_local]{remotes::install_local()}},
\code{\link[remotes:install_svn]{remotes::install_svn()}}, \code{\link[remotes:install_url]{remotes::install_url()}}, \code{\link[remotes:install_version]{remotes::install_version()}}, \code{\link[remotes:update_packages]{remotes::update_packages()}},
\code{\link[remotes:package_deps]{remotes::dev_package_deps()}}.
}
\keyword{internal}
devtools/man/wd.Rd 0000644 0001750 0001750 00000000732 13536443710 013727 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/wd.R
\name{wd}
\alias{wd}
\title{Set working directory.}
\usage{
wd(pkg = ".", path = "")
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{path}{path within package. Leave empty to change working directory
to package directory.}
}
\description{
Set working directory.
}
devtools/man/revdep.Rd 0000644 0001750 0001750 00000002773 14031104013 014566 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/revdep.R
\name{revdep}
\alias{revdep}
\alias{revdep_maintainers}
\title{Reverse dependency tools.}
\usage{
revdep(
pkg,
dependencies = c("Depends", "Imports", "Suggests", "LinkingTo"),
recursive = FALSE,
ignore = NULL,
bioconductor = FALSE
)
revdep_maintainers(pkg = ".")
}
\arguments{
\item{pkg}{Package name. This is unlike most devtools packages which
take a path because you might want to determine dependencies for a package
that you don't have installed. If omitted, defaults to the name of the
current package.}
\item{dependencies}{A character vector listing the types of dependencies
to follow.}
\item{recursive}{If \code{TRUE} look for full set of recursive dependencies.}
\item{ignore}{A character vector of package names to ignore. These packages
will not appear in returned vector.}
\item{bioconductor}{If \code{TRUE} also look for dependencies amongst
Bioconductor packages.}
}
\description{
Tools to check and notify maintainers of all CRAN and Bioconductor
packages that depend on the specified package.
}
\details{
The first run in a session will be time-consuming because it must download
all package metadata from CRAN and Bioconductor. Subsequent runs will
be faster.
}
\examples{
\dontrun{
revdep("ggplot2")
revdep("ggplot2", ignore = c("xkcd", "zoo"))
}
}
\seealso{
The \href{https://github.com/r-lib/revdepcheck}{revdepcheck} package can
be used to run R CMD check on all reverse dependencies.
}
\keyword{internal}
devtools/man/submit_cran.Rd 0000644 0001750 0001750 00000001556 13577154220 015630 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/release.R
\name{submit_cran}
\alias{submit_cran}
\title{Submit a package to CRAN.}
\usage{
submit_cran(pkg = ".", args = NULL)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{args}{An optional character vector of additional command
line arguments to be passed to \verb{R CMD build}.}
}
\description{
This uses the new CRAN web-form submission process. After submission, you
will receive an email asking you to confirm submission - this is used
to check that the package is submitted by the maintainer.
}
\details{
It's recommended that you use \code{\link[=release]{release()}} rather than this
function as it performs more checks prior to submission.
}
\keyword{internal}
devtools/man/git_checks.Rd 0000644 0001750 0001750 00000000772 13536443710 015424 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/check-git.R
\name{git_checks}
\alias{git_checks}
\title{Git checks.}
\usage{
git_checks(pkg = ".")
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
}
\description{
This function performs Git checks checks prior to release. It is called
automatically by \code{\link[=release]{release()}}.
}
\keyword{internal}
devtools/man/build_manual.Rd 0000644 0001750 0001750 00000001115 13536443710 015745 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/build-manual.R
\name{build_manual}
\alias{build_manual}
\title{Create package pdf manual}
\usage{
build_manual(pkg = ".", path = NULL)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{path}{path in which to produce package manual.
If \code{NULL}, defaults to the parent directory of the package.}
}
\description{
Create package pdf manual
}
\seealso{
\code{\link[=Rd2pdf]{Rd2pdf()}}
}
devtools/man/bash.Rd 0000644 0001750 0001750 00000000624 13536443710 014232 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/bash.R
\name{bash}
\alias{bash}
\title{Open bash shell in package directory.}
\usage{
bash(pkg = ".")
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
}
\description{
Open bash shell in package directory.
}
devtools/man/document.Rd 0000644 0001750 0001750 00000001735 13577154220 015137 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/document.R
\name{document}
\alias{document}
\title{Use roxygen to document a package.}
\usage{
document(pkg = ".", roclets = NULL, quiet = FALSE)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{roclets}{Character vector of roclet names to use with package.
The default, \code{NULL}, uses the roxygen \code{roclets} option,
which defaults to \code{c("collate", "namespace", "rd")}.}
\item{quiet}{if \code{TRUE} suppresses output from this function.}
}
\description{
This function is a wrapper for the \code{\link[roxygen2:roxygenize]{roxygen2::roxygenize()}}
function from the roxygen2 package. See the documentation and vignettes of
that package to learn how to use roxygen.
}
\seealso{
\code{\link[roxygen2:roxygenize]{roxygen2::roxygenize()}},
\code{browseVignettes("roxygen2")}
}
devtools/man/dev_mode.Rd 0000644 0001750 0001750 00000001501 13532242644 015071 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/dev-mode.R
\name{dev_mode}
\alias{dev_mode}
\title{Activate and deactivate development mode.}
\usage{
dev_mode(on = NULL, path = getOption("devtools.path"))
}
\arguments{
\item{on}{turn dev mode on (\code{TRUE}) or off (\code{FALSE}). If omitted
will guess based on whether or not \code{path} is in
\code{\link[=.libPaths]{.libPaths()}}}
\item{path}{directory to library.}
}
\description{
When activated, \code{dev_mode} creates a new library for storing installed
packages. This new library is automatically created when \code{dev_mode} is
activated if it does not already exist.
This allows you to test development packages in a sandbox, without
interfering with the other packages you have installed.
}
\examples{
\dontrun{
dev_mode()
dev_mode()
}
}
devtools/man/r_env_vars.Rd 0000644 0001750 0001750 00000001204 13532242644 015453 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/R.R
\name{r_env_vars}
\alias{r_env_vars}
\title{Environment variables to set when calling R}
\usage{
r_env_vars()
}
\value{
a named character vector
}
\description{
Devtools sets a number of environmental variables to ensure consistent
between the current R session and the new session, and to ensure that
everything behaves the same across systems. It also suppresses a common
warning on windows, and sets \code{NOT_CRAN} so you can tell that your
code is not running on CRAN. If \code{NOT_CRAN} has been set externally, it
is not overwritten.
}
\keyword{internal}
devtools/man/has_tests.Rd 0000644 0001750 0001750 00000000404 13532242644 015305 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/has-tests.R
\name{has_tests}
\alias{has_tests}
\title{Was devtools installed with tests?}
\usage{
has_tests()
}
\description{
Was devtools installed with tests?
}
\keyword{internal}
devtools/man/dev_sitrep.Rd 0000644 0001750 0001750 00000002133 13536443710 015456 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/sitrep.R
\name{dev_sitrep}
\alias{dev_sitrep}
\title{Report package development situation}
\usage{
dev_sitrep(pkg = ".", debug = FALSE)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{debug}{If \code{TRUE}, will print out extra information useful for
debugging. If \code{FALSE}, it will use result cached from a previous run.}
}
\value{
A named list, with S3 class \code{dev_sitrep} (for printing purposes).
}
\description{
\code{dev_sitrep()} reports
\itemize{
\item If R is up to date
\item If RStudio is up to date
\item If compiler build tools are installed and available for use
\item If devtools and its dependencies are up to date
\item If the package's dependencies are up to date
}
Call this function if things seem weird and you're not sure
what's wrong or how to fix it. If this function returns no output
everything should be ready for package development.
}
\examples{
\dontrun{
dev_sitrep()
}
}
devtools/man/check_win.Rd 0000644 0001750 0001750 00000004161 14151154613 015242 0 ustar nilesh nilesh % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/check-win.R
\name{check_win}
\alias{check_win}
\alias{check_win_devel}
\alias{check_win_release}
\alias{check_win_oldrelease}
\title{Build windows binary package.}
\usage{
check_win_devel(
pkg = ".",
args = NULL,
manual = TRUE,
email = NULL,
quiet = FALSE,
...
)
check_win_release(
pkg = ".",
args = NULL,
manual = TRUE,
email = NULL,
quiet = FALSE,
...
)
check_win_oldrelease(
pkg = ".",
args = NULL,
manual = TRUE,
email = NULL,
quiet = FALSE,
...
)
}
\arguments{
\item{pkg}{The package to use, can be a file path to the package or a
package object. See \code{\link[=as.package]{as.package()}} for more information.}
\item{args}{An optional character vector of additional command
line arguments to be passed to \verb{R CMD build} if \code{binary = FALSE},
or \verb{R CMD install} if \code{binary = TRUE}.}
\item{manual}{For source packages: if \code{FALSE}, don't build PDF
vignettes (\code{--no-build-vignettes}) or manual (\code{--no-manual}).}
\item{email}{An alternative email to use, default \code{NULL} uses the package
Maintainer's email.}
\item{quiet}{If \code{TRUE}, suppresses output.}
\item{...}{Additional arguments passed to \code{\link[pkgbuild:build]{pkgbuild::build()}}.}
}
\description{
This function works by bundling source package, and then uploading to
\url{https://win-builder.r-project.org/}. Once building is complete you'll
receive a link to the built package in the email address listed in the
maintainer field. It usually takes around 30 minutes. As a side effect,
win-build also runs \verb{R CMD check} on the package, so \code{check_win}
is also useful to check that your package is ok on windows.
}
\section{Functions}{
\itemize{
\item \code{check_win_devel}: Check package on the development version of R.
\item \code{check_win_release}: Check package on the release version of R.
\item \code{check_win_oldrelease}: Check package on the previous major release version of R.
}}
\seealso{
Other build functions:
\code{\link{check_mac_release}()},
\code{\link{check_rhub}()}
}
\concept{build functions}
devtools/man/figures/ 0000755 0001750 0001750 00000000000 14030366260 014462 5 ustar nilesh nilesh devtools/man/figures/logo.svg 0000644 0001750 0001750 00000016235 13536443710 016160 0 ustar nilesh nilesh