Skip to content

Commit

Permalink
Rename use_tidy_versions() to use_latest_dependencies()
Browse files Browse the repository at this point in the history
Fixes #771
  • Loading branch information
hadley committed Oct 17, 2019
1 parent 54204dd commit e364fd0
Show file tree
Hide file tree
Showing 8 changed files with 85 additions and 72 deletions.
2 changes: 1 addition & 1 deletion NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ export(use_github_release)
export(use_gitlab_ci)
export(use_gpl3_license)
export(use_jenkins)
export(use_latest_dependencies)
export(use_lgpl_license)
export(use_lifecycle)
export(use_lifecycle_badge)
Expand Down Expand Up @@ -149,7 +150,6 @@ export(use_tidy_release_test_env)
export(use_tidy_style)
export(use_tidy_support)
export(use_tidy_thanks)
export(use_tidy_versions)
export(use_travis)
export(use_travis_badge)
export(use_tutorial)
Expand Down
3 changes: 3 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# usethis (development version)

* `use_tidy_version()` is now `use_latest_dependencies()` to better reflect
it's usage (#771).

* `create_package()` will now create a package in a symlink to a directory (#794).

* `git_sitrep()` now reports project-specific user name and email, if set
Expand Down
39 changes: 39 additions & 0 deletions R/latest-dependencies.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#' Use "latest" versions of all dependencies
#'
#' Pins minimum version of dependencies to latest (as determined by "source)"
#' Useful for tidyverse package, but should otherwise be used with extreme
#' care.
#'
#' @keywords internal
#' @export
#' @param overwrite By default (`FALSE`), only dependencies without version
#' specifications will be modified. Set to `TRUE` to modify all dependencies.
#' @param source Use "local" or "CRAN" package versions.
use_latest_dependencies <- function(overwrite = FALSE, source = c("local", "CRAN")) {
deps <- desc::desc_get_deps(proj_get())
deps <- update_versions(deps, overwrite = overwrite, source = source)
desc::desc_set_deps(deps, file = proj_get())

invisible(TRUE)
}

update_versions <- function(deps, overwrite = FALSE, source = c("local", "CRAN")) {
baserec <- base_and_recommended()
to_change <- !deps$package %in% c("R", baserec)
if (!overwrite) {
to_change <- to_change & deps$version == "*"
}

packages <- deps$package[to_change]
versions <- switch(match.arg(source),
local = purrr::map_chr(packages, package_version),
CRAN = utils::available.packages()[packages, "Version"]
)
deps$version[to_change] <- paste0(">= ", versions)

deps
}

package_version <- function(x) {
as.character(utils::packageVersion(x))
}
38 changes: 0 additions & 38 deletions R/tidyverse.R
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,6 @@
#' guide](https://style.tidyverse.org). This function will overwrite files! See
#' below for usage advice.
#'
#' * `use_tidy_versions()`: pins all dependencies to require at least
#' the currently installed version.
#'
#' * `use_tidy_contributing()`: adds standard tidyverse contributing guidelines.
#'
#' * `use_tidy_issue_template()`: adds a standard tidyverse issue template.
Expand Down Expand Up @@ -132,40 +129,6 @@ use_tidy_description <- function() {
invisible(TRUE)
}

#' @export
#' @rdname tidyverse
#' @param overwrite By default (`FALSE`), only dependencies without version
#' specifications will be modified. Set to `TRUE` to modify all dependencies.
#' @param source Use "local" or "CRAN" package versions.
use_tidy_versions <- function(overwrite = FALSE, source = c("local", "CRAN")) {
deps <- desc::desc_get_deps(proj_get())
deps <- update_versions(deps, overwrite = overwrite, source = source)
desc::desc_set_deps(deps, file = proj_get())

invisible(TRUE)
}

update_versions <- function(deps, overwrite = FALSE, source = c("local", "CRAN")) {
baserec <- base_and_recommended()
to_change <- !deps$package %in% c("R", baserec)
if (!overwrite) {
to_change <- to_change & deps$version == "*"
}

packages <- deps$package[to_change]
versions <- switch(match.arg(source),
local = purrr::map_chr(packages, package_version),
CRAN = utils::available.packages()[packages, "Version"]
)
deps$version[to_change] <- paste0(">= ", versions)

deps
}

package_version <- function(x) {
as.character(utils::packageVersion(x))
}

#' @export
#' @rdname tidyverse
use_tidy_eval <- function() {
Expand All @@ -179,7 +142,6 @@ use_tidy_eval <- function() {
return(invisible(new))
}


#' @export
#' @rdname tidyverse
use_tidy_contributing <- function() {
Expand Down
10 changes: 0 additions & 10 deletions man/tidyverse.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions man/use_latest_dependencies.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 22 additions & 0 deletions tests/testthat/test-latest-dependencies.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
test_that("use_tidy_versions() specifies a version for dependencies", {
pkg <- scoped_temporary_package()
use_package("usethis")
use_package("desc")
use_package("withr", "Suggests")
use_package("gh", "Suggests")
use_latest_dependencies()
desc <- readLines(proj_path("DESCRIPTION"))
desc <- grep("usethis|desc|withr|gh", desc, value = TRUE)
expect_true(all(grepl("\\(>= [0-9.]+\\)", desc)))
})

test_that("use_tidy_versions() does nothing for a base package", {
## if we ever depend on a recommended package, could beef up this test a bit
pkg <- scoped_temporary_package()
use_package("tools")
use_package("stats", "Suggests")
use_latest_dependencies()
desc <- readLines(proj_path("DESCRIPTION"))
desc <- grep("tools|stats", desc, value = TRUE)
expect_false(any(grepl("\\(>= [0-9.]+\\)", desc)))
})
23 changes: 0 additions & 23 deletions tests/testthat/test-use-tidy.R
Original file line number Diff line number Diff line change
Expand Up @@ -12,29 +12,6 @@ test_that("use_tidy_description() alphabetises dependencies", {
expect_gt(grep("withr", desc), grep("gh", desc))
})

test_that("use_tidy_versions() specifies a version for dependencies", {
pkg <- scoped_temporary_package()
use_package("usethis")
use_package("desc")
use_package("withr", "Suggests")
use_package("gh", "Suggests")
use_tidy_versions()
desc <- readLines(proj_path("DESCRIPTION"))
desc <- grep("usethis|desc|withr|gh", desc, value = TRUE)
expect_true(all(grepl("\\(>= [0-9.]+\\)", desc)))
})

test_that("use_tidy_versions() does nothing for a base package", {
## if we ever depend on a recommended package, could beef up this test a bit
pkg <- scoped_temporary_package()
use_package("tools")
use_package("stats", "Suggests")
use_tidy_versions()
desc <- readLines(proj_path("DESCRIPTION"))
desc <- grep("tools|stats", desc, value = TRUE)
expect_false(any(grepl("\\(>= [0-9.]+\\)", desc)))
})

test_that("use_tidy_eval() inserts the template file and Imports rlang", {
skip_if_not_installed("roxygen2")

Expand Down

0 comments on commit e364fd0

Please # to comment.