This is primarily for package developers. It allows the testing of what the recursive dependencies would be if a package was removed from the immediate dependencies.
A package name to be testing the dependencies
A vector of package names who are to be "removed" from the
pkg
immediate dependencies
Numeric or logical indicating how verbose should the function
be. If -1 or -2, then as little verbosity as possible. If 0 or FALSE,
then minimal outputs; if 1
or TRUE, more outputs; 2
even more. NOTE: in
Require
function, when verbose >= 2
, the return object will have an
attribute: attr(.., "Require")
which has lots of information about the
processes of the installs.
A list with 3 named lists Direct
, Recursive
and IfRemoved
.
Direct
will show the top level direct dependencies, either Remaining
or
Removed
. Recursive
will show the full recursive dependencies, either
Remaining
or Removed
. IfRemoved
returns all package dependencies that
are removed for each top level dependency. If a top level dependency is not
listed in this final list, then it means that it is also a recursive
dependency elsewhere, so its removal has no effect.
if (FALSE) {
if (Require:::.runLongExamples()) {
opts <- Require:::.setupExample()
pkgDepIfDepRemoved("reproducible", "data.table")
Require:::.cleanup(opts)
}
}