1212This package helps accessing files relative to a * project root* to [ stop the working directory insanity] ( https://gist.github.com/jennybc/362f52446fe1ebc4c49f ) . It is a low-level helper package for the [ here] ( https://here.r-lib.org/ ) package.
1313
1414<pre class =' chroma ' >
15- <span class =' kr ' ><a href =' https://rdrr.io/r/base/library.html ' >library</a ></span ><span class =' o ' >(</span ><span class =' nv ' ><a href =' https://github.com/ r-lib/rprojroot ' >rprojroot</a ></span ><span class =' o ' >)</span ></pre >
15+ <span class =' kr ' ><a href =' https://rdrr.io/r/base/library.html ' >library</a ></span ><span class =' o ' >(</span ><span class =' nv ' ><a href =' https://rprojroot. r-lib.org/ ' >rprojroot</a ></span ><span class =' o ' >)</span ></pre >
1616
1717## Example
1818
@@ -21,11 +21,11 @@ The rprojroot package works best when you have a “project”: all related file
2121<pre class =' chroma ' >
2222<span class =' nv ' >dir</span > <span class =' o ' >< ; -</span > <span class =' nf ' ><a href =' https://rdrr.io/r/base/tempfile.html ' >tempfile</a ></span ><span class =' o ' >(</span ><span class =' o ' >)</span >
2323<span class =' nv ' >pkg</span > <span class =' o ' >< ; -</span > <span class =' nf ' >usethis</span ><span class =' nf ' >::</span ><span class =' nf ' ><a href =' https://usethis.r-lib.org/reference/create_package.html ' >create_package</a ></span ><span class =' o ' >(</span ><span class =' nv ' >dir</span ><span class =' o ' >)</span >
24- <span class =' c ' >#> ; <span style =' color : #00BB00 ;' >✓</span ><span > Creating </span ><span style =' color : #0000BB ;' >'/tmp/RtmpG04Wy1/file2d4962962cd9 /'</span ></span >
25- <span class =' c ' >#> ; <span style =' color : #00BB00 ;' >✓</span ><span > Setting active project to </span ><span style =' color : #0000BB ;' >'/tmp/RtmpG04Wy1/file2d4962962cd9 '</span ></span >
24+ <span class =' c ' >#> ; <span style =' color : #00BB00 ;' >✓</span ><span > Creating </span ><span style =' color : #0000BB ;' >'/tmp/RtmpBLE08t/file294c3c8acca7 /'</span ></span >
25+ <span class =' c ' >#> ; <span style =' color : #00BB00 ;' >✓</span ><span > Setting active project to </span ><span style =' color : #0000BB ;' >'/tmp/RtmpBLE08t/file294c3c8acca7 '</span ></span >
2626<span class =' c ' >#> ; <span style =' color : #00BB00 ;' >✓</span ><span > Creating </span ><span style =' color : #0000BB ;' >'R/'</span ></span >
2727<span class =' c ' >#> ; <span style =' color : #00BB00 ;' >✓</span ><span > Writing </span ><span style =' color : #0000BB ;' >'DESCRIPTION'</span ></span >
28- <span class =' c ' >#> ; <span style =' color : #0000BB ;' >Package</span ><span >: file2d4962962cd9 </span ></span >
28+ <span class =' c ' >#> ; <span style =' color : #0000BB ;' >Package</span ><span >: file294c3c8acca7 </span ></span >
2929<span class =' c ' >#> ; <span style =' color : #0000BB ;' >Title</span ><span >: What the Package Does (One Line, Title Case)</span ></span >
3030<span class =' c ' >#> ; <span style =' color : #0000BB ;' >Version</span ><span >: 0.0.0.9000</span ></span >
3131<span class =' c ' >#> ; <span style =' color : #0000BB ;' >Date</span ><span >: 2020-11-08</span ></span >
@@ -50,18 +50,26 @@ R packages satisfy the `is_r_package` criterion. A criterion is an object that c
5050<span class =' nv ' >is_r_package</span >
5151<span class =' c ' >#> ; Root criterion: contains a file `DESCRIPTION` with contents matching `^Package: `</span >
5252<span class =' nv ' >is_r_package</span ><span class =' o ' >$</span ><span class =' nf ' >find_file</span ><span class =' o ' >(</span ><span class =' o ' >)</span >
53- <span class =' c ' >#> ; [1] "/tmp/RtmpG04Wy1/file2d4962962cd9 "</span >
53+ <span class =' c ' >#> ; [1] "/tmp/RtmpBLE08t/file294c3c8acca7 "</span >
5454<span class =' nv ' >is_r_package</span ><span class =' o ' >$</span ><span class =' nf ' >find_file</span ><span class =' o ' >(</span ><span class =' s ' >"tests"</span >, <span class =' s ' >"testthat"</span ><span class =' o ' >)</span >
55- <span class =' c ' >#> ; [1] "/tmp/RtmpG04Wy1/file2d4962962cd9 /tests/testthat"</span ></pre >
55+ <span class =' c ' >#> ; [1] "/tmp/RtmpBLE08t/file294c3c8acca7 /tests/testthat"</span ></pre >
5656
5757This works identically when starting from a subdirectory:
5858
5959<pre class =' chroma ' >
6060<span class =' nf ' ><a href =' https://rdrr.io/r/base/getwd.html ' >setwd</a ></span ><span class =' o ' >(</span ><span class =' nf ' ><a href =' https://rdrr.io/r/base/file.path.html ' >file.path</a ></span ><span class =' o ' >(</span ><span class =' nv ' >pkg</span >, <span class =' s ' >"R"</span ><span class =' o ' >)</span ><span class =' o ' >)</span >
6161<span class =' nv ' >is_r_package</span ><span class =' o ' >$</span ><span class =' nf ' >find_file</span ><span class =' o ' >(</span ><span class =' o ' >)</span >
62- <span class =' c ' >#> ; [1] "/tmp/RtmpG04Wy1/file2d4962962cd9 "</span >
62+ <span class =' c ' >#> ; [1] "/tmp/RtmpBLE08t/file294c3c8acca7 "</span >
6363<span class =' nv ' >is_r_package</span ><span class =' o ' >$</span ><span class =' nf ' >find_file</span ><span class =' o ' >(</span ><span class =' s ' >"tests"</span >, <span class =' s ' >"testthat"</span ><span class =' o ' >)</span >
64- <span class =' c ' >#> ; [1] "/tmp/RtmpG04Wy1/file2d4962962cd9/tests/testthat"</span ></pre >
64+ <span class =' c ' >#> ; [1] "/tmp/RtmpBLE08t/file294c3c8acca7/tests/testthat"</span ></pre >
65+
66+ There is one exception: if the first component passed to ` find_file() ` is already an absolute path. This allows safely applying this function to paths that may be absolute or relative:
67+
68+ <pre class =' chroma ' >
69+ <span class =' nf ' ><a href =' https://rdrr.io/r/base/getwd.html ' >setwd</a ></span ><span class =' o ' >(</span ><span class =' nf ' ><a href =' https://rdrr.io/r/base/file.path.html ' >file.path</a ></span ><span class =' o ' >(</span ><span class =' nv ' >pkg</span >, <span class =' s ' >"R"</span ><span class =' o ' >)</span ><span class =' o ' >)</span >
70+ <span class =' nv ' >path</span > <span class =' o ' >< ; -</span > <span class =' nv ' >is_r_package</span ><span class =' o ' >$</span ><span class =' nf ' >find_file</span ><span class =' o ' >(</span ><span class =' o ' >)</span >
71+ <span class =' nv ' >is_r_package</span ><span class =' o ' >$</span ><span class =' nf ' >find_file</span ><span class =' o ' >(</span ><span class =' nv ' >path</span >, <span class =' s ' >"tests"</span >, <span class =' s ' >"testthat"</span ><span class =' o ' >)</span >
72+ <span class =' c ' >#> ; [1] "/tmp/RtmpBLE08t/file294c3c8acca7/tests/testthat"</span ></pre >
6573
6674As long as you are sure that your working directory is somewhere inside your project, you can retrieve the project root.
6775
0 commit comments