Created attachment 2345 [details]
proposed patch for silent install.packages(character(0))
I would like to propose to change behavior of `install.packages` for `pkgs` argument equal to `character()`.
Currently it will popup list of packages to choose to install. When in non-interactive session it will raise an error.
While such behavior perfectly make sense for `install.packages()` call, it is not that much desired for `install.packages(character(0))` call.
Motivation behind this change is best described by use cases I have seen in some users scripts.
1. procedure to install dependencies which to install only non-installed packages
deps <- c("pkg.a","pkg.b")
inst.pkgs <- rownames(installed.packages())
currently we have to always add extra check, otherwise our procedure might fail
to.inst.pkgs <- setdiff(deps, inst.pkgs)
if (length(to.inst.pkgs)) install.packages(to.inst.pkgs)
2. function that extracts dependencies from DESCRIPTION file, to install dependencies of arbitrary package based on its sources. Some of packages might not have any dependencies so `character(0)` is returned, then again you have to escape call.
if (length(pkgs<-dcf.dependencies("/path/to/DESCRIPTION"))) install.packages(pkgs)
It would be more friendly if `install.packages(character(0))` would return `invisible()` and not raise `no packages were specified` error as now.
Attaching proposed patch based on recent trunk.
Fixed now in the trunk.