Short version:
Can you export devtools:::check_dir and rename it to devtools::package_root, and give it a default parameter of ".".
Long version:
Been using devtools at work to develop analysis packages. One common thing I do is put extra scripts in what is a package directory. These scripts usually need some awareness of their relative location to package root, but it occurred to me that devtools::load_all() has an ability to find package root no matter what the working directory is as long as it is a sub-directory of the package. I inspected the source and noted it all came down to devtools::check_dir("."), and I thought this is wonderful...
Shouldn't everything we code use that as a root directory? This way a source file never needs to know where it is relative to the root of a package. For example I was modifying a colleagues data structure and wanted to save it in package_root/data. A way to do that in devtools is:
save(tcga_ovarian_pepdata_bp, file = file.path(devtools:::check_dir("."), "data","ModifiedOvarianPepdataBP.Rdata"))
Now no matter where this script ends up in any sub-directory of the package the object will always be saved in package_root/data. I can put this save two nested directories deep and the script doesn't need to know. That is cool! But, it isn't exported and has a cryptic name.
Short version:
Can you export
devtools:::check_dirand rename it todevtools::package_root, and give it a default parameter of ".".Long version:
Been using devtools at work to develop analysis packages. One common thing I do is put extra scripts in what is a package directory. These scripts usually need some awareness of their relative location to package root, but it occurred to me that
devtools::load_all()has an ability to find package root no matter what the working directory is as long as it is a sub-directory of the package. I inspected the source and noted it all came down to devtools::check_dir("."), and I thought this is wonderful...Shouldn't everything we code use that as a root directory? This way a source file never needs to know where it is relative to the root of a package. For example I was modifying a colleagues data structure and wanted to save it in package_root/data. A way to do that in devtools is:
Now no matter where this script ends up in any sub-directory of the package the object will always be saved in package_root/data. I can put this save two nested directories deep and the script doesn't need to know. That is cool! But, it isn't exported and has a cryptic name.