Skip to content

Commit a225a21

Browse files
Let use_package() decrement a package dependency. (#2043)
* Let `use_package()` decrement a package dependency. Fixes #1957. * Using if () ... else () instead of ifelse() on non-vectorized operation * Style * Simplify glue string * Credit @jplecavalier for the PR --------- Co-authored-by: Jenny Bryan <jenny.f.bryan@gmail.com>
1 parent 4ce704b commit a225a21

File tree

4 files changed

+32
-13
lines changed

4 files changed

+32
-13
lines changed

NEWS.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
# usethis (development version)
22

3+
## Bug fixes and minor improvements
4+
5+
* `use_package()` now decreases a package minimum version required when
6+
`min_version` is lower than what is currently specified in the DESCRIPTION
7+
file (@jplecavalier, #1957).
8+
39
* `use_data()` now uses serialization version 3 by default. (@laurabrianna, #2044)
10+
411
* Reverse dependency checks are only suggested if they exist
512
(#1817, @seankross).
613

R/helpers.R

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -62,19 +62,21 @@ use_dependency <- function(package, type, min_version = NULL) {
6262
"!" = "Package {.pkg {package}} is already listed in
6363
{.field {existing_type}} in DESCRIPTION; no change made."
6464
))
65-
} else if (delta == 0 && !is.null(min_version)) {
66-
# change version
67-
upgrade <- existing_version == "*" ||
68-
numeric_version(min_version) > version_spec(existing_version)
69-
if (upgrade) {
70-
ui_bullets(c(
71-
"v" = "Increasing {.pkg {package}} version to {.val {version}} in
72-
DESCRIPTION."
73-
))
74-
desc$set_dep(package, type, version = version)
75-
desc$write()
76-
changed <- TRUE
65+
} else if (delta == 0 && version_spec(version) != version_spec(existing_version)) {
66+
if (version_spec(version) > version_spec(existing_version)) {
67+
direction <- "Increasing"
68+
} else {
69+
direction <- "Decreasing"
7770
}
71+
72+
ui_bullets(c(
73+
"v" = "{direction} {.pkg {package}} version to {.val {version}} in
74+
DESCRIPTION."
75+
))
76+
desc$set_dep(package, type, version = version)
77+
desc$write()
78+
changed <- TRUE
79+
7880
} else if (delta > 0) {
7981
# moving from, e.g., Suggests to Imports
8082
ui_bullets(c(
@@ -96,6 +98,7 @@ r_version <- function() {
9698
}
9799

98100
version_spec <- function(x) {
101+
if (x == "*") x <- "0"
99102
x <- gsub("(<=|<|>=|>|==)\\s*", "", x)
100103
numeric_version(x)
101104
}

tests/testthat/_snaps/helpers.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@
2626
Message
2727
v Increasing crayon version to ">= 2.0.0" in DESCRIPTION.
2828

29+
---
30+
31+
Code
32+
use_dependency("crayon", "Imports", min_version = "1.0.0")
33+
Message
34+
v Decreasing crayon version to ">= 1.0.0" in DESCRIPTION.
35+
2936
# use_dependency() upgrades a dependency
3037

3138
Code

tests/testthat/test-helpers.R

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ test_that("we message for version change and are silent for same version", {
5252
expect_snapshot(
5353
use_dependency("crayon", "Imports", min_version = "2.0.0")
5454
)
55-
expect_silent(use_dependency("crayon", "Imports", min_version = "1.0.0"))
55+
expect_snapshot(
56+
use_dependency("crayon", "Imports", min_version = "1.0.0")
57+
)
5658
})
5759

5860
## https://github.com/r-lib/usethis/issues/99

0 commit comments

Comments
 (0)