devtools::load_all without attaching?

I have a program that depends on two packages that I frequently develop in conjunction: pkg1 which is a dependency for pkg2.

The main program refers to pkg2 only ... and thus pkg1 exists only via the bindings pkg2 creates to it. For example, there exists some pkg2 function:

do_something() {
  pkg1::actually_do_something()
}

To ease development, I put in a relatively basic switch that checks an environment variable to load the development version via devtools::load_all(), saving me from needing to repeatedly build/install while actively developing:

if (isTRUE(Sys.getenv("MYENV") == "DEV")) {
  devtools::load_all("path/to/pkg2")
} else {
  library(pkg2)
}

This all works fine until I make a change in pkg1 that's needed for pkg2. In such cases, I've found myself needing to install pkg1 while developing (possibly only temporarily, e.g. via devtools::dev_mode()). Without that installation step, any updated code in pkg2 uses the previously installed version of pkg1, but as I mentioned above, I tend to make package updates to both in synchronicity. This negates some advantage of the switch above because now I need to repeatedly need to build/install pkg1 when making quick development changes.

Is there a pattern that I haven't discovered where I can 'register' the path to pkg1 as a temporary path for the in-development version of pkg2 to use instead of the current R session's library-installed version of pkg1? Something like devtools::load_all(), but only importing the package, not fully attaching the package (while also routing dependent packages to this imported version instead of the original somehow).

Also important, I suppose: I'd like to avoid adding pkg1 as a direct dependency of the main program (i.e. not doing devtools::load_all("path/to/pkg1")) as it doesn't reflect the production version of the program which only needs to take the pkg2 direct dependency via the single library(pkg2) call.

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.