From 0fec17f4698617d5014553ba7b482dbbca3299b0 Mon Sep 17 00:00:00 2001 From: Marcos Navarro Date: Sat, 7 Dec 2024 00:35:17 +0900 Subject: [PATCH 1/8] Rmarkdown inspection generates a configuration with base dir files included, when there is a site configuration file present --- internal/bundles/matcher/walker.go | 3 + internal/inspect/detectors/rmarkdown.go | 64 + internal/inspect/detectors/rmarkdown_test.go | 92 ++ .../testdata/bookdown-proj/01-intro.Rmd | 21 + .../testdata/bookdown-proj/02-literature.Rmd | 3 + .../testdata/bookdown-proj/03-method.Rmd | 23 + .../testdata/bookdown-proj/04-application.Rmd | 7 + .../testdata/bookdown-proj/05-summary.Rmd | 3 + .../testdata/bookdown-proj/06-references.Rmd | 3 + .../testdata/bookdown-proj/DESCRIPTION | 6 + .../detectors/testdata/bookdown-proj/LICENSE | 117 ++ .../testdata/bookdown-proj/README.md | 5 + .../testdata/bookdown-proj/_bookdown.yml | 5 + .../testdata/bookdown-proj/_build.sh | 8 + .../testdata/bookdown-proj/_deploy.sh | 16 + .../testdata/bookdown-proj/_output.yml | 18 + .../testdata/bookdown-proj/_publish.R | 41 + .../detectors/testdata/bookdown-proj/book.bib | 10 + .../bookdown-proj/bookdown-demo.Rproj | 18 + .../testdata/bookdown-proj/index.Rmd | 36 + .../detectors/testdata/bookdown-proj/now.json | 4 + .../testdata/bookdown-proj/preamble.tex | 8 + .../testdata/bookdown-proj/renv.lock | 422 ++++++ .../testdata/bookdown-proj/renv/.gitignore | 7 + .../testdata/bookdown-proj/renv/activate.R | 1220 +++++++++++++++++ .../testdata/bookdown-proj/renv/settings.json | 15 + .../testdata/bookdown-proj/style.css | 14 + .../detectors/testdata/bookdown-proj/toc.css | 127 ++ .../detectors/testdata/rmd-site/_site.yml | 0 .../detectors/testdata/rmd-site/another.Rmd | 3 + .../detectors/testdata/rmd-site/article.Rmd | 3 + .../testdata/rmd-site/images/mario-jump.gif | Bin 0 -> 26559 bytes .../detectors/testdata/rmd-site/index.Rmd | 31 + .../rmd-site/index_cache/html/__packages | 1 + ...ata_24ff9b2ac5ea45d04d93bc5a7ed5a20f.RData | Bin 0 -> 2902 bytes ...-data_24ff9b2ac5ea45d04d93bc5a7ed5a20f.rdb | Bin 0 -> 542862 bytes ...-data_24ff9b2ac5ea45d04d93bc5a7ed5a20f.rdx | Bin 0 -> 146 bytes ...our_c27bf36805d32a6a394e99ac4056f616.RData | Bin 0 -> 2938 bytes ...ntour_c27bf36805d32a6a394e99ac4056f616.rdb | Bin 0 -> 454 bytes ...ntour_c27bf36805d32a6a394e99ac4056f616.rdx | Bin 0 -> 146 bytes .../detectors/testdata/rmd-site/manifest.json | 908 ++++++++++++ .../detectors/testdata/rmd-site/meta.yaml | 10 + .../detectors/testdata/rmd-site/renv.lock | 398 ++++++ .../testdata/rmd-site/renv/.gitignore | 7 + .../testdata/rmd-site/renv/activate.R | 1220 +++++++++++++++++ .../testdata/rmd-site/renv/settings.json | 15 + .../testdata/rmd-site/rmd-site.Rproj | 15 + .../testdata/rmd-site/sub-dir/another.Rmd | 3 + .../testdata/rmd-site/sub-dir/some.R | 3 + .../testdata/rmd-site/test/.publisher-env | 6 + internal/util/files.go | 2 + 51 files changed, 4941 insertions(+) create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/01-intro.Rmd create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/02-literature.Rmd create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/03-method.Rmd create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/04-application.Rmd create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/05-summary.Rmd create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/06-references.Rmd create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/DESCRIPTION create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/LICENSE create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/README.md create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/_bookdown.yml create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/_build.sh create mode 100755 internal/inspect/detectors/testdata/bookdown-proj/_deploy.sh create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/_output.yml create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/_publish.R create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/book.bib create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/bookdown-demo.Rproj create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/index.Rmd create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/now.json create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/preamble.tex create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/renv.lock create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/renv/.gitignore create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/renv/activate.R create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/renv/settings.json create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/style.css create mode 100644 internal/inspect/detectors/testdata/bookdown-proj/toc.css create mode 100644 internal/inspect/detectors/testdata/rmd-site/_site.yml create mode 100644 internal/inspect/detectors/testdata/rmd-site/another.Rmd create mode 100644 internal/inspect/detectors/testdata/rmd-site/article.Rmd create mode 100644 internal/inspect/detectors/testdata/rmd-site/images/mario-jump.gif create mode 100644 internal/inspect/detectors/testdata/rmd-site/index.Rmd create mode 100644 internal/inspect/detectors/testdata/rmd-site/index_cache/html/__packages create mode 100644 internal/inspect/detectors/testdata/rmd-site/index_cache/html/gen-data_24ff9b2ac5ea45d04d93bc5a7ed5a20f.RData create mode 100644 internal/inspect/detectors/testdata/rmd-site/index_cache/html/gen-data_24ff9b2ac5ea45d04d93bc5a7ed5a20f.rdb create mode 100644 internal/inspect/detectors/testdata/rmd-site/index_cache/html/gen-data_24ff9b2ac5ea45d04d93bc5a7ed5a20f.rdx create mode 100644 internal/inspect/detectors/testdata/rmd-site/index_cache/html/line-contour_c27bf36805d32a6a394e99ac4056f616.RData create mode 100644 internal/inspect/detectors/testdata/rmd-site/index_cache/html/line-contour_c27bf36805d32a6a394e99ac4056f616.rdb create mode 100644 internal/inspect/detectors/testdata/rmd-site/index_cache/html/line-contour_c27bf36805d32a6a394e99ac4056f616.rdx create mode 100644 internal/inspect/detectors/testdata/rmd-site/manifest.json create mode 100644 internal/inspect/detectors/testdata/rmd-site/meta.yaml create mode 100644 internal/inspect/detectors/testdata/rmd-site/renv.lock create mode 100644 internal/inspect/detectors/testdata/rmd-site/renv/.gitignore create mode 100644 internal/inspect/detectors/testdata/rmd-site/renv/activate.R create mode 100644 internal/inspect/detectors/testdata/rmd-site/renv/settings.json create mode 100644 internal/inspect/detectors/testdata/rmd-site/rmd-site.Rproj create mode 100644 internal/inspect/detectors/testdata/rmd-site/sub-dir/another.Rmd create mode 100644 internal/inspect/detectors/testdata/rmd-site/sub-dir/some.R create mode 100644 internal/inspect/detectors/testdata/rmd-site/test/.publisher-env diff --git a/internal/bundles/matcher/walker.go b/internal/bundles/matcher/walker.go index bbdb7bbf1..23538f3e1 100644 --- a/internal/bundles/matcher/walker.go +++ b/internal/bundles/matcher/walker.go @@ -26,6 +26,9 @@ var StandardExclusions = []string{ "!.DS_Store", "!.Rhistory", "!.quarto/", + "!packrat/", + "!*.Rproj", + "!.rscignore", // Less precise than rsconnect, which checks for a // matching Rmd filename in the same directory. "!*_cache/", diff --git a/internal/inspect/detectors/rmarkdown.go b/internal/inspect/detectors/rmarkdown.go index 31e754652..be3d9be02 100644 --- a/internal/inspect/detectors/rmarkdown.go +++ b/internal/inspect/detectors/rmarkdown.go @@ -3,9 +3,11 @@ package detectors // Copyright (C) 2023 by Posit Software, PBC. import ( + "fmt" "regexp" "strings" + "github.com/posit-dev/publisher/internal/bundles/matcher" "github.com/posit-dev/publisher/internal/config" "github.com/posit-dev/publisher/internal/executor" "github.com/posit-dev/publisher/internal/inspect/dependencies/pydeps" @@ -32,6 +34,42 @@ func NewRMarkdownDetector(log logging.Logger) *RMarkdownDetector { // (this pattern allows it to be followed by optional whitespace) var rmdMetaRE = regexp.MustCompile(`(?s)^---\s*\n(.*\n)---\s*\n`) +// Known files that can be considered to identify projects as sites +var knownSiteYml = []string{"_site.yml", "_site.yaml", "_bookdown.yml", "_bookdown.yaml"} + +func prepSiteFilesAndDirs(base util.AbsolutePath, files []string) ([]string, error) { + // Logic to ignore files highly based on existing logic at rsconnect + // It is nice to keep these files out from the generated configuration + // https://github.com/rstudio/rsconnect/blob/a7c93ba015dca20a1c1fba393475b0b1538d1573/R/bundleFiles.R#L172 + filteredResult := []string{} + patterns := append(files, matcher.StandardExclusions...) + matchList, err := matcher.NewMatchList(base, patterns) + if err != nil { + return filteredResult, err + } + + for _, filename := range files { + // Ignore temporary files + if strings.HasPrefix(filename, "~") || strings.Contains(filename, "~$") { + continue + } + + // Prevent renv/ dir from being included + if filename == "renv" { + continue + } + + m := matchList.Match(base.Join(filename)) + if m == nil || m.Exclude { + continue + } + + filteredResult = append(filteredResult, fmt.Sprint("/", filename)) + } + + return filteredResult, nil +} + type RMarkdownMetadata struct { // Only the fields we need are defined here Title string `yaml:"title"` @@ -80,6 +118,17 @@ func isShinyRmd(metadata *RMarkdownMetadata) bool { return false } +func (d *RMarkdownDetector) isSite(base util.AbsolutePath) bool { + for _, ymlFile := range util.KnownSiteYmlConfigFiles { + exists, err := base.Join(ymlFile).Exists() + if err == nil && exists { + d.log.Debug("Site configuration file is present, project being considered as static site", "file", ymlFile) + return true + } + } + return false +} + func (d *RMarkdownDetector) InferType(base util.AbsolutePath, entrypoint util.RelativePath) ([]*config.Config, error) { if entrypoint.String() != "" { // Optimization: skip inspection if there's a specified entrypoint @@ -88,6 +137,7 @@ func (d *RMarkdownDetector) InferType(base util.AbsolutePath, entrypoint util.Re return nil, nil } } + var configs []*config.Config entrypointPaths, err := base.Glob("*.Rmd") if err != nil { @@ -116,6 +166,20 @@ func (d *RMarkdownDetector) InferType(base util.AbsolutePath, entrypoint util.Re cfg.Type = config.ContentTypeRMarkdown } + if d.isSite(base) { + files, err := base.ReadDirNames() + if err != nil { + return nil, err + } + + cfgfiles, err := prepSiteFilesAndDirs(base, files) + if err != nil { + return nil, err + } + + cfg.Files = cfgfiles + } + if metadata != nil { title := metadata.Title if title != "" { diff --git a/internal/inspect/detectors/rmarkdown_test.go b/internal/inspect/detectors/rmarkdown_test.go index 80cac4eb2..7da08ba0e 100644 --- a/internal/inspect/detectors/rmarkdown_test.go +++ b/internal/inspect/detectors/rmarkdown_test.go @@ -4,9 +4,11 @@ package detectors import ( "fmt" + "runtime" "testing" "github.com/posit-dev/publisher/internal/config" + "github.com/posit-dev/publisher/internal/executor/executortest" "github.com/posit-dev/publisher/internal/logging" "github.com/posit-dev/publisher/internal/schema" "github.com/posit-dev/publisher/internal/util" @@ -325,3 +327,93 @@ func (s *RMarkdownSuite) TestInferTypeWithEntrypoint() { R: &config.R{}, }, configs[0]) } + +func (s *RMarkdownSuite) TestInferTypeRmdSite() { + if runtime.GOOS == "windows" { + s.T().Skip("This test does not run on Windows") + } + + realCwd, err := util.Getwd(nil) + s.NoError(err) + + base := realCwd.Join("testdata", "rmd-site") + + detector := NewRMarkdownDetector(logging.New()) + executor := executortest.NewMockExecutor() + detector.executor = executor + + configs, err := detector.InferType(base, util.NewRelativePath("index.Rmd", nil)) + s.Nil(err) + + s.Len(configs, 1) + s.Equal(&config.Config{ + Schema: schema.ConfigSchemaURL, + Type: config.ContentTypeRMarkdown, + Entrypoint: "index.Rmd", + Title: "Testing RMD Site", + Validate: true, + Files: []string{ + "/_site.yml", + "/another.Rmd", + "/article.Rmd", + "/images", + "/index.Rmd", + "/meta.yaml", + "/renv.lock", + "/sub-dir", + "/test", + }, + R: &config.R{}, + }, configs[0]) +} + +func (s *RMarkdownSuite) TestInferTypeRmdSite_Bookdown() { + if runtime.GOOS == "windows" { + s.T().Skip("This test does not run on Windows") + } + + realCwd, err := util.Getwd(nil) + s.NoError(err) + + base := realCwd.Join("testdata", "bookdown-proj") + + detector := NewRMarkdownDetector(logging.New()) + executor := executortest.NewMockExecutor() + detector.executor = executor + + configs, err := detector.InferType(base, util.NewRelativePath("index.Rmd", nil)) + s.Nil(err) + + s.Len(configs, 1) + s.Equal(&config.Config{ + Schema: schema.ConfigSchemaURL, + Type: config.ContentTypeRMarkdown, + Entrypoint: "index.Rmd", + Title: "A Minimal Book Example", + Validate: true, + Files: []string{ + "/01-intro.Rmd", + "/02-literature.Rmd", + "/03-method.Rmd", + "/04-application.Rmd", + "/05-summary.Rmd", + "/06-references.Rmd", + "/DESCRIPTION", + "/LICENSE", + "/README.md", + "/_bookdown.yml", + "/_build.sh", + "/_deploy.sh", + "/_output.yml", + "/_publish.R", + "/book.bib", + "/index.Rmd", + "/now.json", + "/preamble.tex", + "/renv.lock", + "/style.css", + "/toc.css", + }, + R: &config.R{}, + }, configs[0]) +} diff --git a/internal/inspect/detectors/testdata/bookdown-proj/01-intro.Rmd b/internal/inspect/detectors/testdata/bookdown-proj/01-intro.Rmd new file mode 100644 index 000000000..6b16e7375 --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/01-intro.Rmd @@ -0,0 +1,21 @@ +# Introduction {#intro} + +You can label chapter and section titles using `{#label}` after them, e.g., we can reference Chapter \@ref(intro). If you do not manually label them, there will be automatic labels anyway, e.g., Chapter \@ref(methods). + +Figures and tables with captions will be placed in `figure` and `table` environments, respectively. + +```{r nice-fig, fig.cap='Here is a nice figure!', out.width='80%', fig.asp=.75, fig.align='center'} +par(mar = c(4, 4, .1, .1)) +plot(pressure, type = 'b', pch = 19) +``` + +Reference a figure by its code chunk label with the `fig:` prefix, e.g., see Figure \@ref(fig:nice-fig). Similarly, you can reference tables generated from `knitr::kable()`, e.g., see Table \@ref(tab:nice-tab). + +```{r nice-tab, tidy=FALSE} +knitr::kable( + head(iris, 20), caption = 'Here is a nice table!', + booktabs = TRUE +) +``` + +You can write citations, too. For example, we are using the **bookdown** package [@R-bookdown] in this sample book, which was built on top of R Markdown and **knitr** [@xie2015]. diff --git a/internal/inspect/detectors/testdata/bookdown-proj/02-literature.Rmd b/internal/inspect/detectors/testdata/bookdown-proj/02-literature.Rmd new file mode 100644 index 000000000..00745d079 --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/02-literature.Rmd @@ -0,0 +1,3 @@ +# Literature + +Here is a review of existing methods. diff --git a/internal/inspect/detectors/testdata/bookdown-proj/03-method.Rmd b/internal/inspect/detectors/testdata/bookdown-proj/03-method.Rmd new file mode 100644 index 000000000..dcb431cb0 --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/03-method.Rmd @@ -0,0 +1,23 @@ +# Methods + +We describe our methods in this chapter. + +Math can be added in body using usual syntax like this + +## math example + +$p$ is unknown but expected to be around 1/3. Standard error will be approximated + +$$ +SE = \sqrt{\frac{p(1-p)}{n}} \approx \sqrt{\frac{1/3 (1 - 1/3)} {300}} = 0.027 +$$ + +You can also use math in footnotes like this^[where we mention $p = \frac{a}{b}$]. + +We will approximate standard error to 0.027[^longnote] + +[^longnote]: $p$ is unknown but expected to be around 1/3. Standard error will be approximated + + $$ + SE = \sqrt{\frac{p(1-p)}{n}} \approx \sqrt{\frac{1/3 (1 - 1/3)} {300}} = 0.027 + $$ diff --git a/internal/inspect/detectors/testdata/bookdown-proj/04-application.Rmd b/internal/inspect/detectors/testdata/bookdown-proj/04-application.Rmd new file mode 100644 index 000000000..d5b076e10 --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/04-application.Rmd @@ -0,0 +1,7 @@ +# Applications + +Some _significant_ applications are demonstrated in this chapter. + +## Example one + +## Example two diff --git a/internal/inspect/detectors/testdata/bookdown-proj/05-summary.Rmd b/internal/inspect/detectors/testdata/bookdown-proj/05-summary.Rmd new file mode 100644 index 000000000..c1ac36fbb --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/05-summary.Rmd @@ -0,0 +1,3 @@ +# Final Words + +We have finished a nice book. diff --git a/internal/inspect/detectors/testdata/bookdown-proj/06-references.Rmd b/internal/inspect/detectors/testdata/bookdown-proj/06-references.Rmd new file mode 100644 index 000000000..4e5a594ed --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/06-references.Rmd @@ -0,0 +1,3 @@ +`r if (knitr:::is_html_output()) ' +# References {-} +'` diff --git a/internal/inspect/detectors/testdata/bookdown-proj/DESCRIPTION b/internal/inspect/detectors/testdata/bookdown-proj/DESCRIPTION new file mode 100644 index 000000000..5c3a64d20 --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/DESCRIPTION @@ -0,0 +1,6 @@ +Package: placeholder +Type: Book +Title: Does not matter. +Version: 0.0.1 +Imports: bookdown +Remotes: rstudio/bookdown diff --git a/internal/inspect/detectors/testdata/bookdown-proj/LICENSE b/internal/inspect/detectors/testdata/bookdown-proj/LICENSE new file mode 100644 index 000000000..2c4afabdb --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/LICENSE @@ -0,0 +1,117 @@ +CC0 1.0 Universal + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator and +subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for the +purpose of contributing to a commons of creative, cultural and scientific +works ("Commons") that the public can reliably and without fear of later +claims of infringement build upon, modify, incorporate in other works, reuse +and redistribute as freely as possible in any form whatsoever and for any +purposes, including without limitation commercial purposes. These owners may +contribute to the Commons to promote the ideal of a free culture and the +further production of creative, cultural and scientific works, or to gain +reputation or greater distribution for their Work in part through the use and +efforts of others. + +For these and/or other purposes and motivations, and without any expectation +of additional consideration or compensation, the person associating CC0 with a +Work (the "Affirmer"), to the extent that he or she is an owner of Copyright +and Related Rights in the Work, voluntarily elects to apply CC0 to the Work +and publicly distribute the Work under its terms, with knowledge of his or her +Copyright and Related Rights in the Work and the meaning and intended legal +effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not limited +to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, communicate, + and translate a Work; + + ii. moral rights retained by the original author(s) and/or performer(s); + + iii. publicity and privacy rights pertaining to a person's image or likeness + depicted in a Work; + + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + + v. rights protecting the extraction, dissemination, use and reuse of data in + a Work; + + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation thereof, + including any amended or successor version of such directive); and + + vii. other similar, equivalent or corresponding rights throughout the world + based on applicable law or treaty, and any national implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention of, +applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and +unconditionally waives, abandons, and surrenders all of Affirmer's Copyright +and Related Rights and associated claims and causes of action, whether now +known or unknown (including existing as well as future claims and causes of +action), in the Work (i) in all territories worldwide, (ii) for the maximum +duration provided by applicable law or treaty (including future time +extensions), (iii) in any current or future medium and for any number of +copies, and (iv) for any purpose whatsoever, including without limitation +commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes +the Waiver for the benefit of each member of the public at large and to the +detriment of Affirmer's heirs and successors, fully intending that such Waiver +shall not be subject to revocation, rescission, cancellation, termination, or +any other legal or equitable action to disrupt the quiet enjoyment of the Work +by the public as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason be +judged legally invalid or ineffective under applicable law, then the Waiver +shall be preserved to the maximum extent permitted taking into account +Affirmer's express Statement of Purpose. In addition, to the extent the Waiver +is so judged Affirmer hereby grants to each affected person a royalty-free, +non transferable, non sublicensable, non exclusive, irrevocable and +unconditional license to exercise Affirmer's Copyright and Related Rights in +the Work (i) in all territories worldwide, (ii) for the maximum duration +provided by applicable law or treaty (including future time extensions), (iii) +in any current or future medium and for any number of copies, and (iv) for any +purpose whatsoever, including without limitation commercial, advertising or +promotional purposes (the "License"). The License shall be deemed effective as +of the date CC0 was applied by Affirmer to the Work. Should any part of the +License for any reason be judged legally invalid or ineffective under +applicable law, such partial invalidity or ineffectiveness shall not +invalidate the remainder of the License, and in such case Affirmer hereby +affirms that he or she will not (i) exercise any of his or her remaining +Copyright and Related Rights in the Work or (ii) assert any associated claims +and causes of action with respect to the Work, in either case contrary to +Affirmer's express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + + b. Affirmer offers the Work as-is and makes no representations or warranties + of any kind concerning the Work, express, implied, statutory or otherwise, + including without limitation warranties of title, merchantability, fitness + for a particular purpose, non infringement, or the absence of latent or + other defects, accuracy, or the present or absence of errors, whether or not + discoverable, all to the greatest extent permissible under applicable law. + + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without limitation + any person's Copyright and Related Rights in the Work. Further, Affirmer + disclaims responsibility for obtaining any necessary consents, permissions + or other rights required for any use of the Work. + + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to this + CC0 or use of the Work. + +For more information, please see + + diff --git a/internal/inspect/detectors/testdata/bookdown-proj/README.md b/internal/inspect/detectors/testdata/bookdown-proj/README.md new file mode 100644 index 000000000..4408a4a45 --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/README.md @@ -0,0 +1,5 @@ +[![Build Status](https://travis-ci.com/rstudio/bookdown-demo.svg?branch=master)](https://travis-ci.com/rstudio/bookdown-demo) + +This is a minimal example of a book based on R Markdown and **bookdown** (https://github.com/rstudio/bookdown). Please see the page "[Get Started](https://bookdown.org/yihui/bookdown/get-started.html)" at https://bookdown.org/yihui/bookdown/ for how to compile this example into HTML. You may generate a copy of the book in `bookdown::pdf_book` format by calling `bookdown::render_book('index.Rmd', 'bookdown::pdf_book')`. More detailed instructions are available here https://bookdown.org/yihui/bookdown/build-the-book.html. + +You can find the preview of this example at https://bookdown.org/yihui/bookdown-demo/. diff --git a/internal/inspect/detectors/testdata/bookdown-proj/_bookdown.yml b/internal/inspect/detectors/testdata/bookdown-proj/_bookdown.yml new file mode 100644 index 000000000..6586f1a2b --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/_bookdown.yml @@ -0,0 +1,5 @@ +book_filename: "bookdown-demo" +language: + ui: + chapter_name: "Chapter " +delete_merged_file: true diff --git a/internal/inspect/detectors/testdata/bookdown-proj/_build.sh b/internal/inspect/detectors/testdata/bookdown-proj/_build.sh new file mode 100644 index 000000000..349b1f904 --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/_build.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +set -ev + +Rscript -e "bookdown::render_book('index.Rmd', 'bookdown::gitbook')" +Rscript -e "bookdown::render_book('index.Rmd', 'bookdown::pdf_book')" +Rscript -e "bookdown::render_book('index.Rmd', 'bookdown::epub_book')" + diff --git a/internal/inspect/detectors/testdata/bookdown-proj/_deploy.sh b/internal/inspect/detectors/testdata/bookdown-proj/_deploy.sh new file mode 100755 index 000000000..ee544e05c --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/_deploy.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +set -e + +[ -z "${GITHUB_PAT}" ] && exit 0 +[ "${TRAVIS_BRANCH}" != "master" ] && exit 0 + +git config --global user.email "xie@yihui.name" +git config --global user.name "Yihui Xie" + +git clone -b gh-pages https://${GITHUB_PAT}@github.com/${TRAVIS_REPO_SLUG}.git book-output +cd book-output +cp -r ../_book/* ./ +git add --all * +git commit -m"Update the book" || true +git push -q origin gh-pages diff --git a/internal/inspect/detectors/testdata/bookdown-proj/_output.yml b/internal/inspect/detectors/testdata/bookdown-proj/_output.yml new file mode 100644 index 000000000..90f6b2051 --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/_output.yml @@ -0,0 +1,18 @@ +bookdown::gitbook: + css: style.css + config: + toc: + before: | +
  • A Minimal Book Example
  • + after: | +
  • Published with bookdown
  • + edit: https://github.com/rstudio/bookdown-demo/edit/master/%s + download: ["pdf", "epub"] +bookdown::pdf_book: + includes: + in_header: preamble.tex + latex_engine: xelatex + citation_package: natbib + keep_tex: yes +bookdown::epub_book: default +bookdown::bs4_book: default diff --git a/internal/inspect/detectors/testdata/bookdown-proj/_publish.R b/internal/inspect/detectors/testdata/bookdown-proj/_publish.R new file mode 100644 index 000000000..0bd933f07 --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/_publish.R @@ -0,0 +1,41 @@ +# publish the book with different HTML styles; you should not need this script + +unlink('_book', recursive = TRUE) + +x = readLines('index.Rmd') +i = 1 +s = paste0('title: "A Minimal Book Example (', c('Bootstrap', 'Tufte'), ' Style)"') +for (fmt in c('html_book', 'tufte_html_book')) { + unlink('_book', recursive = TRUE) + file.copy('index.Rmd', '_index.Rmd') + file.copy('_output.yml', '_output.yml2') + writeLines( + gsub('^title: ".*"', s[i], gsub('gitbook', fmt, x)), 'index.Rmd' + ) + cat( + 'bookdown::', fmt, ':\n', ' css: [style.css, toc.css]\n', sep = '', file = '_output.yml', + append = TRUE + ) + cmd = sprintf("bookdown::render_book('index.Rmd', 'bookdown::%s', quiet = TRUE)", fmt) + res = xfun::Rscript(c('-e', shQuote(cmd))) + file.rename('_index.Rmd', 'index.Rmd') + file.rename('_output.yml2', '_output.yml') + if (res != 0) stop('Failed to compile the book to ', fmt) + i = i + 1 + bookdown::publish_book(paste0('bookdown-demo', i)) +} +unlink('_book', recursive = TRUE) + +# default formats +formats = c( + 'bookdown::pdf_book', 'bookdown::epub_book', 'bookdown::gitbook' +) + +# render the book to all formats unless they are specified via command-line args +for (fmt in formats) { + cmd = sprintf("bookdown::render_book('index.Rmd', '%s', quiet = TRUE)", fmt) + res = xfun::Rscript(c('-e', shQuote(cmd))) + if (res != 0) stop('Failed to compile the book to ', fmt) +} + +bookdown::publish_book('bookdown-demo') diff --git a/internal/inspect/detectors/testdata/bookdown-proj/book.bib b/internal/inspect/detectors/testdata/bookdown-proj/book.bib new file mode 100644 index 000000000..f52f3d22a --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/book.bib @@ -0,0 +1,10 @@ +@Book{xie2015, + title = {Dynamic Documents with {R} and knitr}, + author = {Yihui Xie}, + publisher = {Chapman and Hall/CRC}, + address = {Boca Raton, Florida}, + year = {2015}, + edition = {2nd}, + note = {ISBN 978-1498716963}, + url = {http://yihui.name/knitr/}, +} diff --git a/internal/inspect/detectors/testdata/bookdown-proj/bookdown-demo.Rproj b/internal/inspect/detectors/testdata/bookdown-proj/bookdown-demo.Rproj new file mode 100644 index 000000000..e4c1c67d2 --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/bookdown-demo.Rproj @@ -0,0 +1,18 @@ +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: knitr +LaTeX: pdfLaTeX + +AutoAppendNewline: Yes +StripTrailingWhitespace: Yes + +BuildType: Website diff --git a/internal/inspect/detectors/testdata/bookdown-proj/index.Rmd b/internal/inspect/detectors/testdata/bookdown-proj/index.Rmd new file mode 100644 index 000000000..596547f25 --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/index.Rmd @@ -0,0 +1,36 @@ +--- +title: "A Minimal Book Example" +author: "Yihui Xie" +date: "`r Sys.Date()`" +site: bookdown::bookdown_site +output: bookdown::gitbook +documentclass: book +bibliography: [book.bib, packages.bib] +biblio-style: apalike +link-citations: yes +github-repo: rstudio/bookdown-demo +description: "This is a minimal example of using the bookdown package to write a book. The output format for this example is bookdown::gitbook." +--- + +# Prerequisites + +This is a _sample_ book written in **Markdown**. You can use anything that Pandoc's Markdown supports, e.g., a math equation $a^2 + b^2 = c^2$. + +The **bookdown** package can be installed from CRAN or Github: + +```{r eval=FALSE} +install.packages("bookdown") +# or the development version +# devtools::install_github("rstudio/bookdown") +``` + +Remember each Rmd file contains one and only one chapter, and a chapter is defined by the first-level heading `#`. + +To compile this example to PDF, you need XeLaTeX. You are recommended to install TinyTeX (which includes XeLaTeX): . + +```{r include=FALSE} +# automatically create a bib database for R packages +knitr::write_bib(c( + .packages(), 'bookdown', 'knitr', 'rmarkdown' +), 'packages.bib') +``` diff --git a/internal/inspect/detectors/testdata/bookdown-proj/now.json b/internal/inspect/detectors/testdata/bookdown-proj/now.json new file mode 100644 index 000000000..572b9a8ea --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/now.json @@ -0,0 +1,4 @@ +{ + "type": "static", + "public": true +} diff --git a/internal/inspect/detectors/testdata/bookdown-proj/preamble.tex b/internal/inspect/detectors/testdata/bookdown-proj/preamble.tex new file mode 100644 index 000000000..8a88e02a2 --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/preamble.tex @@ -0,0 +1,8 @@ +\usepackage{booktabs} +\usepackage{amsthm} +\makeatletter +\def\thm@space@setup{% + \thm@preskip=8pt plus 2pt minus 4pt + \thm@postskip=\thm@preskip +} +\makeatother diff --git a/internal/inspect/detectors/testdata/bookdown-proj/renv.lock b/internal/inspect/detectors/testdata/bookdown-proj/renv.lock new file mode 100644 index 000000000..411e9745b --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/renv.lock @@ -0,0 +1,422 @@ +{ + "R": { + "Version": "4.3.1", + "Repositories": [ + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "R6": { + "Package": "R6", + "Version": "2.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "470851b6d5d0ac559e9d01bb352b4021" + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "543776ae6848fde2f48ff3816d0628bc" + }, + "bookdown": { + "Package": "bookdown", + "Version": "0.41.1", + "Source": "GitHub", + "RemoteType": "github", + "RemoteHost": "api.github.com", + "RemoteUsername": "rstudio", + "RemoteRepo": "bookdown", + "RemoteRef": "main", + "RemoteSha": "bd78cf85f05f1fdadd7818206f0105c0ea792160", + "Requirements": [ + "R", + "htmltools", + "jquerylib", + "knitr", + "rmarkdown", + "tinytex", + "xfun", + "yaml" + ], + "Hash": "f81d4eef60a474c3cdd50ba657b39a82" + }, + "bslib": { + "Package": "bslib", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "base64enc", + "cachem", + "grDevices", + "htmltools", + "jquerylib", + "jsonlite", + "memoise", + "mime", + "rlang", + "sass" + ], + "Hash": "1b117970533deb6d4e992c1b34e9d905" + }, + "cachem": { + "Package": "cachem", + "Version": "1.0.8", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "fastmap", + "rlang" + ], + "Hash": "c35768291560ce302c0a6589f92e837d" + }, + "cli": { + "Package": "cli", + "Version": "3.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "89e6d8219950eac806ae0c489052048a" + }, + "digest": { + "Package": "digest", + "Version": "0.6.31", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "8b708f296afd9ae69f450f9640be8990" + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "rlang" + ], + "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077" + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.21", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "d59f3b464e8da1aef82dc04b588b8dfb" + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f7736a18de97dea803bde0a2daaafb27" + }, + "fontawesome": { + "Package": "fontawesome", + "Version": "0.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "htmltools", + "rlang" + ], + "Hash": "1e22b8cabbad1eae951a75e9f8b52378" + }, + "fs": { + "Package": "fs", + "Version": "1.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "94af08e0aa9675a16fadbb3aaaa90d2a" + }, + "glue": { + "Package": "glue", + "Version": "1.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "4f2596dfb05dac67b9dc558e5c6fba2e" + }, + "highr": { + "Package": "highr", + "Version": "0.11", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "xfun" + ], + "Hash": "d65ba49117ca223614f71b60d85b8ab7" + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.7", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "base64enc", + "digest", + "ellipsis", + "fastmap", + "grDevices", + "rlang", + "utils" + ], + "Hash": "2d7b3857980e0e0d0a1fd6f11928ab0f" + }, + "jquerylib": { + "Package": "jquerylib", + "Version": "0.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "htmltools" + ], + "Hash": "5aab57a3bd297eee1c1d862735972182" + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.8.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "methods" + ], + "Hash": "3ee4d9899e4db3e976fc82b98d24a31a" + }, + "knitr": { + "Package": "knitr", + "Version": "1.48", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "evaluate", + "highr", + "methods", + "tools", + "xfun", + "yaml" + ], + "Hash": "acf380f300c721da9fde7df115a5f86f" + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "rlang" + ], + "Hash": "001cecbeac1cff9301bdc3775ee46a86" + }, + "magrittr": { + "Package": "magrittr", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "7ce2733a9826b3aeb1775d56fd305472" + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "cachem", + "rlang" + ], + "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c" + }, + "mime": { + "Package": "mime", + "Version": "0.12", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "tools" + ], + "Hash": "18e9c28c1d3ca1560ce30658b22ce104" + }, + "rappdirs": { + "Package": "rappdirs", + "Version": "0.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "5e3c5dc0b071b21fa128676560dbe94d" + }, + "renv": { + "Package": "renv", + "Version": "1.0.7", + "Source": "Repository", + "Repository": "RSPM", + "Requirements": [ + "utils" + ], + "Hash": "397b7b2a265bc5a7a06852524dabae20" + }, + "rlang": { + "Package": "rlang", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "a85c767b55f0bf9b7ad16c6d7baee5bb" + }, + "rmarkdown": { + "Package": "rmarkdown", + "Version": "2.22", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "bslib", + "evaluate", + "fontawesome", + "htmltools", + "jquerylib", + "jsonlite", + "knitr", + "methods", + "stringr", + "tinytex", + "tools", + "utils", + "xfun", + "yaml" + ], + "Hash": "75a01be060d800ceb14e32c666cacac9" + }, + "sass": { + "Package": "sass", + "Version": "0.4.6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R6", + "fs", + "htmltools", + "rappdirs", + "rlang" + ], + "Hash": "cc3ec7dd33982ef56570229b62d6388e" + }, + "stringi": { + "Package": "stringi", + "Version": "1.7.12", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats", + "tools", + "utils" + ], + "Hash": "ca8bd84263c77310739d2cf64d84d7c9" + }, + "stringr": { + "Package": "stringr", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "magrittr", + "rlang", + "stringi", + "vctrs" + ], + "Hash": "671a4d384ae9d32fc47a14e98bfa3dc8" + }, + "tinytex": { + "Package": "tinytex", + "Version": "0.45", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "xfun" + ], + "Hash": "e4e357f28c2edff493936b6cb30c3d65" + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.6.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "rlang" + ], + "Hash": "d0ef2856b83dc33ea6e255caf6229ee2" + }, + "xfun": { + "Package": "xfun", + "Version": "0.49", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "grDevices", + "stats", + "tools" + ], + "Hash": "8687398773806cfff9401a2feca96298" + }, + "yaml": { + "Package": "yaml", + "Version": "2.3.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d0056cc5383fbc240ccd0cb584bf436" + } + } +} diff --git a/internal/inspect/detectors/testdata/bookdown-proj/renv/.gitignore b/internal/inspect/detectors/testdata/bookdown-proj/renv/.gitignore new file mode 100644 index 000000000..0ec0cbba2 --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/renv/.gitignore @@ -0,0 +1,7 @@ +library/ +local/ +cellar/ +lock/ +python/ +sandbox/ +staging/ diff --git a/internal/inspect/detectors/testdata/bookdown-proj/renv/activate.R b/internal/inspect/detectors/testdata/bookdown-proj/renv/activate.R new file mode 100644 index 000000000..d13f9932a --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/renv/activate.R @@ -0,0 +1,1220 @@ + +local({ + + # the requested version of renv + version <- "1.0.7" + attr(version, "sha") <- NULL + + # the project directory + project <- Sys.getenv("RENV_PROJECT") + if (!nzchar(project)) + project <- getwd() + + # use start-up diagnostics if enabled + diagnostics <- Sys.getenv("RENV_STARTUP_DIAGNOSTICS", unset = "FALSE") + if (diagnostics) { + start <- Sys.time() + profile <- tempfile("renv-startup-", fileext = ".Rprof") + utils::Rprof(profile) + on.exit({ + utils::Rprof(NULL) + elapsed <- signif(difftime(Sys.time(), start, units = "auto"), digits = 2L) + writeLines(sprintf("- renv took %s to run the autoloader.", format(elapsed))) + writeLines(sprintf("- Profile: %s", profile)) + print(utils::summaryRprof(profile)) + }, add = TRUE) + } + + # figure out whether the autoloader is enabled + enabled <- local({ + + # first, check config option + override <- getOption("renv.config.autoloader.enabled") + if (!is.null(override)) + return(override) + + # if we're being run in a context where R_LIBS is already set, + # don't load -- presumably we're being run as a sub-process and + # the parent process has already set up library paths for us + rcmd <- Sys.getenv("R_CMD", unset = NA) + rlibs <- Sys.getenv("R_LIBS", unset = NA) + if (!is.na(rlibs) && !is.na(rcmd)) + return(FALSE) + + # next, check environment variables + # TODO: prefer using the configuration one in the future + envvars <- c( + "RENV_CONFIG_AUTOLOADER_ENABLED", + "RENV_AUTOLOADER_ENABLED", + "RENV_ACTIVATE_PROJECT" + ) + + for (envvar in envvars) { + envval <- Sys.getenv(envvar, unset = NA) + if (!is.na(envval)) + return(tolower(envval) %in% c("true", "t", "1")) + } + + # enable by default + TRUE + + }) + + # bail if we're not enabled + if (!enabled) { + + # if we're not enabled, we might still need to manually load + # the user profile here + profile <- Sys.getenv("R_PROFILE_USER", unset = "~/.Rprofile") + if (file.exists(profile)) { + cfg <- Sys.getenv("RENV_CONFIG_USER_PROFILE", unset = "TRUE") + if (tolower(cfg) %in% c("true", "t", "1")) + sys.source(profile, envir = globalenv()) + } + + return(FALSE) + + } + + # avoid recursion + if (identical(getOption("renv.autoloader.running"), TRUE)) { + warning("ignoring recursive attempt to run renv autoloader") + return(invisible(TRUE)) + } + + # signal that we're loading renv during R startup + options(renv.autoloader.running = TRUE) + on.exit(options(renv.autoloader.running = NULL), add = TRUE) + + # signal that we've consented to use renv + options(renv.consent = TRUE) + + # load the 'utils' package eagerly -- this ensures that renv shims, which + # mask 'utils' packages, will come first on the search path + library(utils, lib.loc = .Library) + + # unload renv if it's already been loaded + if ("renv" %in% loadedNamespaces()) + unloadNamespace("renv") + + # load bootstrap tools + `%||%` <- function(x, y) { + if (is.null(x)) y else x + } + + catf <- function(fmt, ..., appendLF = TRUE) { + + quiet <- getOption("renv.bootstrap.quiet", default = FALSE) + if (quiet) + return(invisible()) + + msg <- sprintf(fmt, ...) + cat(msg, file = stdout(), sep = if (appendLF) "\n" else "") + + invisible(msg) + + } + + header <- function(label, + ..., + prefix = "#", + suffix = "-", + n = min(getOption("width"), 78)) + { + label <- sprintf(label, ...) + n <- max(n - nchar(label) - nchar(prefix) - 2L, 8L) + if (n <= 0) + return(paste(prefix, label)) + + tail <- paste(rep.int(suffix, n), collapse = "") + paste0(prefix, " ", label, " ", tail) + + } + + heredoc <- function(text, leave = 0) { + + # remove leading, trailing whitespace + trimmed <- gsub("^\\s*\\n|\\n\\s*$", "", text) + + # split into lines + lines <- strsplit(trimmed, "\n", fixed = TRUE)[[1L]] + + # compute common indent + indent <- regexpr("[^[:space:]]", lines) + common <- min(setdiff(indent, -1L)) - leave + paste(substring(lines, common), collapse = "\n") + + } + + startswith <- function(string, prefix) { + substring(string, 1, nchar(prefix)) == prefix + } + + bootstrap <- function(version, library) { + + friendly <- renv_bootstrap_version_friendly(version) + section <- header(sprintf("Bootstrapping renv %s", friendly)) + catf(section) + + # attempt to download renv + catf("- Downloading renv ... ", appendLF = FALSE) + withCallingHandlers( + tarball <- renv_bootstrap_download(version), + error = function(err) { + catf("FAILED") + stop("failed to download:\n", conditionMessage(err)) + } + ) + catf("OK") + on.exit(unlink(tarball), add = TRUE) + + # now attempt to install + catf("- Installing renv ... ", appendLF = FALSE) + withCallingHandlers( + status <- renv_bootstrap_install(version, tarball, library), + error = function(err) { + catf("FAILED") + stop("failed to install:\n", conditionMessage(err)) + } + ) + catf("OK") + + # add empty line to break up bootstrapping from normal output + catf("") + + return(invisible()) + } + + renv_bootstrap_tests_running <- function() { + getOption("renv.tests.running", default = FALSE) + } + + renv_bootstrap_repos <- function() { + + # get CRAN repository + cran <- getOption("renv.repos.cran", "https://cloud.r-project.org") + + # check for repos override + repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) + if (!is.na(repos)) { + + # check for RSPM; if set, use a fallback repository for renv + rspm <- Sys.getenv("RSPM", unset = NA) + if (identical(rspm, repos)) + repos <- c(RSPM = rspm, CRAN = cran) + + return(repos) + + } + + # check for lockfile repositories + repos <- tryCatch(renv_bootstrap_repos_lockfile(), error = identity) + if (!inherits(repos, "error") && length(repos)) + return(repos) + + # retrieve current repos + repos <- getOption("repos") + + # ensure @CRAN@ entries are resolved + repos[repos == "@CRAN@"] <- cran + + # add in renv.bootstrap.repos if set + default <- c(FALLBACK = "https://cloud.r-project.org") + extra <- getOption("renv.bootstrap.repos", default = default) + repos <- c(repos, extra) + + # remove duplicates that might've snuck in + dupes <- duplicated(repos) | duplicated(names(repos)) + repos[!dupes] + + } + + renv_bootstrap_repos_lockfile <- function() { + + lockpath <- Sys.getenv("RENV_PATHS_LOCKFILE", unset = "renv.lock") + if (!file.exists(lockpath)) + return(NULL) + + lockfile <- tryCatch(renv_json_read(lockpath), error = identity) + if (inherits(lockfile, "error")) { + warning(lockfile) + return(NULL) + } + + repos <- lockfile$R$Repositories + if (length(repos) == 0) + return(NULL) + + keys <- vapply(repos, `[[`, "Name", FUN.VALUE = character(1)) + vals <- vapply(repos, `[[`, "URL", FUN.VALUE = character(1)) + names(vals) <- keys + + return(vals) + + } + + renv_bootstrap_download <- function(version) { + + sha <- attr(version, "sha", exact = TRUE) + + methods <- if (!is.null(sha)) { + + # attempting to bootstrap a development version of renv + c( + function() renv_bootstrap_download_tarball(sha), + function() renv_bootstrap_download_github(sha) + ) + + } else { + + # attempting to bootstrap a release version of renv + c( + function() renv_bootstrap_download_tarball(version), + function() renv_bootstrap_download_cran_latest(version), + function() renv_bootstrap_download_cran_archive(version) + ) + + } + + for (method in methods) { + path <- tryCatch(method(), error = identity) + if (is.character(path) && file.exists(path)) + return(path) + } + + stop("All download methods failed") + + } + + renv_bootstrap_download_impl <- function(url, destfile) { + + mode <- "wb" + + # https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17715 + fixup <- + Sys.info()[["sysname"]] == "Windows" && + substring(url, 1L, 5L) == "file:" + + if (fixup) + mode <- "w+b" + + args <- list( + url = url, + destfile = destfile, + mode = mode, + quiet = TRUE + ) + + if ("headers" %in% names(formals(utils::download.file))) + args$headers <- renv_bootstrap_download_custom_headers(url) + + do.call(utils::download.file, args) + + } + + renv_bootstrap_download_custom_headers <- function(url) { + + headers <- getOption("renv.download.headers") + if (is.null(headers)) + return(character()) + + if (!is.function(headers)) + stopf("'renv.download.headers' is not a function") + + headers <- headers(url) + if (length(headers) == 0L) + return(character()) + + if (is.list(headers)) + headers <- unlist(headers, recursive = FALSE, use.names = TRUE) + + ok <- + is.character(headers) && + is.character(names(headers)) && + all(nzchar(names(headers))) + + if (!ok) + stop("invocation of 'renv.download.headers' did not return a named character vector") + + headers + + } + + renv_bootstrap_download_cran_latest <- function(version) { + + spec <- renv_bootstrap_download_cran_latest_find(version) + type <- spec$type + repos <- spec$repos + + baseurl <- utils::contrib.url(repos = repos, type = type) + ext <- if (identical(type, "source")) + ".tar.gz" + else if (Sys.info()[["sysname"]] == "Windows") + ".zip" + else + ".tgz" + name <- sprintf("renv_%s%s", version, ext) + url <- paste(baseurl, name, sep = "/") + + destfile <- file.path(tempdir(), name) + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (inherits(status, "condition")) + return(FALSE) + + # report success and return + destfile + + } + + renv_bootstrap_download_cran_latest_find <- function(version) { + + # check whether binaries are supported on this system + binary <- + getOption("renv.bootstrap.binary", default = TRUE) && + !identical(.Platform$pkgType, "source") && + !identical(getOption("pkgType"), "source") && + Sys.info()[["sysname"]] %in% c("Darwin", "Windows") + + types <- c(if (binary) "binary", "source") + + # iterate over types + repositories + for (type in types) { + for (repos in renv_bootstrap_repos()) { + + # retrieve package database + db <- tryCatch( + as.data.frame( + utils::available.packages(type = type, repos = repos), + stringsAsFactors = FALSE + ), + error = identity + ) + + if (inherits(db, "error")) + next + + # check for compatible entry + entry <- db[db$Package %in% "renv" & db$Version %in% version, ] + if (nrow(entry) == 0) + next + + # found it; return spec to caller + spec <- list(entry = entry, type = type, repos = repos) + return(spec) + + } + } + + # if we got here, we failed to find renv + fmt <- "renv %s is not available from your declared package repositories" + stop(sprintf(fmt, version)) + + } + + renv_bootstrap_download_cran_archive <- function(version) { + + name <- sprintf("renv_%s.tar.gz", version) + repos <- renv_bootstrap_repos() + urls <- file.path(repos, "src/contrib/Archive/renv", name) + destfile <- file.path(tempdir(), name) + + for (url in urls) { + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (identical(status, 0L)) + return(destfile) + + } + + return(FALSE) + + } + + renv_bootstrap_download_tarball <- function(version) { + + # if the user has provided the path to a tarball via + # an environment variable, then use it + tarball <- Sys.getenv("RENV_BOOTSTRAP_TARBALL", unset = NA) + if (is.na(tarball)) + return() + + # allow directories + if (dir.exists(tarball)) { + name <- sprintf("renv_%s.tar.gz", version) + tarball <- file.path(tarball, name) + } + + # bail if it doesn't exist + if (!file.exists(tarball)) { + + # let the user know we weren't able to honour their request + fmt <- "- RENV_BOOTSTRAP_TARBALL is set (%s) but does not exist." + msg <- sprintf(fmt, tarball) + warning(msg) + + # bail + return() + + } + + catf("- Using local tarball '%s'.", tarball) + tarball + + } + + renv_bootstrap_download_github <- function(version) { + + enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE") + if (!identical(enabled, "TRUE")) + return(FALSE) + + # prepare download options + pat <- Sys.getenv("GITHUB_PAT") + if (nzchar(Sys.which("curl")) && nzchar(pat)) { + fmt <- "--location --fail --header \"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "curl", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } else if (nzchar(Sys.which("wget")) && nzchar(pat)) { + fmt <- "--header=\"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "wget", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } + + url <- file.path("https://api.github.com/repos/rstudio/renv/tarball", version) + name <- sprintf("renv_%s.tar.gz", version) + destfile <- file.path(tempdir(), name) + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (!identical(status, 0L)) + return(FALSE) + + renv_bootstrap_download_augment(destfile) + + return(destfile) + + } + + # Add Sha to DESCRIPTION. This is stop gap until #890, after which we + # can use renv::install() to fully capture metadata. + renv_bootstrap_download_augment <- function(destfile) { + sha <- renv_bootstrap_git_extract_sha1_tar(destfile) + if (is.null(sha)) { + return() + } + + # Untar + tempdir <- tempfile("renv-github-") + on.exit(unlink(tempdir, recursive = TRUE), add = TRUE) + untar(destfile, exdir = tempdir) + pkgdir <- dir(tempdir, full.names = TRUE)[[1]] + + # Modify description + desc_path <- file.path(pkgdir, "DESCRIPTION") + desc_lines <- readLines(desc_path) + remotes_fields <- c( + "RemoteType: github", + "RemoteHost: api.github.com", + "RemoteRepo: renv", + "RemoteUsername: rstudio", + "RemotePkgRef: rstudio/renv", + paste("RemoteRef: ", sha), + paste("RemoteSha: ", sha) + ) + writeLines(c(desc_lines[desc_lines != ""], remotes_fields), con = desc_path) + + # Re-tar + local({ + old <- setwd(tempdir) + on.exit(setwd(old), add = TRUE) + + tar(destfile, compression = "gzip") + }) + invisible() + } + + # Extract the commit hash from a git archive. Git archives include the SHA1 + # hash as the comment field of the tarball pax extended header + # (see https://www.kernel.org/pub/software/scm/git/docs/git-archive.html) + # For GitHub archives this should be the first header after the default one + # (512 byte) header. + renv_bootstrap_git_extract_sha1_tar <- function(bundle) { + + # open the bundle for reading + # We use gzcon for everything because (from ?gzcon) + # > Reading from a connection which does not supply a 'gzip' magic + # > header is equivalent to reading from the original connection + conn <- gzcon(file(bundle, open = "rb", raw = TRUE)) + on.exit(close(conn)) + + # The default pax header is 512 bytes long and the first pax extended header + # with the comment should be 51 bytes long + # `52 comment=` (11 chars) + 40 byte SHA1 hash + len <- 0x200 + 0x33 + res <- rawToChar(readBin(conn, "raw", n = len)[0x201:len]) + + if (grepl("^52 comment=", res)) { + sub("52 comment=", "", res) + } else { + NULL + } + } + + renv_bootstrap_install <- function(version, tarball, library) { + + # attempt to install it into project library + dir.create(library, showWarnings = FALSE, recursive = TRUE) + output <- renv_bootstrap_install_impl(library, tarball) + + # check for successful install + status <- attr(output, "status") + if (is.null(status) || identical(status, 0L)) + return(status) + + # an error occurred; report it + header <- "installation of renv failed" + lines <- paste(rep.int("=", nchar(header)), collapse = "") + text <- paste(c(header, lines, output), collapse = "\n") + stop(text) + + } + + renv_bootstrap_install_impl <- function(library, tarball) { + + # invoke using system2 so we can capture and report output + bin <- R.home("bin") + exe <- if (Sys.info()[["sysname"]] == "Windows") "R.exe" else "R" + R <- file.path(bin, exe) + + args <- c( + "--vanilla", "CMD", "INSTALL", "--no-multiarch", + "-l", shQuote(path.expand(library)), + shQuote(path.expand(tarball)) + ) + + system2(R, args, stdout = TRUE, stderr = TRUE) + + } + + renv_bootstrap_platform_prefix <- function() { + + # construct version prefix + version <- paste(R.version$major, R.version$minor, sep = ".") + prefix <- paste("R", numeric_version(version)[1, 1:2], sep = "-") + + # include SVN revision for development versions of R + # (to avoid sharing platform-specific artefacts with released versions of R) + devel <- + identical(R.version[["status"]], "Under development (unstable)") || + identical(R.version[["nickname"]], "Unsuffered Consequences") + + if (devel) + prefix <- paste(prefix, R.version[["svn rev"]], sep = "-r") + + # build list of path components + components <- c(prefix, R.version$platform) + + # include prefix if provided by user + prefix <- renv_bootstrap_platform_prefix_impl() + if (!is.na(prefix) && nzchar(prefix)) + components <- c(prefix, components) + + # build prefix + paste(components, collapse = "/") + + } + + renv_bootstrap_platform_prefix_impl <- function() { + + # if an explicit prefix has been supplied, use it + prefix <- Sys.getenv("RENV_PATHS_PREFIX", unset = NA) + if (!is.na(prefix)) + return(prefix) + + # if the user has requested an automatic prefix, generate it + auto <- Sys.getenv("RENV_PATHS_PREFIX_AUTO", unset = NA) + if (is.na(auto) && getRversion() >= "4.4.0") + auto <- "TRUE" + + if (auto %in% c("TRUE", "True", "true", "1")) + return(renv_bootstrap_platform_prefix_auto()) + + # empty string on failure + "" + + } + + renv_bootstrap_platform_prefix_auto <- function() { + + prefix <- tryCatch(renv_bootstrap_platform_os(), error = identity) + if (inherits(prefix, "error") || prefix %in% "unknown") { + + msg <- paste( + "failed to infer current operating system", + "please file a bug report at https://github.com/rstudio/renv/issues", + sep = "; " + ) + + warning(msg) + + } + + prefix + + } + + renv_bootstrap_platform_os <- function() { + + sysinfo <- Sys.info() + sysname <- sysinfo[["sysname"]] + + # handle Windows + macOS up front + if (sysname == "Windows") + return("windows") + else if (sysname == "Darwin") + return("macos") + + # check for os-release files + for (file in c("/etc/os-release", "/usr/lib/os-release")) + if (file.exists(file)) + return(renv_bootstrap_platform_os_via_os_release(file, sysinfo)) + + # check for redhat-release files + if (file.exists("/etc/redhat-release")) + return(renv_bootstrap_platform_os_via_redhat_release()) + + "unknown" + + } + + renv_bootstrap_platform_os_via_os_release <- function(file, sysinfo) { + + # read /etc/os-release + release <- utils::read.table( + file = file, + sep = "=", + quote = c("\"", "'"), + col.names = c("Key", "Value"), + comment.char = "#", + stringsAsFactors = FALSE + ) + + vars <- as.list(release$Value) + names(vars) <- release$Key + + # get os name + os <- tolower(sysinfo[["sysname"]]) + + # read id + id <- "unknown" + for (field in c("ID", "ID_LIKE")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + id <- vars[[field]] + break + } + } + + # read version + version <- "unknown" + for (field in c("UBUNTU_CODENAME", "VERSION_CODENAME", "VERSION_ID", "BUILD_ID")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + version <- vars[[field]] + break + } + } + + # join together + paste(c(os, id, version), collapse = "-") + + } + + renv_bootstrap_platform_os_via_redhat_release <- function() { + + # read /etc/redhat-release + contents <- readLines("/etc/redhat-release", warn = FALSE) + + # infer id + id <- if (grepl("centos", contents, ignore.case = TRUE)) + "centos" + else if (grepl("redhat", contents, ignore.case = TRUE)) + "redhat" + else + "unknown" + + # try to find a version component (very hacky) + version <- "unknown" + + parts <- strsplit(contents, "[[:space:]]")[[1L]] + for (part in parts) { + + nv <- tryCatch(numeric_version(part), error = identity) + if (inherits(nv, "error")) + next + + version <- nv[1, 1] + break + + } + + paste(c("linux", id, version), collapse = "-") + + } + + renv_bootstrap_library_root_name <- function(project) { + + # use project name as-is if requested + asis <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT_ASIS", unset = "FALSE") + if (asis) + return(basename(project)) + + # otherwise, disambiguate based on project's path + id <- substring(renv_bootstrap_hash_text(project), 1L, 8L) + paste(basename(project), id, sep = "-") + + } + + renv_bootstrap_library_root <- function(project) { + + prefix <- renv_bootstrap_profile_prefix() + + path <- Sys.getenv("RENV_PATHS_LIBRARY", unset = NA) + if (!is.na(path)) + return(paste(c(path, prefix), collapse = "/")) + + path <- renv_bootstrap_library_root_impl(project) + if (!is.null(path)) { + name <- renv_bootstrap_library_root_name(project) + return(paste(c(path, prefix, name), collapse = "/")) + } + + renv_bootstrap_paths_renv("library", project = project) + + } + + renv_bootstrap_library_root_impl <- function(project) { + + root <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA) + if (!is.na(root)) + return(root) + + type <- renv_bootstrap_project_type(project) + if (identical(type, "package")) { + userdir <- renv_bootstrap_user_dir() + return(file.path(userdir, "library")) + } + + } + + renv_bootstrap_validate_version <- function(version, description = NULL) { + + # resolve description file + # + # avoid passing lib.loc to `packageDescription()` below, since R will + # use the loaded version of the package by default anyhow. note that + # this function should only be called after 'renv' is loaded + # https://github.com/rstudio/renv/issues/1625 + description <- description %||% packageDescription("renv") + + # check whether requested version 'version' matches loaded version of renv + sha <- attr(version, "sha", exact = TRUE) + valid <- if (!is.null(sha)) + renv_bootstrap_validate_version_dev(sha, description) + else + renv_bootstrap_validate_version_release(version, description) + + if (valid) + return(TRUE) + + # the loaded version of renv doesn't match the requested version; + # give the user instructions on how to proceed + dev <- identical(description[["RemoteType"]], "github") + remote <- if (dev) + paste("rstudio/renv", description[["RemoteSha"]], sep = "@") + else + paste("renv", description[["Version"]], sep = "@") + + # display both loaded version + sha if available + friendly <- renv_bootstrap_version_friendly( + version = description[["Version"]], + sha = if (dev) description[["RemoteSha"]] + ) + + fmt <- heredoc(" + renv %1$s was loaded from project library, but this project is configured to use renv %2$s. + - Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile. + - Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library. + ") + catf(fmt, friendly, renv_bootstrap_version_friendly(version), remote) + + FALSE + + } + + renv_bootstrap_validate_version_dev <- function(version, description) { + expected <- description[["RemoteSha"]] + is.character(expected) && startswith(expected, version) + } + + renv_bootstrap_validate_version_release <- function(version, description) { + expected <- description[["Version"]] + is.character(expected) && identical(expected, version) + } + + renv_bootstrap_hash_text <- function(text) { + + hashfile <- tempfile("renv-hash-") + on.exit(unlink(hashfile), add = TRUE) + + writeLines(text, con = hashfile) + tools::md5sum(hashfile) + + } + + renv_bootstrap_load <- function(project, libpath, version) { + + # try to load renv from the project library + if (!requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) + return(FALSE) + + # warn if the version of renv loaded does not match + renv_bootstrap_validate_version(version) + + # execute renv load hooks, if any + hooks <- getHook("renv::autoload") + for (hook in hooks) + if (is.function(hook)) + tryCatch(hook(), error = warnify) + + # load the project + renv::load(project) + + TRUE + + } + + renv_bootstrap_profile_load <- function(project) { + + # if RENV_PROFILE is already set, just use that + profile <- Sys.getenv("RENV_PROFILE", unset = NA) + if (!is.na(profile) && nzchar(profile)) + return(profile) + + # check for a profile file (nothing to do if it doesn't exist) + path <- renv_bootstrap_paths_renv("profile", profile = FALSE, project = project) + if (!file.exists(path)) + return(NULL) + + # read the profile, and set it if it exists + contents <- readLines(path, warn = FALSE) + if (length(contents) == 0L) + return(NULL) + + # set RENV_PROFILE + profile <- contents[[1L]] + if (!profile %in% c("", "default")) + Sys.setenv(RENV_PROFILE = profile) + + profile + + } + + renv_bootstrap_profile_prefix <- function() { + profile <- renv_bootstrap_profile_get() + if (!is.null(profile)) + return(file.path("profiles", profile, "renv")) + } + + renv_bootstrap_profile_get <- function() { + profile <- Sys.getenv("RENV_PROFILE", unset = "") + renv_bootstrap_profile_normalize(profile) + } + + renv_bootstrap_profile_set <- function(profile) { + profile <- renv_bootstrap_profile_normalize(profile) + if (is.null(profile)) + Sys.unsetenv("RENV_PROFILE") + else + Sys.setenv(RENV_PROFILE = profile) + } + + renv_bootstrap_profile_normalize <- function(profile) { + + if (is.null(profile) || profile %in% c("", "default")) + return(NULL) + + profile + + } + + renv_bootstrap_path_absolute <- function(path) { + + substr(path, 1L, 1L) %in% c("~", "/", "\\") || ( + substr(path, 1L, 1L) %in% c(letters, LETTERS) && + substr(path, 2L, 3L) %in% c(":/", ":\\") + ) + + } + + renv_bootstrap_paths_renv <- function(..., profile = TRUE, project = NULL) { + renv <- Sys.getenv("RENV_PATHS_RENV", unset = "renv") + root <- if (renv_bootstrap_path_absolute(renv)) NULL else project + prefix <- if (profile) renv_bootstrap_profile_prefix() + components <- c(root, renv, prefix, ...) + paste(components, collapse = "/") + } + + renv_bootstrap_project_type <- function(path) { + + descpath <- file.path(path, "DESCRIPTION") + if (!file.exists(descpath)) + return("unknown") + + desc <- tryCatch( + read.dcf(descpath, all = TRUE), + error = identity + ) + + if (inherits(desc, "error")) + return("unknown") + + type <- desc$Type + if (!is.null(type)) + return(tolower(type)) + + package <- desc$Package + if (!is.null(package)) + return("package") + + "unknown" + + } + + renv_bootstrap_user_dir <- function() { + dir <- renv_bootstrap_user_dir_impl() + path.expand(chartr("\\", "/", dir)) + } + + renv_bootstrap_user_dir_impl <- function() { + + # use local override if set + override <- getOption("renv.userdir.override") + if (!is.null(override)) + return(override) + + # use R_user_dir if available + tools <- asNamespace("tools") + if (is.function(tools$R_user_dir)) + return(tools$R_user_dir("renv", "cache")) + + # try using our own backfill for older versions of R + envvars <- c("R_USER_CACHE_DIR", "XDG_CACHE_HOME") + for (envvar in envvars) { + root <- Sys.getenv(envvar, unset = NA) + if (!is.na(root)) + return(file.path(root, "R/renv")) + } + + # use platform-specific default fallbacks + if (Sys.info()[["sysname"]] == "Windows") + file.path(Sys.getenv("LOCALAPPDATA"), "R/cache/R/renv") + else if (Sys.info()[["sysname"]] == "Darwin") + "~/Library/Caches/org.R-project.R/R/renv" + else + "~/.cache/R/renv" + + } + + renv_bootstrap_version_friendly <- function(version, shafmt = NULL, sha = NULL) { + sha <- sha %||% attr(version, "sha", exact = TRUE) + parts <- c(version, sprintf(shafmt %||% " [sha: %s]", substring(sha, 1L, 7L))) + paste(parts, collapse = "") + } + + renv_bootstrap_exec <- function(project, libpath, version) { + if (!renv_bootstrap_load(project, libpath, version)) + renv_bootstrap_run(version, libpath) + } + + renv_bootstrap_run <- function(version, libpath) { + + # perform bootstrap + bootstrap(version, libpath) + + # exit early if we're just testing bootstrap + if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA))) + return(TRUE) + + # try again to load + if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { + return(renv::load(project = getwd())) + } + + # failed to download or load renv; warn the user + msg <- c( + "Failed to find an renv installation: the project will not be loaded.", + "Use `renv::activate()` to re-initialize the project." + ) + + warning(paste(msg, collapse = "\n"), call. = FALSE) + + } + + renv_json_read <- function(file = NULL, text = NULL) { + + jlerr <- NULL + + # if jsonlite is loaded, use that instead + if ("jsonlite" %in% loadedNamespaces()) { + + json <- tryCatch(renv_json_read_jsonlite(file, text), error = identity) + if (!inherits(json, "error")) + return(json) + + jlerr <- json + + } + + # otherwise, fall back to the default JSON reader + json <- tryCatch(renv_json_read_default(file, text), error = identity) + if (!inherits(json, "error")) + return(json) + + # report an error + if (!is.null(jlerr)) + stop(jlerr) + else + stop(json) + + } + + renv_json_read_jsonlite <- function(file = NULL, text = NULL) { + text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") + jsonlite::fromJSON(txt = text, simplifyVector = FALSE) + } + + renv_json_read_default <- function(file = NULL, text = NULL) { + + # find strings in the JSON + text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") + pattern <- '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + locs <- gregexpr(pattern, text, perl = TRUE)[[1]] + + # if any are found, replace them with placeholders + replaced <- text + strings <- character() + replacements <- character() + + if (!identical(c(locs), -1L)) { + + # get the string values + starts <- locs + ends <- locs + attr(locs, "match.length") - 1L + strings <- substring(text, starts, ends) + + # only keep those requiring escaping + strings <- grep("[[\\]{}:]", strings, perl = TRUE, value = TRUE) + + # compute replacements + replacements <- sprintf('"\032%i\032"', seq_along(strings)) + + # replace the strings + mapply(function(string, replacement) { + replaced <<- sub(string, replacement, replaced, fixed = TRUE) + }, strings, replacements) + + } + + # transform the JSON into something the R parser understands + transformed <- replaced + transformed <- gsub("{}", "`names<-`(list(), character())", transformed, fixed = TRUE) + transformed <- gsub("[[{]", "list(", transformed, perl = TRUE) + transformed <- gsub("[]}]", ")", transformed, perl = TRUE) + transformed <- gsub(":", "=", transformed, fixed = TRUE) + text <- paste(transformed, collapse = "\n") + + # parse it + json <- parse(text = text, keep.source = FALSE, srcfile = NULL)[[1L]] + + # construct map between source strings, replaced strings + map <- as.character(parse(text = strings)) + names(map) <- as.character(parse(text = replacements)) + + # convert to list + map <- as.list(map) + + # remap strings in object + remapped <- renv_json_read_remap(json, map) + + # evaluate + eval(remapped, envir = baseenv()) + + } + + renv_json_read_remap <- function(json, map) { + + # fix names + if (!is.null(names(json))) { + lhs <- match(names(json), names(map), nomatch = 0L) + rhs <- match(names(map), names(json), nomatch = 0L) + names(json)[rhs] <- map[lhs] + } + + # fix values + if (is.character(json)) + return(map[[json]] %||% json) + + # handle true, false, null + if (is.name(json)) { + text <- as.character(json) + if (text == "true") + return(TRUE) + else if (text == "false") + return(FALSE) + else if (text == "null") + return(NULL) + } + + # recurse + if (is.recursive(json)) { + for (i in seq_along(json)) { + json[i] <- list(renv_json_read_remap(json[[i]], map)) + } + } + + json + + } + + # load the renv profile, if any + renv_bootstrap_profile_load(project) + + # construct path to library root + root <- renv_bootstrap_library_root(project) + + # construct library prefix for platform + prefix <- renv_bootstrap_platform_prefix() + + # construct full libpath + libpath <- file.path(root, prefix) + + # run bootstrap code + renv_bootstrap_exec(project, libpath, version) + + invisible() + +}) diff --git a/internal/inspect/detectors/testdata/bookdown-proj/renv/settings.json b/internal/inspect/detectors/testdata/bookdown-proj/renv/settings.json new file mode 100644 index 000000000..9c39f83f0 --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/renv/settings.json @@ -0,0 +1,15 @@ +{ + "bioconductor.version": null, + "external.libraries": [], + "ignored.packages": [], + "package.dependency.fields": ["Imports", "Depends", "LinkingTo"], + "ppm.enabled": null, + "ppm.ignored.urls": [], + "r.version": null, + "snapshot.type": "explicit", + "use.cache": true, + "vcs.ignore.cellar": true, + "vcs.ignore.library": true, + "vcs.ignore.local": true, + "vcs.manage.ignores": true +} diff --git a/internal/inspect/detectors/testdata/bookdown-proj/style.css b/internal/inspect/detectors/testdata/bookdown-proj/style.css new file mode 100644 index 000000000..f317b4384 --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/style.css @@ -0,0 +1,14 @@ +p.caption { + color: #777; + margin-top: 10px; +} +p code { + white-space: inherit; +} +pre { + word-break: normal; + word-wrap: normal; +} +pre code { + white-space: inherit; +} diff --git a/internal/inspect/detectors/testdata/bookdown-proj/toc.css b/internal/inspect/detectors/testdata/bookdown-proj/toc.css new file mode 100644 index 000000000..3e7b40012 --- /dev/null +++ b/internal/inspect/detectors/testdata/bookdown-proj/toc.css @@ -0,0 +1,127 @@ +#TOC ul, +#TOC li, +#TOC span, +#TOC a { + margin: 0; + padding: 0; + position: relative; +} +#TOC { + line-height: 1; + border-radius: 5px 5px 0 0; + background: #141414; + background: linear-gradient(to bottom, #333333 0%, #141414 100%); + border-bottom: 2px solid #0fa1e0; + width: auto; +} +#TOC:after, +#TOC ul:after { + content: ""; + display: block; + clear: both; +} +#TOC a { + background: #141414; + background: linear-gradient(to bottom, #333333 0%, #141414 100%); + color: #ffffff; + display: block; + padding: 19px 20px; + text-decoration: none; + text-shadow: none; +} +#TOC ul { + list-style: none; +} +#TOC > ul > li { + display: inline-block; + float: left; + margin: 0; +} +#TOC > ul > li > a { + color: #ffffff; +} +#TOC > ul > li:hover:after { + content: ""; + display: block; + width: 0; + height: 0; + position: absolute; + left: 50%; + bottom: 0; + border-left: 10px solid transparent; + border-right: 10px solid transparent; + border-bottom: 10px solid #0fa1e0; + margin-left: -10px; +} +#TOC > ul > li:first-child > a { + border-radius: 5px 0 0 0; +} +#TOC.align-right > ul > li:first-child > a, +#TOC.align-center > ul > li:first-child > a { + border-radius: 0; +} +#TOC.align-right > ul > li:last-child > a { + border-radius: 0 5px 0 0; +} +#TOC > ul > li.active > a, +#TOC > ul > li:hover > a { + color: #ffffff; + box-shadow: inset 0 0 3px #000000; + background: #070707; + background: linear-gradient(to bottom, #262626 0%, #070707 100%); +} +#TOC .has-sub { + z-index: 1; +} +#TOC .has-sub:hover > ul { + display: block; +} +#TOC .has-sub ul { + display: none; + position: absolute; + width: 200px; + top: 100%; + left: 0; +} +#TOC .has-sub ul li a { + background: #0fa1e0; + border-bottom: 1px dotted #31b7f1; + filter: none; + display: block; + line-height: 120%; + padding: 10px; + color: #ffffff; +} +#TOC .has-sub ul li:hover a { + background: #0c7fb0; +} +#TOC ul ul li:hover > a { + color: #ffffff; +} +#TOC .has-sub .has-sub:hover > ul { + display: block; +} +#TOC .has-sub .has-sub ul { + display: none; + position: absolute; + left: 100%; + top: 0; +} +#TOC .has-sub .has-sub ul li a { + background: #0c7fb0; + border-bottom: 1px dotted #31b7f1; +} +#TOC .has-sub .has-sub ul li a:hover { + background: #0a6d98; +} +#TOC ul ul li.last > a, +#TOC ul ul li:last-child > a, +#TOC ul ul ul li.last > a, +#TOC ul ul ul li:last-child > a, +#TOC .has-sub ul li:last-child > a, +#TOC .has-sub ul li.last > a { + border-bottom: 0; +} +#TOC ul { + font-size: 1.2rem; +} diff --git a/internal/inspect/detectors/testdata/rmd-site/_site.yml b/internal/inspect/detectors/testdata/rmd-site/_site.yml new file mode 100644 index 000000000..e69de29bb diff --git a/internal/inspect/detectors/testdata/rmd-site/another.Rmd b/internal/inspect/detectors/testdata/rmd-site/another.Rmd new file mode 100644 index 000000000..9dd657a91 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site/another.Rmd @@ -0,0 +1,3 @@ +# Another + +Here is another page. It links to [index](index.html) and [article](article.html). diff --git a/internal/inspect/detectors/testdata/rmd-site/article.Rmd b/internal/inspect/detectors/testdata/rmd-site/article.Rmd new file mode 100644 index 000000000..138030660 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site/article.Rmd @@ -0,0 +1,3 @@ +# Article + +This is an article. It has a link to [index](index.html) and [another](another.html). diff --git a/internal/inspect/detectors/testdata/rmd-site/images/mario-jump.gif b/internal/inspect/detectors/testdata/rmd-site/images/mario-jump.gif new file mode 100644 index 0000000000000000000000000000000000000000..230986665dc39d07f367e45f12b53a411afe7491 GIT binary patch literal 26559 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 FzXPlVX4L=y literal 0 HcmV?d00001 diff --git a/internal/inspect/detectors/testdata/rmd-site/index.Rmd b/internal/inspect/detectors/testdata/rmd-site/index.Rmd new file mode 100644 index 000000000..039cede7e --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site/index.Rmd @@ -0,0 +1,31 @@ +--- +title: "Testing RMD Site" +--- + +# R Markdown site + +This is the index page. It has a link to [article](article.html) and [another](another.html). + +### A huge plot (scatter plot matrix) + +One disadvantage of `recordPlot()` is that it may not be able to record huge plots due to memory limits, e.g. a scatter plot matrix of tens of thousands of points: + +```{r gen-data, cache=TRUE} +# generate some random data +dat = matrix(runif(100000), ncol=5) +dat[, 3] = -.2 * dat[, 1] + .8 * dat[, 2] # to make the plot less boring +pairs(dat) +``` + +But scatter plots with such a large number of points are usually difficult to read (basically you can see nothing), so we'd better use some alternative ways to visualize them. For example, we can use 2D density estimates and draw contour plots, or just plot the LOWESS curve. + +```{r line-contour, cache=TRUE, dependson='gen-data'} +dens2d = function(x, y, ...) { + library(MASS) + res = kde2d(x, y) + with(res, contour(x, y, z, add = TRUE)) +} +pairs(dat, lower.panel = dens2d, upper.panel = function(x, y, ...) { + lines(lowess(y ~ x), col = 'red') +}) +``` diff --git a/internal/inspect/detectors/testdata/rmd-site/index_cache/html/__packages b/internal/inspect/detectors/testdata/rmd-site/index_cache/html/__packages new file mode 100644 index 000000000..4ce32c819 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site/index_cache/html/__packages @@ -0,0 +1 @@ +MASS diff --git a/internal/inspect/detectors/testdata/rmd-site/index_cache/html/gen-data_24ff9b2ac5ea45d04d93bc5a7ed5a20f.RData b/internal/inspect/detectors/testdata/rmd-site/index_cache/html/gen-data_24ff9b2ac5ea45d04d93bc5a7ed5a20f.RData new file mode 100644 index 0000000000000000000000000000000000000000..dfb01c9828dd985c3c77334d199eacd52673afd9 GIT binary patch literal 2902 zcmV-c3#s%UiwFP!0000016@{mIMj_69vVYqDK(Vg&E|q&eVltk*WUSCe&-hRq35`jCFR zw(_N&NU%?8=%@J644*MSCEPoEGoUNG?a4vWk1z<(Mb)R;2z1CR%#)e*MRE~UUR!`W zCqUNt4clpcx+?#h0_S6O%+b~B{`|ILezcY&DKtukidRf!8vD(Up5!i27S$Rr>1ekU zGF&3QXl&NT=gn`BUxxSD?%Z9^fziG`4RX z)wD6K-b5`cR3v+D^5y-7q8*23{TOgUXcq0tG{9)*%a=K_A7<%zrr>gGX8tH!mK(G> z^-Ne-KLHCdk>KN%a79qyVn{n!Cn1Ig%u9;Md)?*QoWSb8b{mVce-qwVV!s~$D?-7L z@MP_KofJFXf8Jb)y|kUo@ry09;7jE^n*H@%?79$OKW^=*p=vVhURWfgGEmNucydF| ze@nh(@yaO|J8&oF&_iX@xUjAIv;DX@-BRAFGBMVpw+joIt?;Wf-+PBGb5%}+$jfXo z&z_rcgJ`qw}eqS`|CG*F;;}jS!OQTW!kpGSVzRr zL!HmPbv5rnd!)qg-<{8C z>Yr*)Z~1mnGxj?VYal)Wby&ous52DJt4XybyvSs zkDOeU7C-uSy&t3A9wuPjRfRz6`i1aw%#dWEgn>Z&;me!McW(-lu{PER?a;loRV{oL#w*P8xd1D9kg7(mK0STDpn~nv*OfkXpiYyZVbRk zN&7X+bS`fgv@B|h668npCK;VP=Dq5Yw`(uui~(PGL$nE*SF6Eb2vZ2`z}rQ`>px@;8+ZEP6I+?<6BE zLcW%^{V-3IZ=ii}_i?USm{>#%huWqwFXFUXx7t2V3AWJ|(=R1?Ue3_DadU`Utaw5T zo?u;)I|WvXS8$Abt7_zY40TB5Bko4+-}#~^B75Y^t#6x#fs&2h6WoTBs?M3gs%|&r zeJvdAzPW5_<+|6+F3+gz$Q7T=lv}g!3JT{T&0%dI(XMB0T7Lz{|4gbb%I?_6`95Q1 zb<+bjfqyB5@auVy{xK8ZUS#OTt>C@z8VQC7cdY48=8s@9^j{(8Ywv~{Upo-E#^wdYI=N9XVhD>_%8XPx|pO+L@IJv#Y7 z(7o;loJ27OUx`J;+qESatjH@ns9kJy3RJpXf2vaTE?E>_1l{vgj>ct90{GOzN~9@P zWN2}4K~hlLCrrn3U*8>y4&i%%`ha1{<5@*k{Jz z7ZU#0bIQ9Nr_FVTqX@8!N2`VxN*r1ih~tX0ToWHp@|F!=yJxj5KRB{a@3Dn3jc=p%7}ZEp@bXi!^?6v3nJF>=e+e{KZdB6j`m)= zBsyk%yl4dlL1>?FSJ*VY08Kp-i)Y6QOSe2*=Tr0-vV>Lmml0%x$ErjXO~vzsJqLn- zeGc5mrYP9z6b{ z=l%&`M~P%WD|wlBtL!=z@ppLQvnNxQ<~nen+ams3 z%+lZ8BSl#6Qt_PD4Bxb^prz1jYLlR=?!%Zd+m;tq&kkvP|U8f$t;p!@>tI6 z8SmhW=(JMNA9fuz21+fkbF$L@1%1NLV+|io5ErA4vkm80mJl>;hD}HBv8q}1k6b7BCLhn;{0Lx<2hD=FU<}ga}oRDxMUo*$+K)Y z6A8egR`aH>qEc+ZZ12&OPzEOBmxaicDk>-LdLkUfP~mB1wZnRM#M@ zs*|3yD$v6H3ZJ0Ey(^b literal 0 HcmV?d00001 diff --git a/internal/inspect/detectors/testdata/rmd-site/index_cache/html/gen-data_24ff9b2ac5ea45d04d93bc5a7ed5a20f.rdb b/internal/inspect/detectors/testdata/rmd-site/index_cache/html/gen-data_24ff9b2ac5ea45d04d93bc5a7ed5a20f.rdb new file mode 100644 index 0000000000000000000000000000000000000000..872519e5c530a90bcdbe39e828ba2373e0cb2022 GIT binary patch literal 542862 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

    #^$@rXd6A&t0Yn;FdO;`QEUfc4Q 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

    a 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�Y&||f;AzmfzT@C@ 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 z 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 literal 0 HcmV?d00001 diff --git a/internal/inspect/detectors/testdata/rmd-site/index_cache/html/line-contour_c27bf36805d32a6a394e99ac4056f616.rdb b/internal/inspect/detectors/testdata/rmd-site/index_cache/html/line-contour_c27bf36805d32a6a394e99ac4056f616.rdb new file mode 100644 index 0000000000000000000000000000000000000000..ec4ed405652f4ee2c03feaef4822fb4f53cff681 GIT binary patch literal 454 zcmV;%0XhBv00?DxoW)c#;njk8w79~Zr zbm2dj4bgCJE{S6jND+lfSKD{*-o3LOUsnNu0cRR81E*kIU7j5t1C$s5*U_N?hYF4* z-|KtsEut-4l~)k}k#0zHjm%K8jsCFb`#5Q2QNoh!T}jiX`1htdXBke`>2yN(ifBjB zqY14ov^v@zX=|=p256%R3QjRju@a3YVMKqs)U&|Msn>nVs}a6VqeXeqe%Qn*bb;K* zoCJu#D+RNF=5TQ1^}Lw`m&5$xwA&@$QlZrHYM0mPc zw{#S!%QsP1qbswZ{6$i)9u(6R=d%s$hYg?KB^{FYsY%)nAbi8bJJgmmnxu_~YpY;S w@fq`fI^#dCyS0hBh_?fY&nCVf{?@7;)of8s{R=a`v5I8X^{lw&4>*ImBe_Q5PXGV_ literal 0 HcmV?d00001 diff --git a/internal/inspect/detectors/testdata/rmd-site/index_cache/html/line-contour_c27bf36805d32a6a394e99ac4056f616.rdx b/internal/inspect/detectors/testdata/rmd-site/index_cache/html/line-contour_c27bf36805d32a6a394e99ac4056f616.rdx new file mode 100644 index 0000000000000000000000000000000000000000..841289e939987241a6bdb8df17c8e3d602136123 GIT binary patch literal 146 zcmb2|=3oE==I#ec2?+^l35jVb32CfGk`d0%cS>|6BxbZ66cU&v*iqRyqmz+GqTkS9 zgF)lbNC^waS)YW8gS#7f7*!m%O}VlsX|agHYxye@Y#nCD{s&Cu5wK*_TOrz$@###! xWQ)^6-A2NbiyFclSax&;T@LCF`aDTc>EzFytgb7M9$lHh&6x7lWyN)%QviWKH&y@u literal 0 HcmV?d00001 diff --git a/internal/inspect/detectors/testdata/rmd-site/manifest.json b/internal/inspect/detectors/testdata/rmd-site/manifest.json new file mode 100644 index 000000000..0e2aa6cc8 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site/manifest.json @@ -0,0 +1,908 @@ +{ + "version": 1, + "locale": "en_US", + "platform": "4.3.0", + "metadata": { + "appmode": "rmd-static", + "primary_rmd": "index.Rmd", + "primary_html": null, + "content_category": "site", + "has_parameters": false + }, + "packages": { + "R6": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "R6", + "Title": "Encapsulated Classes with Reference Semantics", + "Version": "2.5.1", + "Authors@R": "person(\"Winston\", \"Chang\", role = c(\"aut\", \"cre\"), email = \"winston@stdout.org\")", + "Description": "Creates classes with reference semantics, similar to R's built-in\n reference classes. Compared to reference classes, R6 classes are simpler\n and lighter-weight, and they are not built on S4 classes so they do not\n require the methods package. These classes allow public and private\n members, and they support inheritance, even when the classes are defined in\n different packages.", + "Depends": "R (>= 3.0)", + "Suggests": "testthat, pryr", + "License": "MIT + file LICENSE", + "URL": "https://r6.r-lib.org, https://github.com/r-lib/R6/", + "BugReports": "https://github.com/r-lib/R6/issues", + "RoxygenNote": "7.1.1", + "NeedsCompilation": "no", + "Packaged": "2021-08-06 20:18:46 UTC; winston", + "Author": "Winston Chang [aut, cre]", + "Maintainer": "Winston Chang ", + "Repository": "CRAN", + "Date/Publication": "2021-08-19 14:00:05 UTC", + "Built": "R 4.3.0; ; 2023-04-11 20:07:58 UTC; unix" + } + }, + "base64enc": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "base64enc", + "Version": "0.1-3", + "Title": "Tools for base64 encoding", + "Author": "Simon Urbanek ", + "Maintainer": "Simon Urbanek ", + "Depends": "R (>= 2.9.0)", + "Enhances": "png", + "Description": "This package provides tools for handling base64 encoding. It is more flexible than the orphaned base64 package.", + "License": "GPL-2 | GPL-3", + "URL": "http://www.rforge.net/base64enc", + "NeedsCompilation": "yes", + "Packaged": "2015-02-04 20:31:00 UTC; svnuser", + "Repository": "CRAN", + "Date/Publication": "2015-07-28 08:03:37", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:09:42 UTC; unix", + "Archs": "base64enc.so.dSYM" + } + }, + "bslib": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "bslib", + "Title": "Custom 'Bootstrap' 'Sass' Themes for 'shiny' and 'rmarkdown'", + "Version": "0.4.2", + "Authors@R": "c(\n person(\"Carson\", \"Sievert\", role = c(\"aut\", \"cre\"), email = \"carson@rstudio.com\", comment = c(ORCID = \"0000-0002-4958-2844\")),\n person(\"Joe\", \"Cheng\", role = \"aut\", email = \"joe@rstudio.com\"),\n person(family = \"RStudio\", role = \"cph\"),\n person(family = \"Bootstrap contributors\", role = \"ctb\",\n comment = \"Bootstrap library\"),\n person(family = \"Twitter, Inc\", role = \"cph\",\n comment = \"Bootstrap library\"),\n person(\"Javi\", \"Aguilar\", role = c(\"ctb\", \"cph\"),\n comment = \"Bootstrap colorpicker library\"),\n person(\"Thomas\", \"Park\", role = c(\"ctb\", \"cph\"),\n comment = \"Bootswatch library\"),\n person(family = \"PayPal\", role = c(\"ctb\", \"cph\"),\n comment = \"Bootstrap accessibility plugin\")\n )", + "Description": "Simplifies custom 'CSS' styling of both 'shiny' and 'rmarkdown' via 'Bootstrap' 'Sass'. Supports 'Bootstrap' 3, 4 and 5 as well as their various 'Bootswatch' themes. An interactive widget is also provided for previewing themes in real time.", + "Depends": "R (>= 2.10)", + "Imports": "grDevices, htmltools (>= 0.5.4), jsonlite, sass (>= 0.4.0),\njquerylib (>= 0.1.3), rlang, cachem, memoise (>= 2.0.1),\nbase64enc, mime", + "Suggests": "shiny (>= 1.6.0), rmarkdown (>= 2.7), thematic, knitr,\ntestthat, withr, rappdirs, curl, magrittr, fontawesome, bsicons", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "Collate": "'bootswatch.R' 'bs-current-theme.R' 'bs-dependencies.R'\n'bs-global.R' 'bs-remove.R' 'bs-theme-layers.R' 'utils.R'\n'bs-theme-preview.R' 'bs-theme-update.R' 'bs-theme.R' 'card.R'\n'deprecated.R' 'files.R' 'imports.R' 'layout.R' 'nav-items.R'\n'nav-update.R' 'navs-legacy.R' 'navs.R' 'onLoad.R' 'page.R'\n'precompiled.R' 'print.R' 'shiny-devmode.R' 'staticimports.R'\n'utils-shiny.R' 'utils-tags.R' 'value-box.R'\n'version-default.R' 'versions.R'", + "URL": "https://rstudio.github.io/bslib/, https://github.com/rstudio/bslib", + "BugReports": "https://github.com/rstudio/bslib/issues", + "Config/testthat/edition": "3", + "Config/Needs/routine": "desc, renv", + "Config/Needs/website": "brio, dplyr, glue, purrr, rprojroot, stringr,\ntidyr, DT, leaflet, plotly, htmlwidgets, shiny, ggplot2,\nsvglite", + "Config/Needs/deploy": "BH, DT, ggplot2, hexbin, lattice, lubridate,\ndplyr, modelr, nycflights13, histoslider, reactable, rprojroot,\nrsconnect, plotly, leaflet, gt, shiny, htmlwidgets", + "NeedsCompilation": "no", + "Packaged": "2022-12-15 16:02:29 UTC; cpsievert", + "Author": "Carson Sievert [aut, cre] (),\n Joe Cheng [aut],\n RStudio [cph],\n Bootstrap contributors [ctb] (Bootstrap library),\n Twitter, Inc [cph] (Bootstrap library),\n Javi Aguilar [ctb, cph] (Bootstrap colorpicker library),\n Thomas Park [ctb, cph] (Bootswatch library),\n PayPal [ctb, cph] (Bootstrap accessibility plugin)", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN", + "Date/Publication": "2022-12-16 10:30:06 UTC", + "Built": "R 4.3.0; ; 2023-04-17 22:45:58 UTC; unix" + } + }, + "cachem": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "cachem", + "Version": "1.0.8", + "Title": "Cache R Objects with Automatic Pruning", + "Description": "Key-value stores with automatic pruning. Caches can limit\n either their total size or the age of the oldest object (or both),\n automatically pruning objects to maintain the constraints.", + "Authors@R": "c(\n person(\"Winston\", \"Chang\", , \"winston@rstudio.com\", c(\"aut\", \"cre\")),\n person(family = \"RStudio\", role = c(\"cph\", \"fnd\")))", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "ByteCompile": "true", + "URL": "https://cachem.r-lib.org/, https://github.com/r-lib/cachem", + "Imports": "rlang, fastmap (>= 1.1.1)", + "Suggests": "testthat", + "RoxygenNote": "7.2.3", + "Config/Needs/routine": "lobstr", + "Config/Needs/website": "pkgdown", + "NeedsCompilation": "yes", + "Packaged": "2023-05-01 15:38:38 UTC; winston", + "Author": "Winston Chang [aut, cre],\n RStudio [cph, fnd]", + "Maintainer": "Winston Chang ", + "Repository": "CRAN", + "Date/Publication": "2023-05-01 16:40:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-05-03 23:25:36 UTC; unix", + "Archs": "cachem.so.dSYM" + } + }, + "cli": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "cli", + "Title": "Helpers for Developing Command Line Interfaces", + "Version": "3.6.1", + "Authors@R": "c(\n person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")),\n person(\"Hadley\", \"Wickham\", role = \"ctb\"),\n person(\"Kirill\", \"Müller\", role = \"ctb\"),\n person(\"RStudio\", role = c(\"cph\", \"fnd\"))\n )", + "Description": "A suite of tools to build attractive command line interfaces\n ('CLIs'), from semantic elements: headings, lists, alerts, paragraphs,\n etc. Supports custom themes via a 'CSS'-like language. It also\n contains a number of lower level 'CLI' elements: rules, boxes, trees,\n and 'Unicode' symbols with 'ASCII' alternatives. It support ANSI\n colors and text styles as well.", + "License": "MIT + file LICENSE", + "URL": "https://cli.r-lib.org, https://github.com/r-lib/cli#readme", + "BugReports": "https://github.com/r-lib/cli/issues", + "Depends": "R (>= 3.4)", + "Imports": "utils", + "Suggests": "callr, covr, crayon, digest, glue (>= 1.6.0), grDevices,\nhtmltools, htmlwidgets, knitr, methods, mockery, processx, ps\n(>= 1.3.4.9000), rlang (>= 1.0.2.9003), rmarkdown, rprojroot,\nrstudioapi, testthat, tibble, whoami, withr", + "Config/Needs/website": "r-lib/asciicast, bench, brio, cpp11, decor, desc,\nfansi, prettyunits, sessioninfo, tidyverse/tidytemplate,\nusethis, vctrs", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.1.9000", + "NeedsCompilation": "yes", + "Packaged": "2023-03-22 13:59:32 UTC; gaborcsardi", + "Author": "Gábor Csárdi [aut, cre],\n Hadley Wickham [ctb],\n Kirill Müller [ctb],\n RStudio [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN", + "Date/Publication": "2023-03-23 12:52:05 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:08:33 UTC; unix", + "Archs": "cli.so.dSYM" + } + }, + "digest": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "digest", + "Author": "Dirk Eddelbuettel with contributions\n by Antoine Lucas, Jarek Tuszynski, Henrik Bengtsson, Simon Urbanek,\n Mario Frasca, Bryan Lewis, Murray Stokely, Hannes Muehleisen,\n Duncan Murdoch, Jim Hester, Wush Wu, Qiang Kou, Thierry Onkelinx,\n Michel Lang, Viliam Simko, Kurt Hornik, Radford Neal, Kendon Bell,\n Matthew de Queljoe, Ion Suruceanu, Bill Denney, Dirk Schumacher,\n and Winston Chang.", + "Version": "0.6.31", + "Date": "2022-12-10", + "Maintainer": "Dirk Eddelbuettel ", + "Title": "Create Compact Hash Digests of R Objects", + "Description": "Implementation of a function 'digest()' for the creation of hash\n digests of arbitrary R objects (using the 'md5', 'sha-1', 'sha-256', 'crc32',\n 'xxhash', 'murmurhash', 'spookyhash' and 'blake3' algorithms) permitting easy\n comparison of R language objects, as well as functions such as'hmac()' to\n create hash-based message authentication code. Please note that this package\n is not meant to be deployed for cryptographic purposes for which more\n comprehensive (and widely tested) libraries such as 'OpenSSL' should be\n used.", + "URL": "https://github.com/eddelbuettel/digest,\nhttp://dirk.eddelbuettel.com/code/digest.html", + "BugReports": "https://github.com/eddelbuettel/digest/issues", + "Depends": "R (>= 3.3.0)", + "Imports": "utils", + "License": "GPL (>= 2)", + "Suggests": "tinytest, simplermarkdown", + "VignetteBuilder": "simplermarkdown", + "NeedsCompilation": "yes", + "Packaged": "2022-12-10 18:30:14 UTC; edd", + "Repository": "CRAN", + "Date/Publication": "2022-12-11 07:40:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:09:54 UTC; unix", + "Archs": "digest.so.dSYM" + } + }, + "ellipsis": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "ellipsis", + "Version": "0.3.2", + "Title": "Tools for Working with ...", + "Description": "The ellipsis is a powerful tool for extending functions. Unfortunately \n this power comes at a cost: misspelled arguments will be silently ignored. \n The ellipsis package provides a collection of functions to catch problems\n and alert the user.", + "Authors@R": "c(\n person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = c(\"aut\", \"cre\")),\n person(\"RStudio\", role = \"cph\")\n )", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.1.1", + "URL": "https://ellipsis.r-lib.org, https://github.com/r-lib/ellipsis", + "BugReports": "https://github.com/r-lib/ellipsis/issues", + "Depends": "R (>= 3.2)", + "Imports": "rlang (>= 0.3.0)", + "Suggests": "covr, testthat", + "NeedsCompilation": "yes", + "Packaged": "2021-04-29 12:06:44 UTC; lionel", + "Author": "Hadley Wickham [aut, cre],\n RStudio [cph]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN", + "Date/Publication": "2021-04-29 12:40:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:17:48 UTC; unix", + "Archs": "ellipsis.so.dSYM" + } + }, + "evaluate": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "evaluate", + "Type": "Package", + "Title": "Parsing and Evaluation Tools that Provide More Details than the\nDefault", + "Version": "0.21", + "Authors@R": "c(\n person(\"Hadley\", \"Wickham\", role = \"aut\"),\n person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")),\n person(\"Michael\", \"Lawrence\", role = \"ctb\"),\n person(\"Thomas\", \"Kluyver\", role = \"ctb\"),\n person(\"Jeroen\", \"Ooms\", role = \"ctb\"),\n person(\"Barret\", \"Schloerke\", role = \"ctb\"),\n person(\"Adam\", \"Ryczkowski\", role = \"ctb\"),\n person(\"Hiroaki\", \"Yutani\", role = \"ctb\"),\n person(\"Michel\", \"Lang\", role = \"ctb\"),\n person(\"Karolis\", \"Koncevičius\", role = \"ctb\"),\n person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\"))\n )", + "Description": "Parsing and evaluation tools that make it easy to recreate the\n command line behaviour of R.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/evaluate", + "BugReports": "https://github.com/r-lib/evaluate/issues", + "Depends": "R (>= 3.0.2)", + "Imports": "methods", + "Suggests": "covr, ggplot2, lattice, rlang, testthat (>= 3.0.0), withr", + "RoxygenNote": "7.2.3", + "Encoding": "UTF-8", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Packaged": "2023-05-01 21:56:45 UTC; yihui", + "Author": "Hadley Wickham [aut],\n Yihui Xie [aut, cre] (),\n Michael Lawrence [ctb],\n Thomas Kluyver [ctb],\n Jeroen Ooms [ctb],\n Barret Schloerke [ctb],\n Adam Ryczkowski [ctb],\n Hiroaki Yutani [ctb],\n Michel Lang [ctb],\n Karolis Koncevičius [ctb],\n Posit Software, PBC [cph, fnd]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN", + "Date/Publication": "2023-05-05 23:30:02 UTC", + "Built": "R 4.3.0; ; 2023-05-05 23:40:19 UTC; unix" + } + }, + "fastmap": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "fastmap", + "Title": "Fast Data Structures", + "Version": "1.1.1", + "Authors@R": "c(\n person(\"Winston\", \"Chang\", email = \"winston@rstudio.com\", role = c(\"aut\", \"cre\")),\n person(given = \"RStudio\", role = c(\"cph\", \"fnd\")),\n person(given = \"Tessil\", role = \"cph\", comment = \"hopscotch_map library\")\n )", + "Description": "Fast implementation of data structures, including a key-value\n store, stack, and queue. Environments are commonly used as key-value stores\n in R, but every time a new key is used, it is added to R's global symbol\n table, causing a small amount of memory leakage. This can be problematic in\n cases where many different keys are used. Fastmap avoids this memory leak\n issue by implementing the map using data structures in C++.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "Suggests": "testthat (>= 2.1.1)", + "URL": "https://r-lib.github.io/fastmap/, https://github.com/r-lib/fastmap", + "BugReports": "https://github.com/r-lib/fastmap/issues", + "NeedsCompilation": "yes", + "Packaged": "2023-02-24 16:01:27 UTC; winston", + "Author": "Winston Chang [aut, cre],\n RStudio [cph, fnd],\n Tessil [cph] (hopscotch_map library)", + "Maintainer": "Winston Chang ", + "Repository": "CRAN", + "Date/Publication": "2023-02-24 16:30:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:09:53 UTC; unix", + "Archs": "fastmap.so.dSYM" + } + }, + "fontawesome": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Type": "Package", + "Package": "fontawesome", + "Version": "0.5.1", + "Title": "Easily Work with 'Font Awesome' Icons", + "Description": "Easily and flexibly insert 'Font Awesome' icons into 'R Markdown'\n documents and 'Shiny' apps. These icons can be inserted into HTML content\n through inline 'SVG' tags or 'i' tags. There is also a utility function for\n exporting 'Font Awesome' icons as 'PNG' images for those situations where\n raster graphics are needed.", + "Authors@R": "c(\n person(\"Richard\", \"Iannone\", , \"rich@posit.co\", c(\"aut\", \"cre\"),\n comment = c(ORCID = \"0000-0003-3925-190X\")),\n person(\"Christophe\", \"Dervieux\", , \"cderv@posit.co\", role = \"ctb\",\n comment = c(ORCID = \"0000-0003-4474-2498\")),\n person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"ctb\"),\n person(\"Dave\", \"Gandy\", role = c(\"ctb\", \"cph\"),\n comment = \"Font-Awesome font\"),\n person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"))\n )", + "License": "MIT + file LICENSE", + "URL": "https://github.com/rstudio/fontawesome,\nhttps://rstudio.github.io/fontawesome/", + "BugReports": "https://github.com/rstudio/fontawesome/issues", + "Encoding": "UTF-8", + "ByteCompile": "true", + "RoxygenNote": "7.2.3", + "Depends": "R (>= 3.3.0)", + "Imports": "rlang (>= 1.0.6), htmltools (>= 0.5.1.1)", + "Suggests": "covr, dplyr (>= 1.0.8), knitr (>= 1.31), testthat (>= 3.0.0),\nrsvg", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Packaged": "2023-04-18 17:20:05 UTC; rich", + "Author": "Richard Iannone [aut, cre] (),\n Christophe Dervieux [ctb] (),\n Winston Chang [ctb],\n Dave Gandy [ctb, cph] (Font-Awesome font),\n Posit Software, PBC [cph, fnd]", + "Maintainer": "Richard Iannone ", + "Repository": "CRAN", + "Date/Publication": "2023-04-18 20:30:02 UTC", + "Built": "R 4.3.0; ; 2023-04-22 00:45:59 UTC; unix" + } + }, + "fs": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "fs", + "Title": "Cross-Platform File System Operations Based on 'libuv'", + "Version": "1.6.2", + "Authors@R": "c(\n person(\"Jim\", \"Hester\", role = \"aut\"),\n person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = \"aut\"),\n person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")),\n person(\"libuv project contributors\", role = \"cph\",\n comment = \"libuv library\"),\n person(\"Joyent, Inc. and other Node contributors\", role = \"cph\",\n comment = \"libuv library\"),\n person(\"RStudio\", role = c(\"cph\", \"fnd\"))\n )", + "Description": "A cross-platform interface to file system operations, built\n on top of the 'libuv' C library.", + "License": "MIT + file LICENSE", + "URL": "https://fs.r-lib.org, https://github.com/r-lib/fs,\nhttps://fs.r-lib.org/", + "BugReports": "https://github.com/r-lib/fs/issues", + "Depends": "R (>= 3.4)", + "Imports": "methods", + "Suggests": "covr, crayon, knitr, pillar (>= 1.0.0), rmarkdown, spelling,\ntestthat (>= 3.0.0), tibble (>= 1.1.0), vctrs (>= 0.3.0), withr", + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "Copyright": "file COPYRIGHTS", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.1.2", + "SystemRequirements": "GNU make", + "Config/testthat/edition": "3", + "Config/Needs/website": "tidyverse/tidytemplate", + "NeedsCompilation": "yes", + "Packaged": "2023-04-24 13:43:26 UTC; gaborcsardi", + "Author": "Jim Hester [aut],\n Hadley Wickham [aut],\n Gábor Csárdi [aut, cre],\n libuv project contributors [cph] (libuv library),\n Joyent, Inc. and other Node contributors [cph] (libuv library),\n RStudio [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN", + "Date/Publication": "2023-04-25 08:30:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-30 06:45:54 UTC; unix", + "Archs": "fs.so.dSYM" + } + }, + "glue": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "glue", + "Title": "Interpreted String Literals", + "Version": "1.6.2", + "Authors@R": "c(\n person(\"Jim\", \"Hester\", role = \"aut\",\n comment = c(ORCID = \"0000-0002-2739-7082\")),\n person(\"Jennifer\", \"Bryan\", , \"jenny@rstudio.com\", role = c(\"aut\", \"cre\"),\n comment = c(ORCID = \"0000-0002-6983-2759\")),\n person(\"RStudio\", role = c(\"cph\", \"fnd\"))\n )", + "Description": "An implementation of interpreted string literals, inspired by\n Python's Literal String Interpolation\n and Docstrings\n and Julia's Triple-Quoted\n String Literals\n .", + "License": "MIT + file LICENSE", + "URL": "https://github.com/tidyverse/glue, https://glue.tidyverse.org/", + "BugReports": "https://github.com/tidyverse/glue/issues", + "Depends": "R (>= 3.4)", + "Imports": "methods", + "Suggests": "covr, crayon, DBI, dplyr, forcats, ggplot2, knitr, magrittr,\nmicrobenchmark, R.utils, rmarkdown, rprintf, RSQLite, stringr,\ntestthat (>= 3.0.0), vctrs (>= 0.3.0), waldo (>= 0.3.0), withr", + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "Config/Needs/website": "hadley/emo, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.1.2", + "NeedsCompilation": "yes", + "Packaged": "2022-02-23 22:50:40 UTC; jenny", + "Author": "Jim Hester [aut] (),\n Jennifer Bryan [aut, cre] (),\n RStudio [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN", + "Date/Publication": "2022-02-24 07:50:20 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:07:27 UTC; unix", + "Archs": "glue.so.dSYM" + } + }, + "highr": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "highr", + "Type": "Package", + "Title": "Syntax Highlighting for R Source Code", + "Version": "0.10", + "Authors@R": "c(\n person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")),\n person(\"Yixuan\", \"Qiu\", role = \"aut\"),\n person(\"Christopher\", \"Gandrud\", role = \"ctb\"),\n person(\"Qiang\", \"Li\", role = \"ctb\")\n )", + "Description": "Provides syntax highlighting for R source code. Currently it\n supports LaTeX and HTML output. Source code of other languages is supported\n via Andre Simon's highlight package ().", + "Depends": "R (>= 3.3.0)", + "Imports": "xfun (>= 0.18)", + "Suggests": "knitr, markdown, testit", + "License": "GPL", + "URL": "https://github.com/yihui/highr", + "BugReports": "https://github.com/yihui/highr/issues", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Packaged": "2022-12-22 06:43:07 UTC; yihui", + "Author": "Yihui Xie [aut, cre] (),\n Yixuan Qiu [aut],\n Christopher Gandrud [ctb],\n Qiang Li [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN", + "Date/Publication": "2022-12-22 07:00:02 UTC", + "Built": "R 4.3.0; ; 2023-04-12 06:44:58 UTC; unix" + } + }, + "htmltools": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "htmltools", + "Type": "Package", + "Title": "Tools for HTML", + "Version": "0.5.5", + "Authors@R": "c(\n person(\"Joe\", \"Cheng\", role = \"aut\", email = \"joe@rstudio.com\"),\n person(\"Carson\", \"Sievert\", role = c(\"aut\", \"cre\"), email = \"carson@rstudio.com\", comment = c(ORCID = \"0000-0002-4958-2844\")),\n person(\"Barret\", \"Schloerke\", role = \"aut\", email = \"barret@rstudio.com\", comment = c(ORCID = \"0000-0001-9986-114X\")),\n person(\"Winston\", \"Chang\", role = \"aut\", email = \"winston@rstudio.com\", comment = c(ORCID = \"0000-0002-1576-2126\")),\n person(\"Yihui\", \"Xie\", role = \"aut\", email = \"yihui@rstudio.com\"),\n person(\"Jeff\", \"Allen\", role = \"aut\", email = \"jeff@rstudio.com\"),\n person(family = \"RStudio\", role = \"cph\")\n )", + "Description": "Tools for HTML generation and output.", + "Depends": "R (>= 2.14.1)", + "Imports": "utils, digest, grDevices, base64enc, rlang (>= 0.4.10),\nfastmap (>= 1.1.0), ellipsis", + "Suggests": "markdown, testthat, withr, Cairo, ragg, shiny", + "Enhances": "knitr", + "License": "GPL (>= 2)", + "URL": "https://github.com/rstudio/htmltools,\nhttps://rstudio.github.io/htmltools/", + "BugReports": "https://github.com/rstudio/htmltools/issues", + "RoxygenNote": "7.2.3", + "Encoding": "UTF-8", + "Collate": "'colors.R' 'fill.R' 'html_dependency.R' 'html_escape.R'\n'html_print.R' 'images.R' 'known_tags.R' 'selector.R'\n'staticimports.R' 'tag_query.R' 'utils.R' 'tags.R' 'template.R'", + "Config/Needs/website": "rstudio/quillt, bench", + "NeedsCompilation": "yes", + "Packaged": "2023-03-22 22:59:42 UTC; cpsievert", + "Author": "Joe Cheng [aut],\n Carson Sievert [aut, cre] (),\n Barret Schloerke [aut] (),\n Winston Chang [aut] (),\n Yihui Xie [aut],\n Jeff Allen [aut],\n RStudio [cph]", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN", + "Date/Publication": "2023-03-23 09:50:06 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-12 06:43:49 UTC; unix", + "Archs": "htmltools.so.dSYM" + } + }, + "jquerylib": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "jquerylib", + "Title": "Obtain 'jQuery' as an HTML Dependency Object", + "Version": "0.1.4", + "Authors@R": "c(\n person(\"Carson\", \"Sievert\", role = c(\"aut\", \"cre\"), email = \"carson@rstudio.com\", comment = c(ORCID = \"0000-0002-4958-2844\")),\n person(\"Joe\", \"Cheng\", role = \"aut\", email = \"joe@rstudio.com\"),\n person(family = \"RStudio\", role = \"cph\"),\n person(family = \"jQuery Foundation\", role = \"cph\",\n comment = \"jQuery library and jQuery UI library\"),\n person(family = \"jQuery contributors\", role = c(\"ctb\", \"cph\"),\n comment = \"jQuery library; authors listed in inst/lib/jquery-AUTHORS.txt\")\n )", + "Description": "Obtain any major version of 'jQuery' () and use it in any webpage generated by 'htmltools' (e.g. 'shiny', 'htmlwidgets', and 'rmarkdown').\n Most R users don't need to use this package directly, but other R packages (e.g. 'shiny', 'rmarkdown', etc.) depend on this package to avoid bundling redundant copies of 'jQuery'.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Config/testthat/edition": "3", + "RoxygenNote": "7.0.2", + "Imports": "htmltools", + "Suggests": "testthat", + "NeedsCompilation": "no", + "Packaged": "2021-04-26 16:40:21 UTC; cpsievert", + "Author": "Carson Sievert [aut, cre] (),\n Joe Cheng [aut],\n RStudio [cph],\n jQuery Foundation [cph] (jQuery library and jQuery UI library),\n jQuery contributors [ctb, cph] (jQuery library; authors listed in\n inst/lib/jquery-AUTHORS.txt)", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN", + "Date/Publication": "2021-04-26 17:10:02 UTC", + "Built": "R 4.3.0; ; 2023-04-12 11:15:31 UTC; unix" + } + }, + "jsonlite": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "jsonlite", + "Version": "1.8.4", + "Title": "A Simple and Robust JSON Parser and Generator for R", + "License": "MIT + file LICENSE", + "Depends": "methods", + "Authors@R": "c(\n person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroen@berkeley.edu\",\n comment = c(ORCID = \"0000-0002-4035-0289\")),\n person(\"Duncan\", \"Temple Lang\", role = \"ctb\"),\n person(\"Lloyd\", \"Hilaiel\", role = \"cph\", comment=\"author of bundled libyajl\"))", + "URL": "https://arxiv.org/abs/1403.2805 (paper)", + "BugReports": "https://github.com/jeroen/jsonlite/issues", + "Maintainer": "Jeroen Ooms ", + "VignetteBuilder": "knitr, R.rsp", + "Description": "A reasonably fast JSON parser and generator, optimized for statistical \n data and the web. Offers simple, flexible tools for working with JSON in R, and\n is particularly powerful for building pipelines and interacting with a web API. \n The implementation is based on the mapping described in the vignette (Ooms, 2014).\n In addition to converting JSON data from/to R objects, 'jsonlite' contains \n functions to stream, validate, and prettify JSON data. The unit tests included \n with the package verify that all edge cases are encoded and decoded consistently \n for use with dynamic data in systems and applications.", + "Suggests": "httr, vctrs, testthat, knitr, rmarkdown, R.rsp, sf", + "RoxygenNote": "7.2.1", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Packaged": "2022-12-05 23:21:23 UTC; jeroen", + "Author": "Jeroen Ooms [aut, cre] (),\n Duncan Temple Lang [ctb],\n Lloyd Hilaiel [cph] (author of bundled libyajl)", + "Repository": "CRAN", + "Date/Publication": "2022-12-06 08:10:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:18:22 UTC; unix", + "Archs": "jsonlite.so.dSYM" + } + }, + "knitr": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "knitr", + "Type": "Package", + "Title": "A General-Purpose Package for Dynamic Report Generation in R", + "Version": "1.42", + "Authors@R": "c(\n person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")),\n person(\"Abhraneel\", \"Sarma\", role = \"ctb\"),\n person(\"Adam\", \"Vogt\", role = \"ctb\"),\n person(\"Alastair\", \"Andrew\", role = \"ctb\"),\n person(\"Alex\", \"Zvoleff\", role = \"ctb\"),\n person(\"Amar\", \"Al-Zubaidi\", role = \"ctb\"),\n person(\"Andre\", \"Simon\", role = \"ctb\", comment = \"the CSS files under inst/themes/ were derived from the Highlight package http://www.andre-simon.de\"),\n person(\"Aron\", \"Atkins\", role = \"ctb\"),\n person(\"Aaron\", \"Wolen\", role = \"ctb\"),\n person(\"Ashley\", \"Manton\", role = \"ctb\"),\n person(\"Atsushi\", \"Yasumoto\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8335-495X\")),\n person(\"Ben\", \"Baumer\", role = \"ctb\"),\n person(\"Brian\", \"Diggs\", role = \"ctb\"),\n person(\"Brian\", \"Zhang\", role = \"ctb\"),\n person(\"Bulat\", \"Yapparov\", role = \"ctb\"),\n person(\"Cassio\", \"Pereira\", role = \"ctb\"),\n person(\"Christophe\", \"Dervieux\", role = \"ctb\"),\n person(\"David\", \"Hall\", role = \"ctb\"),\n person(\"David\", \"Hugh-Jones\", role = \"ctb\"),\n person(\"David\", \"Robinson\", role = \"ctb\"),\n person(\"Doug\", \"Hemken\", role = \"ctb\"),\n person(\"Duncan\", \"Murdoch\", role = \"ctb\"),\n person(\"Elio\", \"Campitelli\", role = \"ctb\"),\n person(\"Ellis\", \"Hughes\", role = \"ctb\"),\n person(\"Emily\", \"Riederer\", role = \"ctb\"),\n person(\"Fabian\", \"Hirschmann\", role = \"ctb\"),\n person(\"Fitch\", \"Simeon\", role = \"ctb\"),\n person(\"Forest\", \"Fang\", role = \"ctb\"),\n person(c(\"Frank\", \"E\", \"Harrell\", \"Jr\"), role = \"ctb\", comment = \"the Sweavel package at inst/misc/Sweavel.sty\"),\n person(\"Garrick\", \"Aden-Buie\", role = \"ctb\"),\n person(\"Gregoire\", \"Detrez\", role = \"ctb\"),\n person(\"Hadley\", \"Wickham\", role = \"ctb\"),\n person(\"Hao\", \"Zhu\", role = \"ctb\"),\n person(\"Heewon\", \"Jeon\", role = \"ctb\"),\n person(\"Henrik\", \"Bengtsson\", role = \"ctb\"),\n person(\"Hiroaki\", \"Yutani\", role = \"ctb\"),\n person(\"Ian\", \"Lyttle\", role = \"ctb\"),\n person(\"Hodges\", \"Daniel\", role = \"ctb\"),\n person(\"Jacob\", \"Bien\", role = \"ctb\"),\n person(\"Jake\", \"Burkhead\", role = \"ctb\"),\n person(\"James\", \"Manton\", role = \"ctb\"),\n person(\"Jared\", \"Lander\", role = \"ctb\"),\n person(\"Jason\", \"Punyon\", role = \"ctb\"),\n person(\"Javier\", \"Luraschi\", role = \"ctb\"),\n person(\"Jeff\", \"Arnold\", role = \"ctb\"),\n person(\"Jenny\", \"Bryan\", role = \"ctb\"),\n person(\"Jeremy\", \"Ashkenas\", role = c(\"ctb\", \"cph\"), comment = \"the CSS file at inst/misc/docco-classic.css\"),\n person(\"Jeremy\", \"Stephens\", role = \"ctb\"),\n person(\"Jim\", \"Hester\", role = \"ctb\"),\n person(\"Joe\", \"Cheng\", role = \"ctb\"),\n person(\"Johannes\", \"Ranke\", role = \"ctb\"),\n person(\"John\", \"Honaker\", role = \"ctb\"),\n person(\"John\", \"Muschelli\", role = \"ctb\"),\n person(\"Jonathan\", \"Keane\", role = \"ctb\"),\n person(\"JJ\", \"Allaire\", role = \"ctb\"),\n person(\"Johan\", \"Toloe\", role = \"ctb\"),\n person(\"Jonathan\", \"Sidi\", role = \"ctb\"),\n person(\"Joseph\", \"Larmarange\", role = \"ctb\"),\n person(\"Julien\", \"Barnier\", role = \"ctb\"),\n person(\"Kaiyin\", \"Zhong\", role = \"ctb\"),\n person(\"Kamil\", \"Slowikowski\", role = \"ctb\"),\n person(\"Karl\", \"Forner\", role = \"ctb\"),\n person(c(\"Kevin\", \"K.\"), \"Smith\", role = \"ctb\"),\n person(\"Kirill\", \"Mueller\", role = \"ctb\"),\n person(\"Kohske\", \"Takahashi\", role = \"ctb\"),\n person(\"Lorenz\", \"Walthert\", role = \"ctb\"),\n person(\"Lucas\", \"Gallindo\", role = \"ctb\"),\n person(\"Marius\", \"Hofert\", role = \"ctb\"),\n person(\"Martin\", \"Modrák\", role = \"ctb\"),\n person(\"Michael\", \"Chirico\", role = \"ctb\"),\n person(\"Michael\", \"Friendly\", role = \"ctb\"),\n person(\"Michal\", \"Bojanowski\", role = \"ctb\"),\n person(\"Michel\", \"Kuhlmann\", role = \"ctb\"),\n person(\"Miller\", \"Patrick\", role = \"ctb\"),\n person(\"Nacho\", \"Caballero\", role = \"ctb\"),\n person(\"Nick\", \"Salkowski\", role = \"ctb\"),\n person(\"Niels Richard\", \"Hansen\", role = \"ctb\"),\n person(\"Noam\", \"Ross\", role = \"ctb\"),\n person(\"Obada\", \"Mahdi\", role = \"ctb\"),\n person(\"Pavel N.\", \"Krivitsky\", role = \"ctb\", comment=c(ORCID = \"0000-0002-9101-3362\")),\n person(\"Pedro\", \"Faria\", role = \"ctb\"),\n person(\"Qiang\", \"Li\", role = \"ctb\"),\n person(\"Ramnath\", \"Vaidyanathan\", role = \"ctb\"),\n person(\"Richard\", \"Cotton\", role = \"ctb\"),\n person(\"Robert\", \"Krzyzanowski\", role = \"ctb\"),\n person(\"Rodrigo\", \"Copetti\", role = \"ctb\"),\n person(\"Romain\", \"Francois\", role = \"ctb\"),\n person(\"Ruaridh\", \"Williamson\", role = \"ctb\"),\n person(\"Sagiru\", \"Mati\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1413-3974\")),\n person(\"Scott\", \"Kostyshak\", role = \"ctb\"),\n person(\"Sebastian\", \"Meyer\", role = \"ctb\"),\n person(\"Sietse\", \"Brouwer\", role = \"ctb\"),\n person(c(\"Simon\", \"de\"), \"Bernard\", role = \"ctb\"),\n person(\"Sylvain\", \"Rousseau\", role = \"ctb\"),\n person(\"Taiyun\", \"Wei\", role = \"ctb\"),\n person(\"Thibaut\", \"Assus\", role = \"ctb\"),\n person(\"Thibaut\", \"Lamadon\", role = \"ctb\"),\n person(\"Thomas\", \"Leeper\", role = \"ctb\"),\n person(\"Tim\", \"Mastny\", role = \"ctb\"),\n person(\"Tom\", \"Torsney-Weir\", role = \"ctb\"),\n person(\"Trevor\", \"Davis\", role = \"ctb\"),\n person(\"Viktoras\", \"Veitas\", role = \"ctb\"),\n person(\"Weicheng\", \"Zhu\", role = \"ctb\"),\n person(\"Wush\", \"Wu\", role = \"ctb\"),\n person(\"Zachary\", \"Foster\", role = \"ctb\"),\n person(\"Zhian N.\", \"Kamvar\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1458-7108\"))\n )", + "Description": "Provides a general-purpose tool for dynamic report generation in R\n using Literate Programming techniques.", + "Depends": "R (>= 3.3.0)", + "Imports": "evaluate (>= 0.15), highr, methods, yaml (>= 2.1.19), xfun (>=\n0.34), tools", + "Suggests": "markdown (>= 1.3), formatR, testit, digest, rgl (>=\n0.95.1201), codetools, rmarkdown, htmlwidgets (>= 0.7),\nwebshot, tikzDevice (>= 0.10), tinytex, reticulate (>= 1.4),\nJuliaCall (>= 0.11.1), magick, png, jpeg, gifski, xml2 (>=\n1.2.0), httr, DBI (>= 0.4-1), showtext, tibble, sass, bslib,\nragg, gridSVG, styler (>= 1.2.0), targets (>= 0.6.0)", + "License": "GPL", + "URL": "https://yihui.org/knitr/", + "BugReports": "https://github.com/yihui/knitr/issues", + "Encoding": "UTF-8", + "VignetteBuilder": "knitr", + "SystemRequirements": "Package vignettes based on R Markdown v2 or\nreStructuredText require Pandoc (http://pandoc.org). The\nfunction rst2pdf() requires rst2pdf\n(https://github.com/rst2pdf/rst2pdf).", + "Collate": "'block.R' 'cache.R' 'utils.R' 'citation.R' 'hooks-html.R'\n'plot.R' 'defaults.R' 'concordance.R' 'engine.R' 'highlight.R'\n'themes.R' 'header.R' 'hooks-asciidoc.R' 'hooks-chunk.R'\n'hooks-extra.R' 'hooks-latex.R' 'hooks-md.R' 'hooks-rst.R'\n'hooks-textile.R' 'hooks.R' 'output.R' 'package.R' 'pandoc.R'\n'params.R' 'parser.R' 'pattern.R' 'rocco.R' 'spin.R' 'table.R'\n'template.R' 'utils-conversion.R' 'utils-rd2html.R'\n'utils-string.R' 'utils-sweave.R' 'utils-upload.R'\n'utils-vignettes.R' 'zzz.R'", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Packaged": "2023-01-20 05:51:44 UTC; yihui", + "Author": "Yihui Xie [aut, cre] (),\n Abhraneel Sarma [ctb],\n Adam Vogt [ctb],\n Alastair Andrew [ctb],\n Alex Zvoleff [ctb],\n Amar Al-Zubaidi [ctb],\n Andre Simon [ctb] (the CSS files under inst/themes/ were derived from\n the Highlight package http://www.andre-simon.de),\n Aron Atkins [ctb],\n Aaron Wolen [ctb],\n Ashley Manton [ctb],\n Atsushi Yasumoto [ctb] (),\n Ben Baumer [ctb],\n Brian Diggs [ctb],\n Brian Zhang [ctb],\n Bulat Yapparov [ctb],\n Cassio Pereira [ctb],\n Christophe Dervieux [ctb],\n David Hall [ctb],\n David Hugh-Jones [ctb],\n David Robinson [ctb],\n Doug Hemken [ctb],\n Duncan Murdoch [ctb],\n Elio Campitelli [ctb],\n Ellis Hughes [ctb],\n Emily Riederer [ctb],\n Fabian Hirschmann [ctb],\n Fitch Simeon [ctb],\n Forest Fang [ctb],\n Frank E Harrell Jr [ctb] (the Sweavel package at inst/misc/Sweavel.sty),\n Garrick Aden-Buie [ctb],\n Gregoire Detrez [ctb],\n Hadley Wickham [ctb],\n Hao Zhu [ctb],\n Heewon Jeon [ctb],\n Henrik Bengtsson [ctb],\n Hiroaki Yutani [ctb],\n Ian Lyttle [ctb],\n Hodges Daniel [ctb],\n Jacob Bien [ctb],\n Jake Burkhead [ctb],\n James Manton [ctb],\n Jared Lander [ctb],\n Jason Punyon [ctb],\n Javier Luraschi [ctb],\n Jeff Arnold [ctb],\n Jenny Bryan [ctb],\n Jeremy Ashkenas [ctb, cph] (the CSS file at\n inst/misc/docco-classic.css),\n Jeremy Stephens [ctb],\n Jim Hester [ctb],\n Joe Cheng [ctb],\n Johannes Ranke [ctb],\n John Honaker [ctb],\n John Muschelli [ctb],\n Jonathan Keane [ctb],\n JJ Allaire [ctb],\n Johan Toloe [ctb],\n Jonathan Sidi [ctb],\n Joseph Larmarange [ctb],\n Julien Barnier [ctb],\n Kaiyin Zhong [ctb],\n Kamil Slowikowski [ctb],\n Karl Forner [ctb],\n Kevin K. Smith [ctb],\n Kirill Mueller [ctb],\n Kohske Takahashi [ctb],\n Lorenz Walthert [ctb],\n Lucas Gallindo [ctb],\n Marius Hofert [ctb],\n Martin Modrák [ctb],\n Michael Chirico [ctb],\n Michael Friendly [ctb],\n Michal Bojanowski [ctb],\n Michel Kuhlmann [ctb],\n Miller Patrick [ctb],\n Nacho Caballero [ctb],\n Nick Salkowski [ctb],\n Niels Richard Hansen [ctb],\n Noam Ross [ctb],\n Obada Mahdi [ctb],\n Pavel N. Krivitsky [ctb] (),\n Pedro Faria [ctb],\n Qiang Li [ctb],\n Ramnath Vaidyanathan [ctb],\n Richard Cotton [ctb],\n Robert Krzyzanowski [ctb],\n Rodrigo Copetti [ctb],\n Romain Francois [ctb],\n Ruaridh Williamson [ctb],\n Sagiru Mati [ctb] (),\n Scott Kostyshak [ctb],\n Sebastian Meyer [ctb],\n Sietse Brouwer [ctb],\n Simon de Bernard [ctb],\n Sylvain Rousseau [ctb],\n Taiyun Wei [ctb],\n Thibaut Assus [ctb],\n Thibaut Lamadon [ctb],\n Thomas Leeper [ctb],\n Tim Mastny [ctb],\n Tom Torsney-Weir [ctb],\n Trevor Davis [ctb],\n Viktoras Veitas [ctb],\n Weicheng Zhu [ctb],\n Wush Wu [ctb],\n Zachary Foster [ctb],\n Zhian N. Kamvar [ctb] ()", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN", + "Date/Publication": "2023-01-25 10:20:08 UTC", + "Built": "R 4.3.0; ; 2023-04-12 11:17:12 UTC; unix" + } + }, + "lifecycle": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "lifecycle", + "Title": "Manage the Life Cycle of your Package Functions", + "Version": "1.0.3", + "Authors@R": "c(\n person(\"Lionel\", \"Henry\", , \"lionel@rstudio.com\", role = c(\"aut\", \"cre\")),\n person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = \"aut\",\n comment = c(ORCID = \"0000-0003-4757-117X\")),\n person(\"RStudio\", role = c(\"cph\", \"fnd\"))\n )", + "Description": "Manage the life cycle of your exported functions with shared\n conventions, documentation badges, and user-friendly deprecation\n warnings.", + "License": "MIT + file LICENSE", + "URL": "https://lifecycle.r-lib.org/, https://github.com/r-lib/lifecycle", + "BugReports": "https://github.com/r-lib/lifecycle/issues", + "Depends": "R (>= 3.4)", + "Imports": "cli (>= 3.4.0), glue, rlang (>= 1.0.6)", + "Suggests": "covr, crayon, knitr, lintr, rmarkdown, testthat (>= 3.0.1),\ntibble, tidyverse, tools, vctrs, withr", + "VignetteBuilder": "knitr", + "Config/testthat/edition": "3", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.1", + "NeedsCompilation": "no", + "Packaged": "2022-10-07 08:50:55 UTC; lionel", + "Author": "Lionel Henry [aut, cre],\n Hadley Wickham [aut] (),\n RStudio [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN", + "Date/Publication": "2022-10-07 09:50:02 UTC", + "Built": "R 4.3.0; ; 2023-04-12 06:43:28 UTC; unix" + } + }, + "magrittr": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Type": "Package", + "Package": "magrittr", + "Title": "A Forward-Pipe Operator for R", + "Version": "2.0.3", + "Authors@R": "c(\n person(\"Stefan Milton\", \"Bache\", , \"stefan@stefanbache.dk\", role = c(\"aut\", \"cph\"),\n comment = \"Original author and creator of magrittr\"),\n person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = \"aut\"),\n person(\"Lionel\", \"Henry\", , \"lionel@rstudio.com\", role = \"cre\"),\n person(\"RStudio\", role = c(\"cph\", \"fnd\"))\n )", + "Description": "Provides a mechanism for chaining commands with a new\n forward-pipe operator, %>%. This operator will forward a value, or the\n result of an expression, into the next function call/expression.\n There is flexible support for the type of right-hand side expressions.\n For more information, see package vignette. To quote Rene Magritte,\n \"Ceci n'est pas un pipe.\"", + "License": "MIT + file LICENSE", + "URL": "https://magrittr.tidyverse.org,\nhttps://github.com/tidyverse/magrittr", + "BugReports": "https://github.com/tidyverse/magrittr/issues", + "Depends": "R (>= 3.4.0)", + "Suggests": "covr, knitr, rlang, rmarkdown, testthat", + "VignetteBuilder": "knitr", + "ByteCompile": "Yes", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.1.2", + "NeedsCompilation": "yes", + "Packaged": "2022-03-29 09:34:37 UTC; lionel", + "Author": "Stefan Milton Bache [aut, cph] (Original author and creator of\n magrittr),\n Hadley Wickham [aut],\n Lionel Henry [cre],\n RStudio [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN", + "Date/Publication": "2022-03-30 07:30:09 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:07:22 UTC; unix", + "Archs": "magrittr.so.dSYM" + } + }, + "memoise": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "memoise", + "Title": "'Memoisation' of Functions", + "Version": "2.0.1", + "Authors@R": "\n c(person(given = \"Hadley\",\n family = \"Wickham\",\n role = \"aut\",\n email = \"hadley@rstudio.com\"),\n person(given = \"Jim\",\n family = \"Hester\",\n role = \"aut\"),\n person(given = \"Winston\",\n family = \"Chang\",\n role = c(\"aut\", \"cre\"),\n email = \"winston@rstudio.com\"),\n person(given = \"Kirill\",\n family = \"Müller\",\n role = \"aut\",\n email = \"krlmlr+r@mailbox.org\"),\n person(given = \"Daniel\",\n family = \"Cook\",\n role = \"aut\",\n email = \"danielecook@gmail.com\"),\n person(given = \"Mark\",\n family = \"Edmondson\",\n role = \"ctb\",\n email = \"r@sunholo.com\"))", + "Description": "Cache the results of a function so that when you\n call it again with the same arguments it returns the previously computed\n value.", + "License": "MIT + file LICENSE", + "URL": "https://memoise.r-lib.org, https://github.com/r-lib/memoise", + "BugReports": "https://github.com/r-lib/memoise/issues", + "Imports": "rlang (>= 0.4.10), cachem", + "Suggests": "digest, aws.s3, covr, googleAuthR, googleCloudStorageR, httr,\ntestthat", + "Encoding": "UTF-8", + "RoxygenNote": "7.1.2", + "NeedsCompilation": "no", + "Packaged": "2021-11-24 21:24:50 UTC; jhester", + "Author": "Hadley Wickham [aut],\n Jim Hester [aut],\n Winston Chang [aut, cre],\n Kirill Müller [aut],\n Daniel Cook [aut],\n Mark Edmondson [ctb]", + "Maintainer": "Winston Chang ", + "Repository": "CRAN", + "Date/Publication": "2021-11-26 16:11:10 UTC", + "Built": "R 4.3.0; ; 2023-04-17 22:23:05 UTC; unix" + } + }, + "mime": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "mime", + "Type": "Package", + "Title": "Map Filenames to MIME Types", + "Version": "0.12", + "Authors@R": "c(\n person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")),\n person(\"Jeffrey\", \"Horner\", role = \"ctb\"),\n person(\"Beilei\", \"Bian\", role = \"ctb\")\n )", + "Description": "Guesses the MIME type from a filename extension using the data\n derived from /etc/mime.types in UNIX-type systems.", + "Imports": "tools", + "License": "GPL", + "URL": "https://github.com/yihui/mime", + "BugReports": "https://github.com/yihui/mime/issues", + "RoxygenNote": "7.1.1", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Packaged": "2021-09-28 02:06:04 UTC; yihui", + "Author": "Yihui Xie [aut, cre] (),\n Jeffrey Horner [ctb],\n Beilei Bian [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN", + "Date/Publication": "2021-09-28 05:00:05 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:09:16 UTC; unix", + "Archs": "mime.so.dSYM" + } + }, + "rappdirs": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Type": "Package", + "Package": "rappdirs", + "Title": "Application Directories: Determine Where to Save Data, Caches,\nand Logs", + "Version": "0.3.3", + "Authors@R": "\n c(person(given = \"Hadley\",\n family = \"Wickham\",\n role = c(\"trl\", \"cre\", \"cph\"),\n email = \"hadley@rstudio.com\"),\n person(given = \"RStudio\",\n role = \"cph\"),\n person(given = \"Sridhar\",\n family = \"Ratnakumar\",\n role = \"aut\"),\n person(given = \"Trent\",\n family = \"Mick\",\n role = \"aut\"),\n person(given = \"ActiveState\",\n role = \"cph\",\n comment = \"R/appdir.r, R/cache.r, R/data.r, R/log.r translated from appdirs\"),\n person(given = \"Eddy\",\n family = \"Petrisor\",\n role = \"ctb\"),\n person(given = \"Trevor\",\n family = \"Davis\",\n role = c(\"trl\", \"aut\")),\n person(given = \"Gabor\",\n family = \"Csardi\",\n role = \"ctb\"),\n person(given = \"Gregory\",\n family = \"Jefferis\",\n role = \"ctb\"))", + "Description": "An easy way to determine which directories on the\n users computer you should use to save data, caches and logs. A port of\n Python's 'Appdirs' () to\n R.", + "License": "MIT + file LICENSE", + "URL": "https://rappdirs.r-lib.org, https://github.com/r-lib/rappdirs", + "BugReports": "https://github.com/r-lib/rappdirs/issues", + "Depends": "R (>= 3.2)", + "Suggests": "roxygen2, testthat (>= 3.0.0), covr, withr", + "Copyright": "Original python appdirs module copyright (c) 2010\nActiveState Software Inc. R port copyright Hadley Wickham,\nRStudio. See file LICENSE for details.", + "Encoding": "UTF-8", + "RoxygenNote": "7.1.1", + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Packaged": "2021-01-28 22:29:57 UTC; hadley", + "Author": "Hadley Wickham [trl, cre, cph],\n RStudio [cph],\n Sridhar Ratnakumar [aut],\n Trent Mick [aut],\n ActiveState [cph] (R/appdir.r, R/cache.r, R/data.r, R/log.r translated\n from appdirs),\n Eddy Petrisor [ctb],\n Trevor Davis [trl, aut],\n Gabor Csardi [ctb],\n Gregory Jefferis [ctb]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN", + "Date/Publication": "2021-01-31 05:40:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:10:28 UTC; unix", + "Archs": "rappdirs.so.dSYM" + } + }, + "rlang": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "rlang", + "Version": "1.1.1", + "Title": "Functions for Base Types and Core R and 'Tidyverse' Features", + "Description": "A toolbox for working with base types, core R features\n like the condition system, and core 'Tidyverse' features like tidy\n evaluation.", + "Authors@R": "c(\n person(\"Lionel\", \"Henry\", ,\"lionel@posit.co\", c(\"aut\", \"cre\")),\n person(\"Hadley\", \"Wickham\", ,\"hadley@posit.co\", \"aut\"),\n person(given = \"mikefc\",\n email = \"mikefc@coolbutuseless.com\", \n role = \"cph\", \n comment = \"Hash implementation based on Mike's xxhashlite\"),\n person(given = \"Yann\",\n family = \"Collet\",\n role = \"cph\", \n comment = \"Author of the embedded xxHash library\"),\n person(given = \"Posit, PBC\", role = c(\"cph\", \"fnd\"))\n )", + "License": "MIT + file LICENSE", + "ByteCompile": "true", + "Biarch": "true", + "Depends": "R (>= 3.5.0)", + "Imports": "utils", + "Suggests": "cli (>= 3.1.0), covr, crayon, fs, glue, knitr, magrittr,\nmethods, pillar, rmarkdown, stats, testthat (>= 3.0.0), tibble,\nusethis, vctrs (>= 0.2.3), withr", + "Enhances": "winch", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "URL": "https://rlang.r-lib.org, https://github.com/r-lib/rlang", + "BugReports": "https://github.com/r-lib/rlang/issues", + "Config/testthat/edition": "3", + "Config/Needs/website": "dplyr, tidyverse/tidytemplate", + "NeedsCompilation": "yes", + "Packaged": "2023-04-28 10:48:43 UTC; lionel", + "Author": "Lionel Henry [aut, cre],\n Hadley Wickham [aut],\n mikefc [cph] (Hash implementation based on Mike's xxhashlite),\n Yann Collet [cph] (Author of the embedded xxHash library),\n Posit, PBC [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN", + "Date/Publication": "2023-04-28 22:30:03 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-30 06:48:25 UTC; unix", + "Archs": "rlang.so.dSYM" + } + }, + "rmarkdown": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Type": "Package", + "Package": "rmarkdown", + "Title": "Dynamic Documents for R", + "Version": "2.21", + "Authors@R": "c(\n person(\"JJ\", \"Allaire\", , \"jj@posit.co\", role = \"aut\"),\n person(\"Yihui\", \"Xie\", , \"xie@yihui.name\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-0645-5666\")),\n person(\"Christophe\", \"Dervieux\", , \"cderv@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4474-2498\")),\n person(\"Jonathan\", \"McPherson\", , \"jonathan@posit.co\", role = \"aut\"),\n person(\"Javier\", \"Luraschi\", role = \"aut\"),\n person(\"Kevin\", \"Ushey\", , \"kevin@posit.co\", role = \"aut\"),\n person(\"Aron\", \"Atkins\", , \"aron@posit.co\", role = \"aut\"),\n person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"),\n person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"),\n person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\"),\n person(\"Richard\", \"Iannone\", , \"rich@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-3925-190X\")),\n person(\"Andrew\", \"Dunning\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0464-5036\")),\n person(\"Atsushi\", \"Yasumoto\", role = c(\"ctb\", \"cph\"), comment = c(ORCID = \"0000-0002-8335-495X\", cph = \"Number sections Lua filter\")),\n person(\"Barret\", \"Schloerke\", role = \"ctb\"),\n person(\"Carson\", \"Sievert\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4958-2844\")), \n person(\"Devon\", \"Ryan\", , \"dpryan79@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8549-0971\")),\n person(\"Frederik\", \"Aust\", , \"frederik.aust@uni-koeln.de\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4900-788X\")),\n person(\"Jeff\", \"Allen\", , \"jeff@posit.co\", role = \"ctb\"), \n person(\"JooYoung\", \"Seo\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4064-6012\")),\n person(\"Malcolm\", \"Barrett\", role = \"ctb\"),\n person(\"Rob\", \"Hyndman\", , \"Rob.Hyndman@monash.edu\", role = \"ctb\"),\n person(\"Romain\", \"Lesur\", role = \"ctb\"),\n person(\"Roy\", \"Storey\", role = \"ctb\"),\n person(\"Ruben\", \"Arslan\", , \"ruben.arslan@uni-goettingen.de\", role = \"ctb\"),\n person(\"Sergio\", \"Oller\", role = \"ctb\"),\n person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")),\n person(, \"jQuery UI contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery UI library; authors listed in inst/rmd/h/jqueryui-AUTHORS.txt\"),\n person(\"Mark\", \"Otto\", role = \"ctb\", comment = \"Bootstrap library\"),\n person(\"Jacob\", \"Thornton\", role = \"ctb\", comment = \"Bootstrap library\"),\n person(, \"Bootstrap contributors\", role = \"ctb\", comment = \"Bootstrap library\"),\n person(, \"Twitter, Inc\", role = \"cph\", comment = \"Bootstrap library\"),\n person(\"Alexander\", \"Farkas\", role = c(\"ctb\", \"cph\"), comment = \"html5shiv library\"),\n person(\"Scott\", \"Jehl\", role = c(\"ctb\", \"cph\"), comment = \"Respond.js library\"),\n person(\"Ivan\", \"Sagalaev\", role = c(\"ctb\", \"cph\"), comment = \"highlight.js library\"),\n person(\"Greg\", \"Franko\", role = c(\"ctb\", \"cph\"), comment = \"tocify library\"),\n person(\"John\", \"MacFarlane\", role = c(\"ctb\", \"cph\"), comment = \"Pandoc templates\"),\n person(, \"Google, Inc.\", role = c(\"ctb\", \"cph\"), comment = \"ioslides library\"),\n person(\"Dave\", \"Raggett\", role = \"ctb\", comment = \"slidy library\"),\n person(, \"W3C\", role = \"cph\", comment = \"slidy library\"),\n person(\"Dave\", \"Gandy\", role = c(\"ctb\", \"cph\"), comment = \"Font-Awesome\"),\n person(\"Ben\", \"Sperry\", role = \"ctb\", comment = \"Ionicons\"),\n person(, \"Drifty\", role = \"cph\", comment = \"Ionicons\"),\n person(\"Aidan\", \"Lister\", role = c(\"ctb\", \"cph\"), comment = \"jQuery StickyTabs\"),\n person(\"Benct Philip\", \"Jonsson\", role = c(\"ctb\", \"cph\"), comment = \"pagebreak Lua filter\"),\n person(\"Albert\", \"Krewinkel\", role = c(\"ctb\", \"cph\"), comment = \"pagebreak Lua filter\")\n )", + "Maintainer": "Yihui Xie ", + "Description": "Convert R Markdown documents into a variety of formats.", + "License": "GPL-3", + "URL": "https://github.com/rstudio/rmarkdown,\nhttps://pkgs.rstudio.com/rmarkdown/", + "BugReports": "https://github.com/rstudio/rmarkdown/issues", + "Depends": "R (>= 3.0)", + "Imports": "bslib (>= 0.2.5.1), evaluate (>= 0.13), fontawesome (>=\n0.5.0), htmltools (>= 0.5.1), jquerylib, jsonlite, knitr (>=\n1.22), methods, stringr (>= 1.2.0), tinytex (>= 0.31), tools,\nutils, xfun (>= 0.36), yaml (>= 2.1.19)", + "Suggests": "digest, dygraphs, fs, rsconnect, downlit (>= 0.4.0), katex\n(>= 1.4.0), sass (>= 0.4.0), shiny (>= 1.6.0), testthat (>=\n3.0.3), tibble, vctrs, withr (>= 2.4.2)", + "VignetteBuilder": "knitr", + "Config/Needs/website": "rstudio/quillt, pkgdown", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "SystemRequirements": "pandoc (>= 1.14) - http://pandoc.org", + "NeedsCompilation": "no", + "Packaged": "2023-03-25 21:50:22 UTC; yihui", + "Author": "JJ Allaire [aut],\n Yihui Xie [aut, cre] (),\n Christophe Dervieux [aut] (),\n Jonathan McPherson [aut],\n Javier Luraschi [aut],\n Kevin Ushey [aut],\n Aron Atkins [aut],\n Hadley Wickham [aut],\n Joe Cheng [aut],\n Winston Chang [aut],\n Richard Iannone [aut] (),\n Andrew Dunning [ctb] (),\n Atsushi Yasumoto [ctb, cph] (,\n Number sections Lua filter),\n Barret Schloerke [ctb],\n Carson Sievert [ctb] (),\n Devon Ryan [ctb] (),\n Frederik Aust [ctb] (),\n Jeff Allen [ctb],\n JooYoung Seo [ctb] (),\n Malcolm Barrett [ctb],\n Rob Hyndman [ctb],\n Romain Lesur [ctb],\n Roy Storey [ctb],\n Ruben Arslan [ctb],\n Sergio Oller [ctb],\n Posit Software, PBC [cph, fnd],\n jQuery UI contributors [ctb, cph] (jQuery UI library; authors listed in\n inst/rmd/h/jqueryui-AUTHORS.txt),\n Mark Otto [ctb] (Bootstrap library),\n Jacob Thornton [ctb] (Bootstrap library),\n Bootstrap contributors [ctb] (Bootstrap library),\n Twitter, Inc [cph] (Bootstrap library),\n Alexander Farkas [ctb, cph] (html5shiv library),\n Scott Jehl [ctb, cph] (Respond.js library),\n Ivan Sagalaev [ctb, cph] (highlight.js library),\n Greg Franko [ctb, cph] (tocify library),\n John MacFarlane [ctb, cph] (Pandoc templates),\n Google, Inc. [ctb, cph] (ioslides library),\n Dave Raggett [ctb] (slidy library),\n W3C [cph] (slidy library),\n Dave Gandy [ctb, cph] (Font-Awesome),\n Ben Sperry [ctb] (Ionicons),\n Drifty [cph] (Ionicons),\n Aidan Lister [ctb, cph] (jQuery StickyTabs),\n Benct Philip Jonsson [ctb, cph] (pagebreak Lua filter),\n Albert Krewinkel [ctb, cph] (pagebreak Lua filter)", + "Repository": "CRAN", + "Date/Publication": "2023-03-26 22:00:03 UTC", + "Built": "R 4.3.0; ; 2023-05-15 19:16:40 UTC; unix" + } + }, + "sass": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Type": "Package", + "Package": "sass", + "Version": "0.4.6", + "Title": "Syntactically Awesome Style Sheets ('Sass')", + "Description": "An 'SCSS' compiler, powered by the 'LibSass' library. With this,\n R developers can use variables, inheritance, and functions to generate\n dynamic style sheets. The package uses the 'Sass CSS' extension language,\n which is stable, powerful, and CSS compatible.", + "Authors@R": "c(\n person(\"Joe\", \"Cheng\", , \"joe@rstudio.com\", \"aut\"),\n person(\"Timothy\", \"Mastny\", , \"tim.mastny@gmail.com\", \"aut\"),\n person(\"Richard\", \"Iannone\", , \"rich@rstudio.com\", \"aut\",\n comment = c(ORCID = \"0000-0003-3925-190X\")),\n person(\"Barret\", \"Schloerke\", , \"barret@rstudio.com\", \"aut\",\n comment = c(ORCID = \"0000-0001-9986-114X\")),\n person(\"Carson\", \"Sievert\", , \"carson@rstudio.com\", c(\"aut\", \"cre\"),\n comment = c(ORCID = \"0000-0002-4958-2844\")),\n person(\"Christophe\", \"Dervieux\", , \"cderv@rstudio.com\", c(\"ctb\"),\n comment = c(ORCID = \"0000-0003-4474-2498\")),\n person(family = \"RStudio\", role = c(\"cph\", \"fnd\")),\n person(family = \"Sass Open Source Foundation\", role = c(\"ctb\", \"cph\"),\n comment = \"LibSass library\"),\n person(\"Greter\", \"Marcel\", role = c(\"ctb\", \"cph\"),\n comment = \"LibSass library\"),\n person(\"Mifsud\", \"Michael\", role = c(\"ctb\", \"cph\"),\n comment = \"LibSass library\"),\n person(\"Hampton\", \"Catlin\", role = c(\"ctb\", \"cph\"),\n comment = \"LibSass library\"),\n person(\"Natalie\", \"Weizenbaum\", role = c(\"ctb\", \"cph\"),\n comment = \"LibSass library\"),\n person(\"Chris\", \"Eppstein\", role = c(\"ctb\", \"cph\"),\n comment = \"LibSass library\"),\n person(\"Adams\", \"Joseph\", role = c(\"ctb\", \"cph\"),\n comment = \"json.cpp\"),\n person(\"Trifunovic\", \"Nemanja\", role = c(\"ctb\", \"cph\"),\n comment = \"utf8.h\")\n )", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/sass/, https://github.com/rstudio/sass", + "BugReports": "https://github.com/rstudio/sass/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "SystemRequirements": "GNU make", + "Imports": "fs, rlang (>= 0.4.10), htmltools (>= 0.5.1), R6, rappdirs", + "Suggests": "testthat, knitr, rmarkdown, withr, shiny, curl", + "VignetteBuilder": "knitr", + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Packaged": "2023-05-03 22:45:10 UTC; cpsievert", + "Author": "Joe Cheng [aut],\n Timothy Mastny [aut],\n Richard Iannone [aut] (),\n Barret Schloerke [aut] (),\n Carson Sievert [aut, cre] (),\n Christophe Dervieux [ctb] (),\n RStudio [cph, fnd],\n Sass Open Source Foundation [ctb, cph] (LibSass library),\n Greter Marcel [ctb, cph] (LibSass library),\n Mifsud Michael [ctb, cph] (LibSass library),\n Hampton Catlin [ctb, cph] (LibSass library),\n Natalie Weizenbaum [ctb, cph] (LibSass library),\n Chris Eppstein [ctb, cph] (LibSass library),\n Adams Joseph [ctb, cph] (json.cpp),\n Trifunovic Nemanja [ctb, cph] (utf8.h)", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN", + "Date/Publication": "2023-05-03 23:30:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-05-04 04:35:51 UTC; unix", + "Archs": "sass.so.dSYM" + } + }, + "stringi": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "stringi", + "Version": "1.7.12", + "Date": "2023-01-09", + "Title": "Fast and Portable Character String Processing Facilities", + "Description": "A collection of character string/text/natural language\n processing tools for pattern searching (e.g., with 'Java'-like regular\n expressions or the 'Unicode' collation algorithm), random string generation,\n case mapping, string transliteration, concatenation, sorting, padding,\n wrapping, Unicode normalisation, date-time formatting and parsing,\n and many more. They are fast, consistent, convenient, and -\n thanks to 'ICU' (International Components for Unicode) -\n portable across all locales and platforms. Documentation about 'stringi' is\n provided via its website at and\n the paper by Gagolewski (2022, ).", + "URL": "https://stringi.gagolewski.com/,\nhttps://github.com/gagolews/stringi, https://icu.unicode.org/", + "BugReports": "https://github.com/gagolews/stringi/issues", + "SystemRequirements": "C++11, ICU4C (>= 55, optional)", + "Type": "Package", + "Depends": "R (>= 3.1)", + "Imports": "tools, utils, stats", + "Biarch": "TRUE", + "License": "file LICENSE", + "Author": "Marek Gagolewski [aut, cre, cph] (),\n Bartek Tartanus [ctb], and others (stringi source code);\n Unicode, Inc. and others (ICU4C source code, Unicode Character Database)", + "Maintainer": "Marek Gagolewski ", + "RoxygenNote": "7.2.1", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Packaged": "2023-01-09 07:28:38 UTC; gagolews", + "License_is_FOSS": "yes", + "Repository": "CRAN", + "Date/Publication": "2023-01-11 10:10:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:20:49 UTC; unix" + } + }, + "stringr": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "stringr", + "Title": "Simple, Consistent Wrappers for Common String Operations", + "Version": "1.5.0", + "Authors@R": "\n c(person(given = \"Hadley\",\n family = \"Wickham\",\n role = c(\"aut\", \"cre\", \"cph\"),\n email = \"hadley@rstudio.com\"),\n person(given = \"RStudio\",\n role = c(\"cph\", \"fnd\")))", + "Description": "A consistent, simple and easy to use set of wrappers around\n the fantastic 'stringi' package. All function and argument names (and\n positions) are consistent, all functions deal with \"NA\"'s and zero\n length vectors in the same way, and the output from one function is\n easy to feed into the input of another.", + "License": "MIT + file LICENSE", + "URL": "https://stringr.tidyverse.org,\nhttps://github.com/tidyverse/stringr", + "BugReports": "https://github.com/tidyverse/stringr/issues", + "Depends": "R (>= 3.3)", + "Imports": "cli, glue (>= 1.6.1), lifecycle (>= 1.0.3), magrittr, rlang\n(>= 1.0.0), stringi (>= 1.5.3), vctrs", + "Suggests": "covr, htmltools, htmlwidgets, knitr, rmarkdown, testthat (>=\n3.0.0)", + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.2.1", + "NeedsCompilation": "no", + "Packaged": "2022-12-01 20:53:42 UTC; hadleywickham", + "Author": "Hadley Wickham [aut, cre, cph],\n RStudio [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN", + "Date/Publication": "2022-12-02 10:20:02 UTC", + "Built": "R 4.3.0; ; 2023-04-12 12:50:56 UTC; unix" + } + }, + "tinytex": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "tinytex", + "Type": "Package", + "Title": "Helper Functions to Install and Maintain TeX Live, and Compile\nLaTeX Documents", + "Version": "0.45", + "Authors@R": "c(\n person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\", \"cph\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")),\n person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")),\n person(\"Christophe\", \"Dervieux\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4474-2498\")),\n person(\"Devon\", \"Ryan\", role = \"ctb\", email = \"dpryan79@gmail.com\", comment = c(ORCID = \"0000-0002-8549-0971\")),\n person(\"Ethan\", \"Heinzen\", role = \"ctb\"),\n person(\"Fernando\", \"Cagua\", role = \"ctb\"),\n person()\n )", + "Description": "Helper functions to install and maintain the 'LaTeX' distribution\n named 'TinyTeX' (), a lightweight, cross-platform,\n portable, and easy-to-maintain version of 'TeX Live'. This package also\n contains helper functions to compile 'LaTeX' documents, and install missing\n 'LaTeX' packages automatically.", + "Imports": "xfun (>= 0.29)", + "Suggests": "testit, rstudioapi", + "License": "MIT + file LICENSE", + "URL": "https://github.com/rstudio/tinytex", + "BugReports": "https://github.com/rstudio/tinytex/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Packaged": "2023-04-18 13:52:40 UTC; yihui", + "Author": "Yihui Xie [aut, cre, cph] (),\n Posit Software, PBC [cph, fnd],\n Christophe Dervieux [ctb] (),\n Devon Ryan [ctb] (),\n Ethan Heinzen [ctb],\n Fernando Cagua [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN", + "Date/Publication": "2023-04-18 14:30:07 UTC", + "Built": "R 4.3.0; ; 2023-04-22 00:31:32 UTC; unix" + } + }, + "vctrs": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "vctrs", + "Title": "Vector Helpers", + "Version": "0.6.2", + "Authors@R": "c(\n person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"),\n person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = \"aut\"),\n person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = c(\"aut\", \"cre\")),\n person(\"data.table team\", role = \"cph\",\n comment = \"Radix sort based on data.table's forder() and their contribution to R's order()\"),\n person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"))\n )", + "Description": "Defines new notions of prototype and size that are used to\n provide tools for consistent and well-founded type-coercion and\n size-recycling, and are in turn connected to ideas of type- and\n size-stability useful for analysing function interfaces.", + "License": "MIT + file LICENSE", + "URL": "https://vctrs.r-lib.org/, https://github.com/r-lib/vctrs", + "BugReports": "https://github.com/r-lib/vctrs/issues", + "Depends": "R (>= 3.5.0)", + "Imports": "cli (>= 3.4.0), glue, lifecycle (>= 1.0.3), rlang (>= 1.1.0)", + "Suggests": "bit64, covr, crayon, dplyr (>= 0.8.5), generics, knitr,\npillar (>= 1.4.4), pkgdown (>= 2.0.1), rmarkdown, testthat (>=\n3.0.0), tibble (>= 3.1.3), waldo (>= 0.2.0), withr, xml2,\nzeallot", + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-GB", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Packaged": "2023-04-19 18:24:24 UTC; davis", + "Author": "Hadley Wickham [aut],\n Lionel Henry [aut],\n Davis Vaughan [aut, cre],\n data.table team [cph] (Radix sort based on data.table's forder() and\n their contribution to R's order()),\n Posit Software, PBC [cph, fnd]", + "Maintainer": "Davis Vaughan ", + "Repository": "CRAN", + "Date/Publication": "2023-04-19 19:30:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-22 00:48:35 UTC; unix", + "Archs": "vctrs.so.dSYM" + } + }, + "xfun": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "xfun", + "Type": "Package", + "Title": "Supporting Functions for Packages Maintained by 'Yihui Xie'", + "Version": "0.39", + "Authors@R": "c(\n person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\", \"cph\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")),\n person(\"Wush\", \"Wu\", role = \"ctb\"),\n person(\"Daijiang\", \"Li\", role = \"ctb\"),\n person(\"Xianying\", \"Tan\", role = \"ctb\"),\n person(\"Salim\", \"Brüggemann\", role = \"ctb\", email = \"salim-b@pm.me\", comment = c(ORCID = \"0000-0002-5329-5987\")),\n person(\"Christophe\", \"Dervieux\", role = \"ctb\"),\n person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")),\n person()\n )", + "Description": "Miscellaneous functions commonly used in other packages maintained by 'Yihui Xie'.", + "Imports": "stats, tools", + "Suggests": "testit, parallel, codetools, rstudioapi, tinytex (>= 0.30),\nmime, markdown (>= 1.5), knitr (>= 1.42), htmltools, remotes,\npak, rhub, renv, curl, jsonlite, magick, yaml, rmarkdown", + "License": "MIT + file LICENSE", + "URL": "https://github.com/yihui/xfun", + "BugReports": "https://github.com/yihui/xfun/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "VignetteBuilder": "knitr", + "NeedsCompilation": "yes", + "Packaged": "2023-04-19 22:17:10 UTC; yihui", + "Author": "Yihui Xie [aut, cre, cph] (),\n Wush Wu [ctb],\n Daijiang Li [ctb],\n Xianying Tan [ctb],\n Salim Brüggemann [ctb] (),\n Christophe Dervieux [ctb],\n Posit Software, PBC [cph, fnd]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN", + "Date/Publication": "2023-04-20 12:50:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-22 00:00:24 UTC; unix", + "Archs": "xfun.so.dSYM" + } + }, + "yaml": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "yaml", + "Type": "Package", + "Title": "Methods to Convert R Data to YAML and Back", + "Date": "2023-01-18", + "Version": "2.3.7", + "Suggests": "RUnit", + "Author": "Shawn P Garbett [aut], Jeremy Stephens [aut, cre], Kirill Simonov [aut], Yihui Xie [ctb],\n Zhuoer Dong [ctb], Hadley Wickham [ctb], Jeffrey Horner [ctb], reikoch [ctb],\n Will Beasley [ctb], Brendan O'Connor [ctb], Gregory R. Warnes [ctb],\n Michael Quinn [ctb], Zhian N. Kamvar [ctb]", + "Maintainer": "Shawn Garbett ", + "License": "BSD_3_clause + file LICENSE", + "Description": "Implements the 'libyaml' 'YAML' 1.1 parser and emitter\n () for R.", + "URL": "https://github.com/vubiostat/r-yaml/", + "BugReports": "https://github.com/vubiostat/r-yaml/issues", + "NeedsCompilation": "yes", + "Packaged": "2023-01-18 17:20:16 UTC; garbetsp", + "Repository": "CRAN", + "Date/Publication": "2023-01-23 18:40:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-08 21:18:13 UTC; unix", + "Archs": "yaml.so.dSYM" + } + } + }, + "files": { + "_site.yml": { + "checksum": "68b329da9893e34099c7d8ad5cb9c940" + }, + ".Rprofile": { + "checksum": "0b7556db576037033836dad462da03f7" + }, + "another.Rmd": { + "checksum": "3ff73b227b8d15e2b39172402234a0b6" + }, + "article.Rmd": { + "checksum": "c41a63e581ccf14e6e00ef8dab979765" + }, + "index.Rmd": { + "checksum": "c85dc46c45a93df8010830d238e4ff75" + }, + "meta.yaml": { + "checksum": "0824e67d283b321ee84d16fd194625d8" + } + }, + "users": null +} diff --git a/internal/inspect/detectors/testdata/rmd-site/meta.yaml b/internal/inspect/detectors/testdata/rmd-site/meta.yaml new file mode 100644 index 000000000..21c54d290 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site/meta.yaml @@ -0,0 +1,10 @@ +tags: + - provisioner + - r + - rmd + - site + - static + - dev-env + - small-dev-env + - regression + - all diff --git a/internal/inspect/detectors/testdata/rmd-site/renv.lock b/internal/inspect/detectors/testdata/rmd-site/renv.lock new file mode 100644 index 000000000..54fd9f537 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site/renv.lock @@ -0,0 +1,398 @@ +{ + "R": { + "Version": "4.3.1", + "Repositories": [ + { + "Name": "CRAN", + "URL": "https://packagemanager.posit.co/cran/latest" + } + ] + }, + "Packages": { + "R6": { + "Package": "R6", + "Version": "2.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "470851b6d5d0ac559e9d01bb352b4021" + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "543776ae6848fde2f48ff3816d0628bc" + }, + "bslib": { + "Package": "bslib", + "Version": "0.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "base64enc", + "cachem", + "grDevices", + "htmltools", + "jquerylib", + "jsonlite", + "memoise", + "mime", + "rlang", + "sass" + ], + "Hash": "283015ddfbb9d7bf15ea9f0b5698f0d9" + }, + "cachem": { + "Package": "cachem", + "Version": "1.0.8", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "fastmap", + "rlang" + ], + "Hash": "c35768291560ce302c0a6589f92e837d" + }, + "cli": { + "Package": "cli", + "Version": "3.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "1216ac65ac55ec0058a6f75d7ca0fd52" + }, + "digest": { + "Package": "digest", + "Version": "0.6.35", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "698ece7ba5a4fa4559e3d537e7ec3d31" + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "rlang" + ], + "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077" + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.22", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "66f39c7a21e03c4dcb2c2d21d738d603" + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f7736a18de97dea803bde0a2daaafb27" + }, + "fontawesome": { + "Package": "fontawesome", + "Version": "0.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "htmltools", + "rlang" + ], + "Hash": "c2efdd5f0bcd1ea861c2d4e2a883a67d" + }, + "fs": { + "Package": "fs", + "Version": "1.6.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "15aeb8c27f5ea5161f9f6a641fafd93a" + }, + "glue": { + "Package": "glue", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "e0b3a53876554bd45879e596cdb10a52" + }, + "highr": { + "Package": "highr", + "Version": "0.10", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "xfun" + ], + "Hash": "06230136b2d2b9ba5805e1963fa6e890" + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "base64enc", + "digest", + "ellipsis", + "fastmap", + "grDevices", + "rlang", + "utils" + ], + "Hash": "a2326a66919a3311f7fbb1e3bf568283" + }, + "jquerylib": { + "Package": "jquerylib", + "Version": "0.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "htmltools" + ], + "Hash": "5aab57a3bd297eee1c1d862735972182" + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.8.8", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "methods" + ], + "Hash": "e1b9c55281c5adc4dd113652d9e26768" + }, + "knitr": { + "Package": "knitr", + "Version": "1.44", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "evaluate", + "highr", + "methods", + "tools", + "xfun", + "yaml" + ], + "Hash": "60885b9f746c9dfaef110d070b5f7dc0" + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "rlang" + ], + "Hash": "b8552d117e1b808b09a832f589b79035" + }, + "magrittr": { + "Package": "magrittr", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "7ce2733a9826b3aeb1775d56fd305472" + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "cachem", + "rlang" + ], + "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c" + }, + "mime": { + "Package": "mime", + "Version": "0.12", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "tools" + ], + "Hash": "18e9c28c1d3ca1560ce30658b22ce104" + }, + "rappdirs": { + "Package": "rappdirs", + "Version": "0.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "5e3c5dc0b071b21fa128676560dbe94d" + }, + "renv": { + "Package": "renv", + "Version": "1.0.7", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "utils" + ], + "Hash": "397b7b2a265bc5a7a06852524dabae20" + }, + "rlang": { + "Package": "rlang", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "42548638fae05fd9a9b5f3f437fbbbe2" + }, + "rmarkdown": { + "Package": "rmarkdown", + "Version": "2.25", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "bslib", + "evaluate", + "fontawesome", + "htmltools", + "jquerylib", + "jsonlite", + "knitr", + "methods", + "stringr", + "tinytex", + "tools", + "utils", + "xfun", + "yaml" + ], + "Hash": "d65e35823c817f09f4de424fcdfa812a" + }, + "sass": { + "Package": "sass", + "Version": "0.4.7", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R6", + "fs", + "htmltools", + "rappdirs", + "rlang" + ], + "Hash": "6bd4d33b50ff927191ec9acbf52fd056" + }, + "stringi": { + "Package": "stringi", + "Version": "1.7.12", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats", + "tools", + "utils" + ], + "Hash": "ca8bd84263c77310739d2cf64d84d7c9" + }, + "stringr": { + "Package": "stringr", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "magrittr", + "rlang", + "stringi", + "vctrs" + ], + "Hash": "671a4d384ae9d32fc47a14e98bfa3dc8" + }, + "tinytex": { + "Package": "tinytex", + "Version": "0.47", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "xfun" + ], + "Hash": "8d4ccb733843e513c1c1cdd66a759f0d" + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.6.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "rlang" + ], + "Hash": "c03fa420630029418f7e6da3667aac4a" + }, + "xfun": { + "Package": "xfun", + "Version": "0.40", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "stats", + "tools" + ], + "Hash": "be07d23211245fc7d4209f54c4e4ffc8" + }, + "yaml": { + "Package": "yaml", + "Version": "2.3.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "29240487a071f535f5e5d5a323b7afbd" + } + } +} diff --git a/internal/inspect/detectors/testdata/rmd-site/renv/.gitignore b/internal/inspect/detectors/testdata/rmd-site/renv/.gitignore new file mode 100644 index 000000000..0ec0cbba2 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site/renv/.gitignore @@ -0,0 +1,7 @@ +library/ +local/ +cellar/ +lock/ +python/ +sandbox/ +staging/ diff --git a/internal/inspect/detectors/testdata/rmd-site/renv/activate.R b/internal/inspect/detectors/testdata/rmd-site/renv/activate.R new file mode 100644 index 000000000..d13f9932a --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site/renv/activate.R @@ -0,0 +1,1220 @@ + +local({ + + # the requested version of renv + version <- "1.0.7" + attr(version, "sha") <- NULL + + # the project directory + project <- Sys.getenv("RENV_PROJECT") + if (!nzchar(project)) + project <- getwd() + + # use start-up diagnostics if enabled + diagnostics <- Sys.getenv("RENV_STARTUP_DIAGNOSTICS", unset = "FALSE") + if (diagnostics) { + start <- Sys.time() + profile <- tempfile("renv-startup-", fileext = ".Rprof") + utils::Rprof(profile) + on.exit({ + utils::Rprof(NULL) + elapsed <- signif(difftime(Sys.time(), start, units = "auto"), digits = 2L) + writeLines(sprintf("- renv took %s to run the autoloader.", format(elapsed))) + writeLines(sprintf("- Profile: %s", profile)) + print(utils::summaryRprof(profile)) + }, add = TRUE) + } + + # figure out whether the autoloader is enabled + enabled <- local({ + + # first, check config option + override <- getOption("renv.config.autoloader.enabled") + if (!is.null(override)) + return(override) + + # if we're being run in a context where R_LIBS is already set, + # don't load -- presumably we're being run as a sub-process and + # the parent process has already set up library paths for us + rcmd <- Sys.getenv("R_CMD", unset = NA) + rlibs <- Sys.getenv("R_LIBS", unset = NA) + if (!is.na(rlibs) && !is.na(rcmd)) + return(FALSE) + + # next, check environment variables + # TODO: prefer using the configuration one in the future + envvars <- c( + "RENV_CONFIG_AUTOLOADER_ENABLED", + "RENV_AUTOLOADER_ENABLED", + "RENV_ACTIVATE_PROJECT" + ) + + for (envvar in envvars) { + envval <- Sys.getenv(envvar, unset = NA) + if (!is.na(envval)) + return(tolower(envval) %in% c("true", "t", "1")) + } + + # enable by default + TRUE + + }) + + # bail if we're not enabled + if (!enabled) { + + # if we're not enabled, we might still need to manually load + # the user profile here + profile <- Sys.getenv("R_PROFILE_USER", unset = "~/.Rprofile") + if (file.exists(profile)) { + cfg <- Sys.getenv("RENV_CONFIG_USER_PROFILE", unset = "TRUE") + if (tolower(cfg) %in% c("true", "t", "1")) + sys.source(profile, envir = globalenv()) + } + + return(FALSE) + + } + + # avoid recursion + if (identical(getOption("renv.autoloader.running"), TRUE)) { + warning("ignoring recursive attempt to run renv autoloader") + return(invisible(TRUE)) + } + + # signal that we're loading renv during R startup + options(renv.autoloader.running = TRUE) + on.exit(options(renv.autoloader.running = NULL), add = TRUE) + + # signal that we've consented to use renv + options(renv.consent = TRUE) + + # load the 'utils' package eagerly -- this ensures that renv shims, which + # mask 'utils' packages, will come first on the search path + library(utils, lib.loc = .Library) + + # unload renv if it's already been loaded + if ("renv" %in% loadedNamespaces()) + unloadNamespace("renv") + + # load bootstrap tools + `%||%` <- function(x, y) { + if (is.null(x)) y else x + } + + catf <- function(fmt, ..., appendLF = TRUE) { + + quiet <- getOption("renv.bootstrap.quiet", default = FALSE) + if (quiet) + return(invisible()) + + msg <- sprintf(fmt, ...) + cat(msg, file = stdout(), sep = if (appendLF) "\n" else "") + + invisible(msg) + + } + + header <- function(label, + ..., + prefix = "#", + suffix = "-", + n = min(getOption("width"), 78)) + { + label <- sprintf(label, ...) + n <- max(n - nchar(label) - nchar(prefix) - 2L, 8L) + if (n <= 0) + return(paste(prefix, label)) + + tail <- paste(rep.int(suffix, n), collapse = "") + paste0(prefix, " ", label, " ", tail) + + } + + heredoc <- function(text, leave = 0) { + + # remove leading, trailing whitespace + trimmed <- gsub("^\\s*\\n|\\n\\s*$", "", text) + + # split into lines + lines <- strsplit(trimmed, "\n", fixed = TRUE)[[1L]] + + # compute common indent + indent <- regexpr("[^[:space:]]", lines) + common <- min(setdiff(indent, -1L)) - leave + paste(substring(lines, common), collapse = "\n") + + } + + startswith <- function(string, prefix) { + substring(string, 1, nchar(prefix)) == prefix + } + + bootstrap <- function(version, library) { + + friendly <- renv_bootstrap_version_friendly(version) + section <- header(sprintf("Bootstrapping renv %s", friendly)) + catf(section) + + # attempt to download renv + catf("- Downloading renv ... ", appendLF = FALSE) + withCallingHandlers( + tarball <- renv_bootstrap_download(version), + error = function(err) { + catf("FAILED") + stop("failed to download:\n", conditionMessage(err)) + } + ) + catf("OK") + on.exit(unlink(tarball), add = TRUE) + + # now attempt to install + catf("- Installing renv ... ", appendLF = FALSE) + withCallingHandlers( + status <- renv_bootstrap_install(version, tarball, library), + error = function(err) { + catf("FAILED") + stop("failed to install:\n", conditionMessage(err)) + } + ) + catf("OK") + + # add empty line to break up bootstrapping from normal output + catf("") + + return(invisible()) + } + + renv_bootstrap_tests_running <- function() { + getOption("renv.tests.running", default = FALSE) + } + + renv_bootstrap_repos <- function() { + + # get CRAN repository + cran <- getOption("renv.repos.cran", "https://cloud.r-project.org") + + # check for repos override + repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) + if (!is.na(repos)) { + + # check for RSPM; if set, use a fallback repository for renv + rspm <- Sys.getenv("RSPM", unset = NA) + if (identical(rspm, repos)) + repos <- c(RSPM = rspm, CRAN = cran) + + return(repos) + + } + + # check for lockfile repositories + repos <- tryCatch(renv_bootstrap_repos_lockfile(), error = identity) + if (!inherits(repos, "error") && length(repos)) + return(repos) + + # retrieve current repos + repos <- getOption("repos") + + # ensure @CRAN@ entries are resolved + repos[repos == "@CRAN@"] <- cran + + # add in renv.bootstrap.repos if set + default <- c(FALLBACK = "https://cloud.r-project.org") + extra <- getOption("renv.bootstrap.repos", default = default) + repos <- c(repos, extra) + + # remove duplicates that might've snuck in + dupes <- duplicated(repos) | duplicated(names(repos)) + repos[!dupes] + + } + + renv_bootstrap_repos_lockfile <- function() { + + lockpath <- Sys.getenv("RENV_PATHS_LOCKFILE", unset = "renv.lock") + if (!file.exists(lockpath)) + return(NULL) + + lockfile <- tryCatch(renv_json_read(lockpath), error = identity) + if (inherits(lockfile, "error")) { + warning(lockfile) + return(NULL) + } + + repos <- lockfile$R$Repositories + if (length(repos) == 0) + return(NULL) + + keys <- vapply(repos, `[[`, "Name", FUN.VALUE = character(1)) + vals <- vapply(repos, `[[`, "URL", FUN.VALUE = character(1)) + names(vals) <- keys + + return(vals) + + } + + renv_bootstrap_download <- function(version) { + + sha <- attr(version, "sha", exact = TRUE) + + methods <- if (!is.null(sha)) { + + # attempting to bootstrap a development version of renv + c( + function() renv_bootstrap_download_tarball(sha), + function() renv_bootstrap_download_github(sha) + ) + + } else { + + # attempting to bootstrap a release version of renv + c( + function() renv_bootstrap_download_tarball(version), + function() renv_bootstrap_download_cran_latest(version), + function() renv_bootstrap_download_cran_archive(version) + ) + + } + + for (method in methods) { + path <- tryCatch(method(), error = identity) + if (is.character(path) && file.exists(path)) + return(path) + } + + stop("All download methods failed") + + } + + renv_bootstrap_download_impl <- function(url, destfile) { + + mode <- "wb" + + # https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17715 + fixup <- + Sys.info()[["sysname"]] == "Windows" && + substring(url, 1L, 5L) == "file:" + + if (fixup) + mode <- "w+b" + + args <- list( + url = url, + destfile = destfile, + mode = mode, + quiet = TRUE + ) + + if ("headers" %in% names(formals(utils::download.file))) + args$headers <- renv_bootstrap_download_custom_headers(url) + + do.call(utils::download.file, args) + + } + + renv_bootstrap_download_custom_headers <- function(url) { + + headers <- getOption("renv.download.headers") + if (is.null(headers)) + return(character()) + + if (!is.function(headers)) + stopf("'renv.download.headers' is not a function") + + headers <- headers(url) + if (length(headers) == 0L) + return(character()) + + if (is.list(headers)) + headers <- unlist(headers, recursive = FALSE, use.names = TRUE) + + ok <- + is.character(headers) && + is.character(names(headers)) && + all(nzchar(names(headers))) + + if (!ok) + stop("invocation of 'renv.download.headers' did not return a named character vector") + + headers + + } + + renv_bootstrap_download_cran_latest <- function(version) { + + spec <- renv_bootstrap_download_cran_latest_find(version) + type <- spec$type + repos <- spec$repos + + baseurl <- utils::contrib.url(repos = repos, type = type) + ext <- if (identical(type, "source")) + ".tar.gz" + else if (Sys.info()[["sysname"]] == "Windows") + ".zip" + else + ".tgz" + name <- sprintf("renv_%s%s", version, ext) + url <- paste(baseurl, name, sep = "/") + + destfile <- file.path(tempdir(), name) + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (inherits(status, "condition")) + return(FALSE) + + # report success and return + destfile + + } + + renv_bootstrap_download_cran_latest_find <- function(version) { + + # check whether binaries are supported on this system + binary <- + getOption("renv.bootstrap.binary", default = TRUE) && + !identical(.Platform$pkgType, "source") && + !identical(getOption("pkgType"), "source") && + Sys.info()[["sysname"]] %in% c("Darwin", "Windows") + + types <- c(if (binary) "binary", "source") + + # iterate over types + repositories + for (type in types) { + for (repos in renv_bootstrap_repos()) { + + # retrieve package database + db <- tryCatch( + as.data.frame( + utils::available.packages(type = type, repos = repos), + stringsAsFactors = FALSE + ), + error = identity + ) + + if (inherits(db, "error")) + next + + # check for compatible entry + entry <- db[db$Package %in% "renv" & db$Version %in% version, ] + if (nrow(entry) == 0) + next + + # found it; return spec to caller + spec <- list(entry = entry, type = type, repos = repos) + return(spec) + + } + } + + # if we got here, we failed to find renv + fmt <- "renv %s is not available from your declared package repositories" + stop(sprintf(fmt, version)) + + } + + renv_bootstrap_download_cran_archive <- function(version) { + + name <- sprintf("renv_%s.tar.gz", version) + repos <- renv_bootstrap_repos() + urls <- file.path(repos, "src/contrib/Archive/renv", name) + destfile <- file.path(tempdir(), name) + + for (url in urls) { + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (identical(status, 0L)) + return(destfile) + + } + + return(FALSE) + + } + + renv_bootstrap_download_tarball <- function(version) { + + # if the user has provided the path to a tarball via + # an environment variable, then use it + tarball <- Sys.getenv("RENV_BOOTSTRAP_TARBALL", unset = NA) + if (is.na(tarball)) + return() + + # allow directories + if (dir.exists(tarball)) { + name <- sprintf("renv_%s.tar.gz", version) + tarball <- file.path(tarball, name) + } + + # bail if it doesn't exist + if (!file.exists(tarball)) { + + # let the user know we weren't able to honour their request + fmt <- "- RENV_BOOTSTRAP_TARBALL is set (%s) but does not exist." + msg <- sprintf(fmt, tarball) + warning(msg) + + # bail + return() + + } + + catf("- Using local tarball '%s'.", tarball) + tarball + + } + + renv_bootstrap_download_github <- function(version) { + + enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE") + if (!identical(enabled, "TRUE")) + return(FALSE) + + # prepare download options + pat <- Sys.getenv("GITHUB_PAT") + if (nzchar(Sys.which("curl")) && nzchar(pat)) { + fmt <- "--location --fail --header \"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "curl", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } else if (nzchar(Sys.which("wget")) && nzchar(pat)) { + fmt <- "--header=\"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "wget", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } + + url <- file.path("https://api.github.com/repos/rstudio/renv/tarball", version) + name <- sprintf("renv_%s.tar.gz", version) + destfile <- file.path(tempdir(), name) + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (!identical(status, 0L)) + return(FALSE) + + renv_bootstrap_download_augment(destfile) + + return(destfile) + + } + + # Add Sha to DESCRIPTION. This is stop gap until #890, after which we + # can use renv::install() to fully capture metadata. + renv_bootstrap_download_augment <- function(destfile) { + sha <- renv_bootstrap_git_extract_sha1_tar(destfile) + if (is.null(sha)) { + return() + } + + # Untar + tempdir <- tempfile("renv-github-") + on.exit(unlink(tempdir, recursive = TRUE), add = TRUE) + untar(destfile, exdir = tempdir) + pkgdir <- dir(tempdir, full.names = TRUE)[[1]] + + # Modify description + desc_path <- file.path(pkgdir, "DESCRIPTION") + desc_lines <- readLines(desc_path) + remotes_fields <- c( + "RemoteType: github", + "RemoteHost: api.github.com", + "RemoteRepo: renv", + "RemoteUsername: rstudio", + "RemotePkgRef: rstudio/renv", + paste("RemoteRef: ", sha), + paste("RemoteSha: ", sha) + ) + writeLines(c(desc_lines[desc_lines != ""], remotes_fields), con = desc_path) + + # Re-tar + local({ + old <- setwd(tempdir) + on.exit(setwd(old), add = TRUE) + + tar(destfile, compression = "gzip") + }) + invisible() + } + + # Extract the commit hash from a git archive. Git archives include the SHA1 + # hash as the comment field of the tarball pax extended header + # (see https://www.kernel.org/pub/software/scm/git/docs/git-archive.html) + # For GitHub archives this should be the first header after the default one + # (512 byte) header. + renv_bootstrap_git_extract_sha1_tar <- function(bundle) { + + # open the bundle for reading + # We use gzcon for everything because (from ?gzcon) + # > Reading from a connection which does not supply a 'gzip' magic + # > header is equivalent to reading from the original connection + conn <- gzcon(file(bundle, open = "rb", raw = TRUE)) + on.exit(close(conn)) + + # The default pax header is 512 bytes long and the first pax extended header + # with the comment should be 51 bytes long + # `52 comment=` (11 chars) + 40 byte SHA1 hash + len <- 0x200 + 0x33 + res <- rawToChar(readBin(conn, "raw", n = len)[0x201:len]) + + if (grepl("^52 comment=", res)) { + sub("52 comment=", "", res) + } else { + NULL + } + } + + renv_bootstrap_install <- function(version, tarball, library) { + + # attempt to install it into project library + dir.create(library, showWarnings = FALSE, recursive = TRUE) + output <- renv_bootstrap_install_impl(library, tarball) + + # check for successful install + status <- attr(output, "status") + if (is.null(status) || identical(status, 0L)) + return(status) + + # an error occurred; report it + header <- "installation of renv failed" + lines <- paste(rep.int("=", nchar(header)), collapse = "") + text <- paste(c(header, lines, output), collapse = "\n") + stop(text) + + } + + renv_bootstrap_install_impl <- function(library, tarball) { + + # invoke using system2 so we can capture and report output + bin <- R.home("bin") + exe <- if (Sys.info()[["sysname"]] == "Windows") "R.exe" else "R" + R <- file.path(bin, exe) + + args <- c( + "--vanilla", "CMD", "INSTALL", "--no-multiarch", + "-l", shQuote(path.expand(library)), + shQuote(path.expand(tarball)) + ) + + system2(R, args, stdout = TRUE, stderr = TRUE) + + } + + renv_bootstrap_platform_prefix <- function() { + + # construct version prefix + version <- paste(R.version$major, R.version$minor, sep = ".") + prefix <- paste("R", numeric_version(version)[1, 1:2], sep = "-") + + # include SVN revision for development versions of R + # (to avoid sharing platform-specific artefacts with released versions of R) + devel <- + identical(R.version[["status"]], "Under development (unstable)") || + identical(R.version[["nickname"]], "Unsuffered Consequences") + + if (devel) + prefix <- paste(prefix, R.version[["svn rev"]], sep = "-r") + + # build list of path components + components <- c(prefix, R.version$platform) + + # include prefix if provided by user + prefix <- renv_bootstrap_platform_prefix_impl() + if (!is.na(prefix) && nzchar(prefix)) + components <- c(prefix, components) + + # build prefix + paste(components, collapse = "/") + + } + + renv_bootstrap_platform_prefix_impl <- function() { + + # if an explicit prefix has been supplied, use it + prefix <- Sys.getenv("RENV_PATHS_PREFIX", unset = NA) + if (!is.na(prefix)) + return(prefix) + + # if the user has requested an automatic prefix, generate it + auto <- Sys.getenv("RENV_PATHS_PREFIX_AUTO", unset = NA) + if (is.na(auto) && getRversion() >= "4.4.0") + auto <- "TRUE" + + if (auto %in% c("TRUE", "True", "true", "1")) + return(renv_bootstrap_platform_prefix_auto()) + + # empty string on failure + "" + + } + + renv_bootstrap_platform_prefix_auto <- function() { + + prefix <- tryCatch(renv_bootstrap_platform_os(), error = identity) + if (inherits(prefix, "error") || prefix %in% "unknown") { + + msg <- paste( + "failed to infer current operating system", + "please file a bug report at https://github.com/rstudio/renv/issues", + sep = "; " + ) + + warning(msg) + + } + + prefix + + } + + renv_bootstrap_platform_os <- function() { + + sysinfo <- Sys.info() + sysname <- sysinfo[["sysname"]] + + # handle Windows + macOS up front + if (sysname == "Windows") + return("windows") + else if (sysname == "Darwin") + return("macos") + + # check for os-release files + for (file in c("/etc/os-release", "/usr/lib/os-release")) + if (file.exists(file)) + return(renv_bootstrap_platform_os_via_os_release(file, sysinfo)) + + # check for redhat-release files + if (file.exists("/etc/redhat-release")) + return(renv_bootstrap_platform_os_via_redhat_release()) + + "unknown" + + } + + renv_bootstrap_platform_os_via_os_release <- function(file, sysinfo) { + + # read /etc/os-release + release <- utils::read.table( + file = file, + sep = "=", + quote = c("\"", "'"), + col.names = c("Key", "Value"), + comment.char = "#", + stringsAsFactors = FALSE + ) + + vars <- as.list(release$Value) + names(vars) <- release$Key + + # get os name + os <- tolower(sysinfo[["sysname"]]) + + # read id + id <- "unknown" + for (field in c("ID", "ID_LIKE")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + id <- vars[[field]] + break + } + } + + # read version + version <- "unknown" + for (field in c("UBUNTU_CODENAME", "VERSION_CODENAME", "VERSION_ID", "BUILD_ID")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + version <- vars[[field]] + break + } + } + + # join together + paste(c(os, id, version), collapse = "-") + + } + + renv_bootstrap_platform_os_via_redhat_release <- function() { + + # read /etc/redhat-release + contents <- readLines("/etc/redhat-release", warn = FALSE) + + # infer id + id <- if (grepl("centos", contents, ignore.case = TRUE)) + "centos" + else if (grepl("redhat", contents, ignore.case = TRUE)) + "redhat" + else + "unknown" + + # try to find a version component (very hacky) + version <- "unknown" + + parts <- strsplit(contents, "[[:space:]]")[[1L]] + for (part in parts) { + + nv <- tryCatch(numeric_version(part), error = identity) + if (inherits(nv, "error")) + next + + version <- nv[1, 1] + break + + } + + paste(c("linux", id, version), collapse = "-") + + } + + renv_bootstrap_library_root_name <- function(project) { + + # use project name as-is if requested + asis <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT_ASIS", unset = "FALSE") + if (asis) + return(basename(project)) + + # otherwise, disambiguate based on project's path + id <- substring(renv_bootstrap_hash_text(project), 1L, 8L) + paste(basename(project), id, sep = "-") + + } + + renv_bootstrap_library_root <- function(project) { + + prefix <- renv_bootstrap_profile_prefix() + + path <- Sys.getenv("RENV_PATHS_LIBRARY", unset = NA) + if (!is.na(path)) + return(paste(c(path, prefix), collapse = "/")) + + path <- renv_bootstrap_library_root_impl(project) + if (!is.null(path)) { + name <- renv_bootstrap_library_root_name(project) + return(paste(c(path, prefix, name), collapse = "/")) + } + + renv_bootstrap_paths_renv("library", project = project) + + } + + renv_bootstrap_library_root_impl <- function(project) { + + root <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA) + if (!is.na(root)) + return(root) + + type <- renv_bootstrap_project_type(project) + if (identical(type, "package")) { + userdir <- renv_bootstrap_user_dir() + return(file.path(userdir, "library")) + } + + } + + renv_bootstrap_validate_version <- function(version, description = NULL) { + + # resolve description file + # + # avoid passing lib.loc to `packageDescription()` below, since R will + # use the loaded version of the package by default anyhow. note that + # this function should only be called after 'renv' is loaded + # https://github.com/rstudio/renv/issues/1625 + description <- description %||% packageDescription("renv") + + # check whether requested version 'version' matches loaded version of renv + sha <- attr(version, "sha", exact = TRUE) + valid <- if (!is.null(sha)) + renv_bootstrap_validate_version_dev(sha, description) + else + renv_bootstrap_validate_version_release(version, description) + + if (valid) + return(TRUE) + + # the loaded version of renv doesn't match the requested version; + # give the user instructions on how to proceed + dev <- identical(description[["RemoteType"]], "github") + remote <- if (dev) + paste("rstudio/renv", description[["RemoteSha"]], sep = "@") + else + paste("renv", description[["Version"]], sep = "@") + + # display both loaded version + sha if available + friendly <- renv_bootstrap_version_friendly( + version = description[["Version"]], + sha = if (dev) description[["RemoteSha"]] + ) + + fmt <- heredoc(" + renv %1$s was loaded from project library, but this project is configured to use renv %2$s. + - Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile. + - Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library. + ") + catf(fmt, friendly, renv_bootstrap_version_friendly(version), remote) + + FALSE + + } + + renv_bootstrap_validate_version_dev <- function(version, description) { + expected <- description[["RemoteSha"]] + is.character(expected) && startswith(expected, version) + } + + renv_bootstrap_validate_version_release <- function(version, description) { + expected <- description[["Version"]] + is.character(expected) && identical(expected, version) + } + + renv_bootstrap_hash_text <- function(text) { + + hashfile <- tempfile("renv-hash-") + on.exit(unlink(hashfile), add = TRUE) + + writeLines(text, con = hashfile) + tools::md5sum(hashfile) + + } + + renv_bootstrap_load <- function(project, libpath, version) { + + # try to load renv from the project library + if (!requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) + return(FALSE) + + # warn if the version of renv loaded does not match + renv_bootstrap_validate_version(version) + + # execute renv load hooks, if any + hooks <- getHook("renv::autoload") + for (hook in hooks) + if (is.function(hook)) + tryCatch(hook(), error = warnify) + + # load the project + renv::load(project) + + TRUE + + } + + renv_bootstrap_profile_load <- function(project) { + + # if RENV_PROFILE is already set, just use that + profile <- Sys.getenv("RENV_PROFILE", unset = NA) + if (!is.na(profile) && nzchar(profile)) + return(profile) + + # check for a profile file (nothing to do if it doesn't exist) + path <- renv_bootstrap_paths_renv("profile", profile = FALSE, project = project) + if (!file.exists(path)) + return(NULL) + + # read the profile, and set it if it exists + contents <- readLines(path, warn = FALSE) + if (length(contents) == 0L) + return(NULL) + + # set RENV_PROFILE + profile <- contents[[1L]] + if (!profile %in% c("", "default")) + Sys.setenv(RENV_PROFILE = profile) + + profile + + } + + renv_bootstrap_profile_prefix <- function() { + profile <- renv_bootstrap_profile_get() + if (!is.null(profile)) + return(file.path("profiles", profile, "renv")) + } + + renv_bootstrap_profile_get <- function() { + profile <- Sys.getenv("RENV_PROFILE", unset = "") + renv_bootstrap_profile_normalize(profile) + } + + renv_bootstrap_profile_set <- function(profile) { + profile <- renv_bootstrap_profile_normalize(profile) + if (is.null(profile)) + Sys.unsetenv("RENV_PROFILE") + else + Sys.setenv(RENV_PROFILE = profile) + } + + renv_bootstrap_profile_normalize <- function(profile) { + + if (is.null(profile) || profile %in% c("", "default")) + return(NULL) + + profile + + } + + renv_bootstrap_path_absolute <- function(path) { + + substr(path, 1L, 1L) %in% c("~", "/", "\\") || ( + substr(path, 1L, 1L) %in% c(letters, LETTERS) && + substr(path, 2L, 3L) %in% c(":/", ":\\") + ) + + } + + renv_bootstrap_paths_renv <- function(..., profile = TRUE, project = NULL) { + renv <- Sys.getenv("RENV_PATHS_RENV", unset = "renv") + root <- if (renv_bootstrap_path_absolute(renv)) NULL else project + prefix <- if (profile) renv_bootstrap_profile_prefix() + components <- c(root, renv, prefix, ...) + paste(components, collapse = "/") + } + + renv_bootstrap_project_type <- function(path) { + + descpath <- file.path(path, "DESCRIPTION") + if (!file.exists(descpath)) + return("unknown") + + desc <- tryCatch( + read.dcf(descpath, all = TRUE), + error = identity + ) + + if (inherits(desc, "error")) + return("unknown") + + type <- desc$Type + if (!is.null(type)) + return(tolower(type)) + + package <- desc$Package + if (!is.null(package)) + return("package") + + "unknown" + + } + + renv_bootstrap_user_dir <- function() { + dir <- renv_bootstrap_user_dir_impl() + path.expand(chartr("\\", "/", dir)) + } + + renv_bootstrap_user_dir_impl <- function() { + + # use local override if set + override <- getOption("renv.userdir.override") + if (!is.null(override)) + return(override) + + # use R_user_dir if available + tools <- asNamespace("tools") + if (is.function(tools$R_user_dir)) + return(tools$R_user_dir("renv", "cache")) + + # try using our own backfill for older versions of R + envvars <- c("R_USER_CACHE_DIR", "XDG_CACHE_HOME") + for (envvar in envvars) { + root <- Sys.getenv(envvar, unset = NA) + if (!is.na(root)) + return(file.path(root, "R/renv")) + } + + # use platform-specific default fallbacks + if (Sys.info()[["sysname"]] == "Windows") + file.path(Sys.getenv("LOCALAPPDATA"), "R/cache/R/renv") + else if (Sys.info()[["sysname"]] == "Darwin") + "~/Library/Caches/org.R-project.R/R/renv" + else + "~/.cache/R/renv" + + } + + renv_bootstrap_version_friendly <- function(version, shafmt = NULL, sha = NULL) { + sha <- sha %||% attr(version, "sha", exact = TRUE) + parts <- c(version, sprintf(shafmt %||% " [sha: %s]", substring(sha, 1L, 7L))) + paste(parts, collapse = "") + } + + renv_bootstrap_exec <- function(project, libpath, version) { + if (!renv_bootstrap_load(project, libpath, version)) + renv_bootstrap_run(version, libpath) + } + + renv_bootstrap_run <- function(version, libpath) { + + # perform bootstrap + bootstrap(version, libpath) + + # exit early if we're just testing bootstrap + if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA))) + return(TRUE) + + # try again to load + if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { + return(renv::load(project = getwd())) + } + + # failed to download or load renv; warn the user + msg <- c( + "Failed to find an renv installation: the project will not be loaded.", + "Use `renv::activate()` to re-initialize the project." + ) + + warning(paste(msg, collapse = "\n"), call. = FALSE) + + } + + renv_json_read <- function(file = NULL, text = NULL) { + + jlerr <- NULL + + # if jsonlite is loaded, use that instead + if ("jsonlite" %in% loadedNamespaces()) { + + json <- tryCatch(renv_json_read_jsonlite(file, text), error = identity) + if (!inherits(json, "error")) + return(json) + + jlerr <- json + + } + + # otherwise, fall back to the default JSON reader + json <- tryCatch(renv_json_read_default(file, text), error = identity) + if (!inherits(json, "error")) + return(json) + + # report an error + if (!is.null(jlerr)) + stop(jlerr) + else + stop(json) + + } + + renv_json_read_jsonlite <- function(file = NULL, text = NULL) { + text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") + jsonlite::fromJSON(txt = text, simplifyVector = FALSE) + } + + renv_json_read_default <- function(file = NULL, text = NULL) { + + # find strings in the JSON + text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") + pattern <- '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + locs <- gregexpr(pattern, text, perl = TRUE)[[1]] + + # if any are found, replace them with placeholders + replaced <- text + strings <- character() + replacements <- character() + + if (!identical(c(locs), -1L)) { + + # get the string values + starts <- locs + ends <- locs + attr(locs, "match.length") - 1L + strings <- substring(text, starts, ends) + + # only keep those requiring escaping + strings <- grep("[[\\]{}:]", strings, perl = TRUE, value = TRUE) + + # compute replacements + replacements <- sprintf('"\032%i\032"', seq_along(strings)) + + # replace the strings + mapply(function(string, replacement) { + replaced <<- sub(string, replacement, replaced, fixed = TRUE) + }, strings, replacements) + + } + + # transform the JSON into something the R parser understands + transformed <- replaced + transformed <- gsub("{}", "`names<-`(list(), character())", transformed, fixed = TRUE) + transformed <- gsub("[[{]", "list(", transformed, perl = TRUE) + transformed <- gsub("[]}]", ")", transformed, perl = TRUE) + transformed <- gsub(":", "=", transformed, fixed = TRUE) + text <- paste(transformed, collapse = "\n") + + # parse it + json <- parse(text = text, keep.source = FALSE, srcfile = NULL)[[1L]] + + # construct map between source strings, replaced strings + map <- as.character(parse(text = strings)) + names(map) <- as.character(parse(text = replacements)) + + # convert to list + map <- as.list(map) + + # remap strings in object + remapped <- renv_json_read_remap(json, map) + + # evaluate + eval(remapped, envir = baseenv()) + + } + + renv_json_read_remap <- function(json, map) { + + # fix names + if (!is.null(names(json))) { + lhs <- match(names(json), names(map), nomatch = 0L) + rhs <- match(names(map), names(json), nomatch = 0L) + names(json)[rhs] <- map[lhs] + } + + # fix values + if (is.character(json)) + return(map[[json]] %||% json) + + # handle true, false, null + if (is.name(json)) { + text <- as.character(json) + if (text == "true") + return(TRUE) + else if (text == "false") + return(FALSE) + else if (text == "null") + return(NULL) + } + + # recurse + if (is.recursive(json)) { + for (i in seq_along(json)) { + json[i] <- list(renv_json_read_remap(json[[i]], map)) + } + } + + json + + } + + # load the renv profile, if any + renv_bootstrap_profile_load(project) + + # construct path to library root + root <- renv_bootstrap_library_root(project) + + # construct library prefix for platform + prefix <- renv_bootstrap_platform_prefix() + + # construct full libpath + libpath <- file.path(root, prefix) + + # run bootstrap code + renv_bootstrap_exec(project, libpath, version) + + invisible() + +}) diff --git a/internal/inspect/detectors/testdata/rmd-site/renv/settings.json b/internal/inspect/detectors/testdata/rmd-site/renv/settings.json new file mode 100644 index 000000000..d5590a960 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site/renv/settings.json @@ -0,0 +1,15 @@ +{ + "bioconductor.version": null, + "external.libraries": [], + "ignored.packages": [], + "package.dependency.fields": ["Imports", "Depends", "LinkingTo"], + "ppm.enabled": null, + "ppm.ignored.urls": [], + "r.version": null, + "snapshot.type": "implicit", + "use.cache": true, + "vcs.ignore.cellar": true, + "vcs.ignore.library": true, + "vcs.ignore.local": true, + "vcs.manage.ignores": true +} diff --git a/internal/inspect/detectors/testdata/rmd-site/rmd-site.Rproj b/internal/inspect/detectors/testdata/rmd-site/rmd-site.Rproj new file mode 100644 index 000000000..827cca17d --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site/rmd-site.Rproj @@ -0,0 +1,15 @@ +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX + +BuildType: Website diff --git a/internal/inspect/detectors/testdata/rmd-site/sub-dir/another.Rmd b/internal/inspect/detectors/testdata/rmd-site/sub-dir/another.Rmd new file mode 100644 index 000000000..9dd657a91 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site/sub-dir/another.Rmd @@ -0,0 +1,3 @@ +# Another + +Here is another page. It links to [index](index.html) and [article](article.html). diff --git a/internal/inspect/detectors/testdata/rmd-site/sub-dir/some.R b/internal/inspect/detectors/testdata/rmd-site/sub-dir/some.R new file mode 100644 index 000000000..9dd657a91 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site/sub-dir/some.R @@ -0,0 +1,3 @@ +# Another + +Here is another page. It links to [index](index.html) and [article](article.html). diff --git a/internal/inspect/detectors/testdata/rmd-site/test/.publisher-env b/internal/inspect/detectors/testdata/rmd-site/test/.publisher-env new file mode 100644 index 000000000..d4c977a97 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site/test/.publisher-env @@ -0,0 +1,6 @@ +CONTENT_TYPE=quarto +APP_MODE=quarto-static +ENTRYPOINT=index.Rmd +TITLE="rmd-site" +RENV_REQUIRED=yes +QUARTO_ENGINE=knitr \ No newline at end of file diff --git a/internal/util/files.go b/internal/util/files.go index 4b693bfc1..2a8c30049 100644 --- a/internal/util/files.go +++ b/internal/util/files.go @@ -8,6 +8,8 @@ import ( "strings" ) +var KnownSiteYmlConfigFiles = []string{"_site.yml", "_site.yaml", "_bookdown.yml", "_bookdown.yaml"} + func Chdir(dir string) (string, error) { oldWd, err := os.Getwd() if err != nil { From b5e71768c3fb03f97ffa735d25b237a9071e608e Mon Sep 17 00:00:00 2001 From: Marcos Navarro Date: Sat, 7 Dec 2024 00:38:28 +0900 Subject: [PATCH 2/8] When the project has a site configuration file present, set content_category as site for the resulting manifest json file that is included in the deployment bundle --- internal/bundles/manifest.go | 9 +++++++++ internal/bundles/manifest_test.go | 19 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/internal/bundles/manifest.go b/internal/bundles/manifest.go index 9b25650c0..0a911bcbf 100644 --- a/internal/bundles/manifest.go +++ b/internal/bundles/manifest.go @@ -9,6 +9,7 @@ import ( "fmt" "io" "sort" + "strings" "github.com/posit-dev/publisher/internal/clients/connect" "github.com/posit-dev/publisher/internal/config" @@ -202,6 +203,14 @@ func (manifest *Manifest) AddFile(path string, fileMD5 []byte) { manifest.Files[path] = ManifestFile{ Checksum: hex.EncodeToString(fileMD5), } + + // Update manifest content category if a file being added is a site configuration + for _, ymlFile := range util.KnownSiteYmlConfigFiles { + if strings.HasSuffix(path, ymlFile) { + manifest.Metadata.ContentCategory = "site" + break + } + } } func (manifest *Manifest) ToJSON() ([]byte, error) { diff --git a/internal/bundles/manifest_test.go b/internal/bundles/manifest_test.go index 4af1b543d..57a5d66f7 100644 --- a/internal/bundles/manifest_test.go +++ b/internal/bundles/manifest_test.go @@ -54,6 +54,25 @@ func (s *ManifestSuite) TestAddFile() { "subdir/test.Rmd": ManifestFile{Checksum: "030405"}, }) } + +func (s *ManifestSuite) TestAddFile_UpdatesSiteCategory() { + for _, siteConfigYml := range util.KnownSiteYmlConfigFiles { + manifest := NewManifest() + manifest.AddFile("test.Rmd", []byte{0x00, 0x01, 0x02}) + s.Equal(manifest.Files, ManifestFileMap{ + "test.Rmd": ManifestFile{Checksum: "000102"}, + }) + s.Equal(manifest.Metadata.ContentCategory, "") + + manifest.AddFile(siteConfigYml, []byte{0x03, 0x04, 0x05}) + s.Equal(manifest.Files, ManifestFileMap{ + "test.Rmd": ManifestFile{Checksum: "000102"}, + siteConfigYml: ManifestFile{Checksum: "030405"}, + }) + s.Equal(manifest.Metadata.ContentCategory, "site") + } +} + func (s *ManifestSuite) TestReadManifest() { manifestJson := `{"version": 1, "platform": "4.1.0"}` reader := strings.NewReader(manifestJson) From 27e7a89b08056a999829e97fdca694b26c1347d9 Mon Sep 17 00:00:00 2001 From: Marcos Navarro Date: Sat, 7 Dec 2024 01:23:55 +0900 Subject: [PATCH 3/8] Comment with exclusions details --- internal/inspect/detectors/rmarkdown.go | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/internal/inspect/detectors/rmarkdown.go b/internal/inspect/detectors/rmarkdown.go index be3d9be02..58d323478 100644 --- a/internal/inspect/detectors/rmarkdown.go +++ b/internal/inspect/detectors/rmarkdown.go @@ -42,7 +42,19 @@ func prepSiteFilesAndDirs(base util.AbsolutePath, files []string) ([]string, err // It is nice to keep these files out from the generated configuration // https://github.com/rstudio/rsconnect/blob/a7c93ba015dca20a1c1fba393475b0b1538d1573/R/bundleFiles.R#L172 filteredResult := []string{} - patterns := append(files, matcher.StandardExclusions...) + + // StandardExclusions is also used when querying the configuration defined files. + // Then it returns hard stops and disables such files from the project tree. + // In this particular case, it also requires some extra exclusions, + // since this list is used while generating the configuration, + // it is desired to keep out these files at the beginning from the original generated configuration. + exclusionsExt := append(matcher.StandardExclusions, + "!.gitignore", + "!.github/", + "!renv/", + ) + + patterns := append(files, exclusionsExt...) matchList, err := matcher.NewMatchList(base, patterns) if err != nil { return filteredResult, err @@ -54,11 +66,6 @@ func prepSiteFilesAndDirs(base util.AbsolutePath, files []string) ([]string, err continue } - // Prevent renv/ dir from being included - if filename == "renv" { - continue - } - m := matchList.Match(base.Join(filename)) if m == nil || m.Exclude { continue From 11fadcad3d880336cf3b04fc1ad5bd3e3be0dbac Mon Sep 17 00:00:00 2001 From: Marcos Navarro Date: Sat, 7 Dec 2024 01:53:52 +0900 Subject: [PATCH 4/8] Remove a now unused yml records slice --- internal/inspect/detectors/rmarkdown.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/internal/inspect/detectors/rmarkdown.go b/internal/inspect/detectors/rmarkdown.go index 58d323478..2ba328cab 100644 --- a/internal/inspect/detectors/rmarkdown.go +++ b/internal/inspect/detectors/rmarkdown.go @@ -34,9 +34,6 @@ func NewRMarkdownDetector(log logging.Logger) *RMarkdownDetector { // (this pattern allows it to be followed by optional whitespace) var rmdMetaRE = regexp.MustCompile(`(?s)^---\s*\n(.*\n)---\s*\n`) -// Known files that can be considered to identify projects as sites -var knownSiteYml = []string{"_site.yml", "_site.yaml", "_bookdown.yml", "_bookdown.yaml"} - func prepSiteFilesAndDirs(base util.AbsolutePath, files []string) ([]string, error) { // Logic to ignore files highly based on existing logic at rsconnect // It is nice to keep these files out from the generated configuration From 7b8c1095768055479df82e43969dd134e296de08 Mon Sep 17 00:00:00 2001 From: Marcos Navarro Date: Tue, 10 Dec 2024 22:44:28 +0900 Subject: [PATCH 5/8] PR feedback, small adjustment to manifest AddFile check for site configuration files. Compare the filename as is since site configuration is looked for only on the project root --- internal/bundles/manifest.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/bundles/manifest.go b/internal/bundles/manifest.go index 0a911bcbf..8e6cecb35 100644 --- a/internal/bundles/manifest.go +++ b/internal/bundles/manifest.go @@ -206,7 +206,7 @@ func (manifest *Manifest) AddFile(path string, fileMD5 []byte) { // Update manifest content category if a file being added is a site configuration for _, ymlFile := range util.KnownSiteYmlConfigFiles { - if strings.HasSuffix(path, ymlFile) { + if strings.ToLower(path) == ymlFile { manifest.Metadata.ContentCategory = "site" break } From fea8ed90915cc3581426e2c4b43e87048eedf9cf Mon Sep 17 00:00:00 2001 From: Marcos Navarro Date: Wed, 11 Dec 2024 23:45:45 +0900 Subject: [PATCH 6/8] Picking _site.yml or _bookdown.yml files as entrypoint properly sets up configuration as R Markdown Site --- internal/inspect/detectors/rmarkdown.go | 152 +++++++++++++------ internal/inspect/detectors/rmarkdown_test.go | 90 +++++++++++ 2 files changed, 193 insertions(+), 49 deletions(-) diff --git a/internal/inspect/detectors/rmarkdown.go b/internal/inspect/detectors/rmarkdown.go index 2ba328cab..ed5a17b64 100644 --- a/internal/inspect/detectors/rmarkdown.go +++ b/internal/inspect/detectors/rmarkdown.go @@ -5,6 +5,7 @@ package detectors import ( "fmt" "regexp" + "slices" "strings" "github.com/posit-dev/publisher/internal/bundles/matcher" @@ -133,7 +134,108 @@ func (d *RMarkdownDetector) isSite(base util.AbsolutePath) bool { return false } +func (d *RMarkdownDetector) lookForSiteMetadata(base util.AbsolutePath) *RMarkdownMetadata { + // Attempt to get site metadata looking up in common entrypoint files + possibleIndexFiles := []string{"index.Rmd", "index.rmd", "app.Rmd", "app.rmd"} + for _, file := range possibleIndexFiles { + fileAbsPath := base.Join(file) + exists, err := fileAbsPath.Exists() + if err != nil || !exists { + continue + } + metadata, err := d.getRmdFileMetadata(fileAbsPath) + if err != nil { + continue + } + if metadata != nil { + return metadata + } + } + return nil +} + +func (d *RMarkdownDetector) configFromFileInspect(base util.AbsolutePath, entrypointPath util.AbsolutePath) (*config.Config, error) { + relEntrypoint, err := entrypointPath.Rel(base) + if err != nil { + return nil, err + } + + isSite := d.isSite(base) + metadata, err := d.getRmdFileMetadata(entrypointPath) + if err != nil { + d.log.Warn("Failed to read RMarkdown metadata", "path", entrypointPath, "error", err) + return nil, err + } + + cfg := config.New() + cfg.Entrypoint = relEntrypoint.String() + + if isShinyRmd(metadata) { + cfg.Type = config.ContentTypeRMarkdownShiny + } else { + cfg.Type = config.ContentTypeRMarkdown + } + + if isSite { + metadata = d.lookForSiteMetadata(base) + files, err := base.ReadDirNames() + if err != nil { + return nil, err + } + + cfgfiles, err := prepSiteFilesAndDirs(base, files) + if err != nil { + return nil, err + } + + cfg.Files = cfgfiles + } + + if metadata != nil { + title := metadata.Title + if title != "" { + cfg.Title = title + } + + if metadata.Params != nil { + cfg.HasParameters = true + } + } + needsR, needsPython, err := pydeps.DetectMarkdownLanguages(base) + if err != nil { + return nil, err + } + if needsR { + // Indicate that R inspection is needed. + d.log.Info("RMarkdown: detected R code; configuration will include R") + cfg.R = &config.R{} + } + if needsPython { + // Indicate that Python inspection is needed. + d.log.Info("RMarkdown: detected Python code; configuration will include Python") + cfg.Python = &config.Python{} + } + return cfg, nil +} + func (d *RMarkdownDetector) InferType(base util.AbsolutePath, entrypoint util.RelativePath) ([]*config.Config, error) { + entrypointIsSiteConfig := slices.Contains(util.KnownSiteYmlConfigFiles, strings.ToLower(entrypoint.String())) + + // When the choosen entrypoint is a site configuration yml + // generate a single configuration as a site project. + if entrypointIsSiteConfig { + d.log.Debug("A site configuration file was picked as entrypoint", "entrypoint", entrypoint.String()) + + cfg, err := d.configFromFileInspect(base, base.Join(entrypoint.String())) + if err != nil { + return nil, err + } + + if cfg != nil { + return []*config.Config{cfg}, nil + } + } + if entrypoint.String() != "" { // Optimization: skip inspection if there's a specified entrypoint // and it's not one of ours. @@ -156,58 +258,10 @@ func (d *RMarkdownDetector) InferType(base util.AbsolutePath, entrypoint util.Re // Only inspect the specified file continue } - metadata, err := d.getRmdFileMetadata(entrypointPath) - if err != nil { - d.log.Warn("Failed to read RMarkdown metadata", "path", entrypointPath, "error", err) - continue - } - cfg := config.New() - cfg.Entrypoint = relEntrypoint.String() - - if isShinyRmd(metadata) { - cfg.Type = config.ContentTypeRMarkdownShiny - } else { - cfg.Type = config.ContentTypeRMarkdown - } - - if d.isSite(base) { - files, err := base.ReadDirNames() - if err != nil { - return nil, err - } - - cfgfiles, err := prepSiteFilesAndDirs(base, files) - if err != nil { - return nil, err - } - - cfg.Files = cfgfiles - } - - if metadata != nil { - title := metadata.Title - if title != "" { - cfg.Title = title - } - - if metadata.Params != nil { - cfg.HasParameters = true - } - } - needsR, needsPython, err := pydeps.DetectMarkdownLanguages(base) + cfg, err := d.configFromFileInspect(base, entrypointPath) if err != nil { return nil, err } - if needsR { - // Indicate that R inspection is needed. - d.log.Info("RMarkdown: detected R code; configuration will include R") - cfg.R = &config.R{} - } - if needsPython { - // Indicate that Python inspection is needed. - d.log.Info("RMarkdown: detected Python code; configuration will include Python") - cfg.Python = &config.Python{} - } configs = append(configs, cfg) } return configs, nil diff --git a/internal/inspect/detectors/rmarkdown_test.go b/internal/inspect/detectors/rmarkdown_test.go index 7da08ba0e..82fbe60b5 100644 --- a/internal/inspect/detectors/rmarkdown_test.go +++ b/internal/inspect/detectors/rmarkdown_test.go @@ -367,6 +367,45 @@ func (s *RMarkdownSuite) TestInferTypeRmdSite() { }, configs[0]) } +func (s *RMarkdownSuite) TestInferTypeRmdSite_FromSiteYml() { + if runtime.GOOS == "windows" { + s.T().Skip("This test does not run on Windows") + } + + realCwd, err := util.Getwd(nil) + s.NoError(err) + + base := realCwd.Join("testdata", "rmd-site") + + detector := NewRMarkdownDetector(logging.New()) + executor := executortest.NewMockExecutor() + detector.executor = executor + + configs, err := detector.InferType(base, util.NewRelativePath("_site.yml", nil)) + s.Nil(err) + + s.Len(configs, 1) + s.Equal(&config.Config{ + Schema: schema.ConfigSchemaURL, + Type: config.ContentTypeRMarkdown, + Entrypoint: "_site.yml", + Title: "Testing RMD Site", + Validate: true, + Files: []string{ + "/_site.yml", + "/another.Rmd", + "/article.Rmd", + "/images", + "/index.Rmd", + "/meta.yaml", + "/renv.lock", + "/sub-dir", + "/test", + }, + R: &config.R{}, + }, configs[0]) +} + func (s *RMarkdownSuite) TestInferTypeRmdSite_Bookdown() { if runtime.GOOS == "windows" { s.T().Skip("This test does not run on Windows") @@ -417,3 +456,54 @@ func (s *RMarkdownSuite) TestInferTypeRmdSite_Bookdown() { R: &config.R{}, }, configs[0]) } + +func (s *RMarkdownSuite) TestInferTypeRmdSite_FromBookdownYml() { + if runtime.GOOS == "windows" { + s.T().Skip("This test does not run on Windows") + } + + realCwd, err := util.Getwd(nil) + s.NoError(err) + + base := realCwd.Join("testdata", "bookdown-proj") + + detector := NewRMarkdownDetector(logging.New()) + executor := executortest.NewMockExecutor() + detector.executor = executor + + configs, err := detector.InferType(base, util.NewRelativePath("_bookdown.yml", nil)) + s.Nil(err) + + s.Len(configs, 1) + s.Equal(&config.Config{ + Schema: schema.ConfigSchemaURL, + Type: config.ContentTypeRMarkdown, + Entrypoint: "_bookdown.yml", + Title: "A Minimal Book Example", + Validate: true, + Files: []string{ + "/01-intro.Rmd", + "/02-literature.Rmd", + "/03-method.Rmd", + "/04-application.Rmd", + "/05-summary.Rmd", + "/06-references.Rmd", + "/DESCRIPTION", + "/LICENSE", + "/README.md", + "/_bookdown.yml", + "/_build.sh", + "/_deploy.sh", + "/_output.yml", + "/_publish.R", + "/book.bib", + "/index.Rmd", + "/now.json", + "/preamble.tex", + "/renv.lock", + "/style.css", + "/toc.css", + }, + R: &config.R{}, + }, configs[0]) +} From 4e7a4f58d6b53bdd4f4873726509fa19d360ade6 Mon Sep 17 00:00:00 2001 From: Marcos Navarro Date: Thu, 12 Dec 2024 22:07:43 +0900 Subject: [PATCH 7/8] One step back, only include main entrypoint and site configuration file for R Markdown Sites when config is created --- internal/inspect/detectors/rmarkdown.go | 76 +++++--------------- internal/inspect/detectors/rmarkdown_test.go | 52 -------------- 2 files changed, 17 insertions(+), 111 deletions(-) diff --git a/internal/inspect/detectors/rmarkdown.go b/internal/inspect/detectors/rmarkdown.go index ed5a17b64..f871bee11 100644 --- a/internal/inspect/detectors/rmarkdown.go +++ b/internal/inspect/detectors/rmarkdown.go @@ -8,7 +8,6 @@ import ( "slices" "strings" - "github.com/posit-dev/publisher/internal/bundles/matcher" "github.com/posit-dev/publisher/internal/config" "github.com/posit-dev/publisher/internal/executor" "github.com/posit-dev/publisher/internal/inspect/dependencies/pydeps" @@ -35,46 +34,6 @@ func NewRMarkdownDetector(log logging.Logger) *RMarkdownDetector { // (this pattern allows it to be followed by optional whitespace) var rmdMetaRE = regexp.MustCompile(`(?s)^---\s*\n(.*\n)---\s*\n`) -func prepSiteFilesAndDirs(base util.AbsolutePath, files []string) ([]string, error) { - // Logic to ignore files highly based on existing logic at rsconnect - // It is nice to keep these files out from the generated configuration - // https://github.com/rstudio/rsconnect/blob/a7c93ba015dca20a1c1fba393475b0b1538d1573/R/bundleFiles.R#L172 - filteredResult := []string{} - - // StandardExclusions is also used when querying the configuration defined files. - // Then it returns hard stops and disables such files from the project tree. - // In this particular case, it also requires some extra exclusions, - // since this list is used while generating the configuration, - // it is desired to keep out these files at the beginning from the original generated configuration. - exclusionsExt := append(matcher.StandardExclusions, - "!.gitignore", - "!.github/", - "!renv/", - ) - - patterns := append(files, exclusionsExt...) - matchList, err := matcher.NewMatchList(base, patterns) - if err != nil { - return filteredResult, err - } - - for _, filename := range files { - // Ignore temporary files - if strings.HasPrefix(filename, "~") || strings.Contains(filename, "~$") { - continue - } - - m := matchList.Match(base.Join(filename)) - if m == nil || m.Exclude { - continue - } - - filteredResult = append(filteredResult, fmt.Sprint("/", filename)) - } - - return filteredResult, nil -} - type RMarkdownMetadata struct { // Only the fields we need are defined here Title string `yaml:"title"` @@ -123,19 +82,19 @@ func isShinyRmd(metadata *RMarkdownMetadata) bool { return false } -func (d *RMarkdownDetector) isSite(base util.AbsolutePath) bool { +func (d *RMarkdownDetector) isSite(base util.AbsolutePath) (bool, string) { for _, ymlFile := range util.KnownSiteYmlConfigFiles { exists, err := base.Join(ymlFile).Exists() if err == nil && exists { d.log.Debug("Site configuration file is present, project being considered as static site", "file", ymlFile) - return true + return true, ymlFile } } - return false + return false, "" } -func (d *RMarkdownDetector) lookForSiteMetadata(base util.AbsolutePath) *RMarkdownMetadata { - // Attempt to get site metadata looking up in common entrypoint files +func (d *RMarkdownDetector) lookForSiteMetadata(base util.AbsolutePath) (*RMarkdownMetadata, string) { + // Attempt to get site metadata looking up in common files possibleIndexFiles := []string{"index.Rmd", "index.rmd", "app.Rmd", "app.rmd"} for _, file := range possibleIndexFiles { fileAbsPath := base.Join(file) @@ -148,10 +107,10 @@ func (d *RMarkdownDetector) lookForSiteMetadata(base util.AbsolutePath) *RMarkdo continue } if metadata != nil { - return metadata + return metadata, file } } - return nil + return nil, "" } func (d *RMarkdownDetector) configFromFileInspect(base util.AbsolutePath, entrypointPath util.AbsolutePath) (*config.Config, error) { @@ -160,7 +119,6 @@ func (d *RMarkdownDetector) configFromFileInspect(base util.AbsolutePath, entryp return nil, err } - isSite := d.isSite(base) metadata, err := d.getRmdFileMetadata(entrypointPath) if err != nil { d.log.Warn("Failed to read RMarkdown metadata", "path", entrypointPath, "error", err) @@ -176,19 +134,19 @@ func (d *RMarkdownDetector) configFromFileInspect(base util.AbsolutePath, entryp cfg.Type = config.ContentTypeRMarkdown } - if isSite { - metadata = d.lookForSiteMetadata(base) - files, err := base.ReadDirNames() - if err != nil { - return nil, err - } + if isSite, siteConfigFile := d.isSite(base); isSite { + cfg.Files = []string{fmt.Sprint("/", siteConfigFile)} - cfgfiles, err := prepSiteFilesAndDirs(base, files) - if err != nil { - return nil, err + if metadata == nil { + siteMetadata, indexFile := d.lookForSiteMetadata(base) + metadata = siteMetadata + cfg.Files = append(cfg.Files, fmt.Sprint("/", indexFile)) } - cfg.Files = cfgfiles + entrypointBase := fmt.Sprint("/", entrypointPath.Base()) + if !slices.Contains(cfg.Files, entrypointBase) { + cfg.Files = append(cfg.Files, entrypointBase) + } } if metadata != nil { diff --git a/internal/inspect/detectors/rmarkdown_test.go b/internal/inspect/detectors/rmarkdown_test.go index 82fbe60b5..94c148561 100644 --- a/internal/inspect/detectors/rmarkdown_test.go +++ b/internal/inspect/detectors/rmarkdown_test.go @@ -354,14 +354,7 @@ func (s *RMarkdownSuite) TestInferTypeRmdSite() { Validate: true, Files: []string{ "/_site.yml", - "/another.Rmd", - "/article.Rmd", - "/images", "/index.Rmd", - "/meta.yaml", - "/renv.lock", - "/sub-dir", - "/test", }, R: &config.R{}, }, configs[0]) @@ -393,14 +386,7 @@ func (s *RMarkdownSuite) TestInferTypeRmdSite_FromSiteYml() { Validate: true, Files: []string{ "/_site.yml", - "/another.Rmd", - "/article.Rmd", - "/images", "/index.Rmd", - "/meta.yaml", - "/renv.lock", - "/sub-dir", - "/test", }, R: &config.R{}, }, configs[0]) @@ -431,27 +417,8 @@ func (s *RMarkdownSuite) TestInferTypeRmdSite_Bookdown() { Title: "A Minimal Book Example", Validate: true, Files: []string{ - "/01-intro.Rmd", - "/02-literature.Rmd", - "/03-method.Rmd", - "/04-application.Rmd", - "/05-summary.Rmd", - "/06-references.Rmd", - "/DESCRIPTION", - "/LICENSE", - "/README.md", "/_bookdown.yml", - "/_build.sh", - "/_deploy.sh", - "/_output.yml", - "/_publish.R", - "/book.bib", "/index.Rmd", - "/now.json", - "/preamble.tex", - "/renv.lock", - "/style.css", - "/toc.css", }, R: &config.R{}, }, configs[0]) @@ -482,27 +449,8 @@ func (s *RMarkdownSuite) TestInferTypeRmdSite_FromBookdownYml() { Title: "A Minimal Book Example", Validate: true, Files: []string{ - "/01-intro.Rmd", - "/02-literature.Rmd", - "/03-method.Rmd", - "/04-application.Rmd", - "/05-summary.Rmd", - "/06-references.Rmd", - "/DESCRIPTION", - "/LICENSE", - "/README.md", "/_bookdown.yml", - "/_build.sh", - "/_deploy.sh", - "/_output.yml", - "/_publish.R", - "/book.bib", "/index.Rmd", - "/now.json", - "/preamble.tex", - "/renv.lock", - "/style.css", - "/toc.css", }, R: &config.R{}, }, configs[0]) From 24283b25ce486a765a8de6f66ad4e6bde52abc93 Mon Sep 17 00:00:00 2001 From: Marcos Navarro Date: Fri, 13 Dec 2024 02:54:13 +0900 Subject: [PATCH 8/8] Fix R Markdown site files when no metadata is found --- internal/inspect/detectors/rmarkdown.go | 7 +- internal/inspect/detectors/rmarkdown_test.go | 31 + .../testdata/rmd-site-no-meta/_site.yml | 0 .../testdata/rmd-site-no-meta/another.Rmd | 3 + .../testdata/rmd-site-no-meta/article.Rmd | 3 + .../testdata/rmd-site-no-meta/index.Rmd | 27 + .../testdata/rmd-site-no-meta/manifest.json | 908 ++++++++++++ .../testdata/rmd-site-no-meta/meta.yaml | 10 + .../testdata/rmd-site-no-meta/renv.lock | 398 ++++++ .../testdata/rmd-site-no-meta/renv/.gitignore | 7 + .../testdata/rmd-site-no-meta/renv/activate.R | 1220 +++++++++++++++++ .../rmd-site-no-meta/renv/settings.json | 15 + .../testdata/rmd-site-no-meta/rmd-site.Rproj | 15 + 13 files changed, 2643 insertions(+), 1 deletion(-) create mode 100644 internal/inspect/detectors/testdata/rmd-site-no-meta/_site.yml create mode 100644 internal/inspect/detectors/testdata/rmd-site-no-meta/another.Rmd create mode 100644 internal/inspect/detectors/testdata/rmd-site-no-meta/article.Rmd create mode 100644 internal/inspect/detectors/testdata/rmd-site-no-meta/index.Rmd create mode 100644 internal/inspect/detectors/testdata/rmd-site-no-meta/manifest.json create mode 100644 internal/inspect/detectors/testdata/rmd-site-no-meta/meta.yaml create mode 100644 internal/inspect/detectors/testdata/rmd-site-no-meta/renv.lock create mode 100644 internal/inspect/detectors/testdata/rmd-site-no-meta/renv/.gitignore create mode 100644 internal/inspect/detectors/testdata/rmd-site-no-meta/renv/activate.R create mode 100644 internal/inspect/detectors/testdata/rmd-site-no-meta/renv/settings.json create mode 100644 internal/inspect/detectors/testdata/rmd-site-no-meta/rmd-site.Rproj diff --git a/internal/inspect/detectors/rmarkdown.go b/internal/inspect/detectors/rmarkdown.go index f871bee11..3b2578204 100644 --- a/internal/inspect/detectors/rmarkdown.go +++ b/internal/inspect/detectors/rmarkdown.go @@ -135,11 +135,16 @@ func (d *RMarkdownDetector) configFromFileInspect(base util.AbsolutePath, entryp } if isSite, siteConfigFile := d.isSite(base); isSite { + var siteMetadata *RMarkdownMetadata + var indexFile string cfg.Files = []string{fmt.Sprint("/", siteConfigFile)} if metadata == nil { - siteMetadata, indexFile := d.lookForSiteMetadata(base) + siteMetadata, indexFile = d.lookForSiteMetadata(base) metadata = siteMetadata + } + + if indexFile != "" { cfg.Files = append(cfg.Files, fmt.Sprint("/", indexFile)) } diff --git a/internal/inspect/detectors/rmarkdown_test.go b/internal/inspect/detectors/rmarkdown_test.go index 94c148561..fa654ef60 100644 --- a/internal/inspect/detectors/rmarkdown_test.go +++ b/internal/inspect/detectors/rmarkdown_test.go @@ -392,6 +392,37 @@ func (s *RMarkdownSuite) TestInferTypeRmdSite_FromSiteYml() { }, configs[0]) } +func (s *RMarkdownSuite) TestInferTypeRmdSite_FromSiteYml_NoMeta() { + if runtime.GOOS == "windows" { + s.T().Skip("This test does not run on Windows") + } + + realCwd, err := util.Getwd(nil) + s.NoError(err) + + base := realCwd.Join("testdata", "rmd-site-no-meta") + + detector := NewRMarkdownDetector(logging.New()) + executor := executortest.NewMockExecutor() + detector.executor = executor + + configs, err := detector.InferType(base, util.NewRelativePath("_site.yml", nil)) + s.Nil(err) + + s.Len(configs, 1) + s.Equal(&config.Config{ + Schema: schema.ConfigSchemaURL, + Type: config.ContentTypeRMarkdown, + Entrypoint: "_site.yml", + Title: "", + Validate: true, + Files: []string{ + "/_site.yml", + }, + R: &config.R{}, + }, configs[0]) +} + func (s *RMarkdownSuite) TestInferTypeRmdSite_Bookdown() { if runtime.GOOS == "windows" { s.T().Skip("This test does not run on Windows") diff --git a/internal/inspect/detectors/testdata/rmd-site-no-meta/_site.yml b/internal/inspect/detectors/testdata/rmd-site-no-meta/_site.yml new file mode 100644 index 000000000..e69de29bb diff --git a/internal/inspect/detectors/testdata/rmd-site-no-meta/another.Rmd b/internal/inspect/detectors/testdata/rmd-site-no-meta/another.Rmd new file mode 100644 index 000000000..9dd657a91 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site-no-meta/another.Rmd @@ -0,0 +1,3 @@ +# Another + +Here is another page. It links to [index](index.html) and [article](article.html). diff --git a/internal/inspect/detectors/testdata/rmd-site-no-meta/article.Rmd b/internal/inspect/detectors/testdata/rmd-site-no-meta/article.Rmd new file mode 100644 index 000000000..138030660 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site-no-meta/article.Rmd @@ -0,0 +1,3 @@ +# Article + +This is an article. It has a link to [index](index.html) and [another](another.html). diff --git a/internal/inspect/detectors/testdata/rmd-site-no-meta/index.Rmd b/internal/inspect/detectors/testdata/rmd-site-no-meta/index.Rmd new file mode 100644 index 000000000..87e0035a0 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site-no-meta/index.Rmd @@ -0,0 +1,27 @@ +# R Markdown site + +This is the index page. It has a link to [article](article.html) and [another](another.html). + +### A huge plot (scatter plot matrix) + +One disadvantage of `recordPlot()` is that it may not be able to record huge plots due to memory limits, e.g. a scatter plot matrix of tens of thousands of points: + +```{r gen-data, cache=TRUE} +# generate some random data +dat = matrix(runif(100000), ncol=5) +dat[, 3] = -.2 * dat[, 1] + .8 * dat[, 2] # to make the plot less boring +pairs(dat) +``` + +But scatter plots with such a large number of points are usually difficult to read (basically you can see nothing), so we'd better use some alternative ways to visualize them. For example, we can use 2D density estimates and draw contour plots, or just plot the LOWESS curve. + +```{r line-contour, cache=TRUE, dependson='gen-data'} +dens2d = function(x, y, ...) { + library(MASS) + res = kde2d(x, y) + with(res, contour(x, y, z, add = TRUE)) +} +pairs(dat, lower.panel = dens2d, upper.panel = function(x, y, ...) { + lines(lowess(y ~ x), col = 'red') +}) +``` diff --git a/internal/inspect/detectors/testdata/rmd-site-no-meta/manifest.json b/internal/inspect/detectors/testdata/rmd-site-no-meta/manifest.json new file mode 100644 index 000000000..0e2aa6cc8 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site-no-meta/manifest.json @@ -0,0 +1,908 @@ +{ + "version": 1, + "locale": "en_US", + "platform": "4.3.0", + "metadata": { + "appmode": "rmd-static", + "primary_rmd": "index.Rmd", + "primary_html": null, + "content_category": "site", + "has_parameters": false + }, + "packages": { + "R6": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "R6", + "Title": "Encapsulated Classes with Reference Semantics", + "Version": "2.5.1", + "Authors@R": "person(\"Winston\", \"Chang\", role = c(\"aut\", \"cre\"), email = \"winston@stdout.org\")", + "Description": "Creates classes with reference semantics, similar to R's built-in\n reference classes. Compared to reference classes, R6 classes are simpler\n and lighter-weight, and they are not built on S4 classes so they do not\n require the methods package. These classes allow public and private\n members, and they support inheritance, even when the classes are defined in\n different packages.", + "Depends": "R (>= 3.0)", + "Suggests": "testthat, pryr", + "License": "MIT + file LICENSE", + "URL": "https://r6.r-lib.org, https://github.com/r-lib/R6/", + "BugReports": "https://github.com/r-lib/R6/issues", + "RoxygenNote": "7.1.1", + "NeedsCompilation": "no", + "Packaged": "2021-08-06 20:18:46 UTC; winston", + "Author": "Winston Chang [aut, cre]", + "Maintainer": "Winston Chang ", + "Repository": "CRAN", + "Date/Publication": "2021-08-19 14:00:05 UTC", + "Built": "R 4.3.0; ; 2023-04-11 20:07:58 UTC; unix" + } + }, + "base64enc": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "base64enc", + "Version": "0.1-3", + "Title": "Tools for base64 encoding", + "Author": "Simon Urbanek ", + "Maintainer": "Simon Urbanek ", + "Depends": "R (>= 2.9.0)", + "Enhances": "png", + "Description": "This package provides tools for handling base64 encoding. It is more flexible than the orphaned base64 package.", + "License": "GPL-2 | GPL-3", + "URL": "http://www.rforge.net/base64enc", + "NeedsCompilation": "yes", + "Packaged": "2015-02-04 20:31:00 UTC; svnuser", + "Repository": "CRAN", + "Date/Publication": "2015-07-28 08:03:37", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:09:42 UTC; unix", + "Archs": "base64enc.so.dSYM" + } + }, + "bslib": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "bslib", + "Title": "Custom 'Bootstrap' 'Sass' Themes for 'shiny' and 'rmarkdown'", + "Version": "0.4.2", + "Authors@R": "c(\n person(\"Carson\", \"Sievert\", role = c(\"aut\", \"cre\"), email = \"carson@rstudio.com\", comment = c(ORCID = \"0000-0002-4958-2844\")),\n person(\"Joe\", \"Cheng\", role = \"aut\", email = \"joe@rstudio.com\"),\n person(family = \"RStudio\", role = \"cph\"),\n person(family = \"Bootstrap contributors\", role = \"ctb\",\n comment = \"Bootstrap library\"),\n person(family = \"Twitter, Inc\", role = \"cph\",\n comment = \"Bootstrap library\"),\n person(\"Javi\", \"Aguilar\", role = c(\"ctb\", \"cph\"),\n comment = \"Bootstrap colorpicker library\"),\n person(\"Thomas\", \"Park\", role = c(\"ctb\", \"cph\"),\n comment = \"Bootswatch library\"),\n person(family = \"PayPal\", role = c(\"ctb\", \"cph\"),\n comment = \"Bootstrap accessibility plugin\")\n )", + "Description": "Simplifies custom 'CSS' styling of both 'shiny' and 'rmarkdown' via 'Bootstrap' 'Sass'. Supports 'Bootstrap' 3, 4 and 5 as well as their various 'Bootswatch' themes. An interactive widget is also provided for previewing themes in real time.", + "Depends": "R (>= 2.10)", + "Imports": "grDevices, htmltools (>= 0.5.4), jsonlite, sass (>= 0.4.0),\njquerylib (>= 0.1.3), rlang, cachem, memoise (>= 2.0.1),\nbase64enc, mime", + "Suggests": "shiny (>= 1.6.0), rmarkdown (>= 2.7), thematic, knitr,\ntestthat, withr, rappdirs, curl, magrittr, fontawesome, bsicons", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "Collate": "'bootswatch.R' 'bs-current-theme.R' 'bs-dependencies.R'\n'bs-global.R' 'bs-remove.R' 'bs-theme-layers.R' 'utils.R'\n'bs-theme-preview.R' 'bs-theme-update.R' 'bs-theme.R' 'card.R'\n'deprecated.R' 'files.R' 'imports.R' 'layout.R' 'nav-items.R'\n'nav-update.R' 'navs-legacy.R' 'navs.R' 'onLoad.R' 'page.R'\n'precompiled.R' 'print.R' 'shiny-devmode.R' 'staticimports.R'\n'utils-shiny.R' 'utils-tags.R' 'value-box.R'\n'version-default.R' 'versions.R'", + "URL": "https://rstudio.github.io/bslib/, https://github.com/rstudio/bslib", + "BugReports": "https://github.com/rstudio/bslib/issues", + "Config/testthat/edition": "3", + "Config/Needs/routine": "desc, renv", + "Config/Needs/website": "brio, dplyr, glue, purrr, rprojroot, stringr,\ntidyr, DT, leaflet, plotly, htmlwidgets, shiny, ggplot2,\nsvglite", + "Config/Needs/deploy": "BH, DT, ggplot2, hexbin, lattice, lubridate,\ndplyr, modelr, nycflights13, histoslider, reactable, rprojroot,\nrsconnect, plotly, leaflet, gt, shiny, htmlwidgets", + "NeedsCompilation": "no", + "Packaged": "2022-12-15 16:02:29 UTC; cpsievert", + "Author": "Carson Sievert [aut, cre] (),\n Joe Cheng [aut],\n RStudio [cph],\n Bootstrap contributors [ctb] (Bootstrap library),\n Twitter, Inc [cph] (Bootstrap library),\n Javi Aguilar [ctb, cph] (Bootstrap colorpicker library),\n Thomas Park [ctb, cph] (Bootswatch library),\n PayPal [ctb, cph] (Bootstrap accessibility plugin)", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN", + "Date/Publication": "2022-12-16 10:30:06 UTC", + "Built": "R 4.3.0; ; 2023-04-17 22:45:58 UTC; unix" + } + }, + "cachem": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "cachem", + "Version": "1.0.8", + "Title": "Cache R Objects with Automatic Pruning", + "Description": "Key-value stores with automatic pruning. Caches can limit\n either their total size or the age of the oldest object (or both),\n automatically pruning objects to maintain the constraints.", + "Authors@R": "c(\n person(\"Winston\", \"Chang\", , \"winston@rstudio.com\", c(\"aut\", \"cre\")),\n person(family = \"RStudio\", role = c(\"cph\", \"fnd\")))", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "ByteCompile": "true", + "URL": "https://cachem.r-lib.org/, https://github.com/r-lib/cachem", + "Imports": "rlang, fastmap (>= 1.1.1)", + "Suggests": "testthat", + "RoxygenNote": "7.2.3", + "Config/Needs/routine": "lobstr", + "Config/Needs/website": "pkgdown", + "NeedsCompilation": "yes", + "Packaged": "2023-05-01 15:38:38 UTC; winston", + "Author": "Winston Chang [aut, cre],\n RStudio [cph, fnd]", + "Maintainer": "Winston Chang ", + "Repository": "CRAN", + "Date/Publication": "2023-05-01 16:40:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-05-03 23:25:36 UTC; unix", + "Archs": "cachem.so.dSYM" + } + }, + "cli": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "cli", + "Title": "Helpers for Developing Command Line Interfaces", + "Version": "3.6.1", + "Authors@R": "c(\n person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")),\n person(\"Hadley\", \"Wickham\", role = \"ctb\"),\n person(\"Kirill\", \"Müller\", role = \"ctb\"),\n person(\"RStudio\", role = c(\"cph\", \"fnd\"))\n )", + "Description": "A suite of tools to build attractive command line interfaces\n ('CLIs'), from semantic elements: headings, lists, alerts, paragraphs,\n etc. Supports custom themes via a 'CSS'-like language. It also\n contains a number of lower level 'CLI' elements: rules, boxes, trees,\n and 'Unicode' symbols with 'ASCII' alternatives. It support ANSI\n colors and text styles as well.", + "License": "MIT + file LICENSE", + "URL": "https://cli.r-lib.org, https://github.com/r-lib/cli#readme", + "BugReports": "https://github.com/r-lib/cli/issues", + "Depends": "R (>= 3.4)", + "Imports": "utils", + "Suggests": "callr, covr, crayon, digest, glue (>= 1.6.0), grDevices,\nhtmltools, htmlwidgets, knitr, methods, mockery, processx, ps\n(>= 1.3.4.9000), rlang (>= 1.0.2.9003), rmarkdown, rprojroot,\nrstudioapi, testthat, tibble, whoami, withr", + "Config/Needs/website": "r-lib/asciicast, bench, brio, cpp11, decor, desc,\nfansi, prettyunits, sessioninfo, tidyverse/tidytemplate,\nusethis, vctrs", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.1.9000", + "NeedsCompilation": "yes", + "Packaged": "2023-03-22 13:59:32 UTC; gaborcsardi", + "Author": "Gábor Csárdi [aut, cre],\n Hadley Wickham [ctb],\n Kirill Müller [ctb],\n RStudio [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN", + "Date/Publication": "2023-03-23 12:52:05 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:08:33 UTC; unix", + "Archs": "cli.so.dSYM" + } + }, + "digest": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "digest", + "Author": "Dirk Eddelbuettel with contributions\n by Antoine Lucas, Jarek Tuszynski, Henrik Bengtsson, Simon Urbanek,\n Mario Frasca, Bryan Lewis, Murray Stokely, Hannes Muehleisen,\n Duncan Murdoch, Jim Hester, Wush Wu, Qiang Kou, Thierry Onkelinx,\n Michel Lang, Viliam Simko, Kurt Hornik, Radford Neal, Kendon Bell,\n Matthew de Queljoe, Ion Suruceanu, Bill Denney, Dirk Schumacher,\n and Winston Chang.", + "Version": "0.6.31", + "Date": "2022-12-10", + "Maintainer": "Dirk Eddelbuettel ", + "Title": "Create Compact Hash Digests of R Objects", + "Description": "Implementation of a function 'digest()' for the creation of hash\n digests of arbitrary R objects (using the 'md5', 'sha-1', 'sha-256', 'crc32',\n 'xxhash', 'murmurhash', 'spookyhash' and 'blake3' algorithms) permitting easy\n comparison of R language objects, as well as functions such as'hmac()' to\n create hash-based message authentication code. Please note that this package\n is not meant to be deployed for cryptographic purposes for which more\n comprehensive (and widely tested) libraries such as 'OpenSSL' should be\n used.", + "URL": "https://github.com/eddelbuettel/digest,\nhttp://dirk.eddelbuettel.com/code/digest.html", + "BugReports": "https://github.com/eddelbuettel/digest/issues", + "Depends": "R (>= 3.3.0)", + "Imports": "utils", + "License": "GPL (>= 2)", + "Suggests": "tinytest, simplermarkdown", + "VignetteBuilder": "simplermarkdown", + "NeedsCompilation": "yes", + "Packaged": "2022-12-10 18:30:14 UTC; edd", + "Repository": "CRAN", + "Date/Publication": "2022-12-11 07:40:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:09:54 UTC; unix", + "Archs": "digest.so.dSYM" + } + }, + "ellipsis": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "ellipsis", + "Version": "0.3.2", + "Title": "Tools for Working with ...", + "Description": "The ellipsis is a powerful tool for extending functions. Unfortunately \n this power comes at a cost: misspelled arguments will be silently ignored. \n The ellipsis package provides a collection of functions to catch problems\n and alert the user.", + "Authors@R": "c(\n person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = c(\"aut\", \"cre\")),\n person(\"RStudio\", role = \"cph\")\n )", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.1.1", + "URL": "https://ellipsis.r-lib.org, https://github.com/r-lib/ellipsis", + "BugReports": "https://github.com/r-lib/ellipsis/issues", + "Depends": "R (>= 3.2)", + "Imports": "rlang (>= 0.3.0)", + "Suggests": "covr, testthat", + "NeedsCompilation": "yes", + "Packaged": "2021-04-29 12:06:44 UTC; lionel", + "Author": "Hadley Wickham [aut, cre],\n RStudio [cph]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN", + "Date/Publication": "2021-04-29 12:40:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:17:48 UTC; unix", + "Archs": "ellipsis.so.dSYM" + } + }, + "evaluate": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "evaluate", + "Type": "Package", + "Title": "Parsing and Evaluation Tools that Provide More Details than the\nDefault", + "Version": "0.21", + "Authors@R": "c(\n person(\"Hadley\", \"Wickham\", role = \"aut\"),\n person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")),\n person(\"Michael\", \"Lawrence\", role = \"ctb\"),\n person(\"Thomas\", \"Kluyver\", role = \"ctb\"),\n person(\"Jeroen\", \"Ooms\", role = \"ctb\"),\n person(\"Barret\", \"Schloerke\", role = \"ctb\"),\n person(\"Adam\", \"Ryczkowski\", role = \"ctb\"),\n person(\"Hiroaki\", \"Yutani\", role = \"ctb\"),\n person(\"Michel\", \"Lang\", role = \"ctb\"),\n person(\"Karolis\", \"Koncevičius\", role = \"ctb\"),\n person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\"))\n )", + "Description": "Parsing and evaluation tools that make it easy to recreate the\n command line behaviour of R.", + "License": "MIT + file LICENSE", + "URL": "https://github.com/r-lib/evaluate", + "BugReports": "https://github.com/r-lib/evaluate/issues", + "Depends": "R (>= 3.0.2)", + "Imports": "methods", + "Suggests": "covr, ggplot2, lattice, rlang, testthat (>= 3.0.0), withr", + "RoxygenNote": "7.2.3", + "Encoding": "UTF-8", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Packaged": "2023-05-01 21:56:45 UTC; yihui", + "Author": "Hadley Wickham [aut],\n Yihui Xie [aut, cre] (),\n Michael Lawrence [ctb],\n Thomas Kluyver [ctb],\n Jeroen Ooms [ctb],\n Barret Schloerke [ctb],\n Adam Ryczkowski [ctb],\n Hiroaki Yutani [ctb],\n Michel Lang [ctb],\n Karolis Koncevičius [ctb],\n Posit Software, PBC [cph, fnd]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN", + "Date/Publication": "2023-05-05 23:30:02 UTC", + "Built": "R 4.3.0; ; 2023-05-05 23:40:19 UTC; unix" + } + }, + "fastmap": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "fastmap", + "Title": "Fast Data Structures", + "Version": "1.1.1", + "Authors@R": "c(\n person(\"Winston\", \"Chang\", email = \"winston@rstudio.com\", role = c(\"aut\", \"cre\")),\n person(given = \"RStudio\", role = c(\"cph\", \"fnd\")),\n person(given = \"Tessil\", role = \"cph\", comment = \"hopscotch_map library\")\n )", + "Description": "Fast implementation of data structures, including a key-value\n store, stack, and queue. Environments are commonly used as key-value stores\n in R, but every time a new key is used, it is added to R's global symbol\n table, causing a small amount of memory leakage. This can be problematic in\n cases where many different keys are used. Fastmap avoids this memory leak\n issue by implementing the map using data structures in C++.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "Suggests": "testthat (>= 2.1.1)", + "URL": "https://r-lib.github.io/fastmap/, https://github.com/r-lib/fastmap", + "BugReports": "https://github.com/r-lib/fastmap/issues", + "NeedsCompilation": "yes", + "Packaged": "2023-02-24 16:01:27 UTC; winston", + "Author": "Winston Chang [aut, cre],\n RStudio [cph, fnd],\n Tessil [cph] (hopscotch_map library)", + "Maintainer": "Winston Chang ", + "Repository": "CRAN", + "Date/Publication": "2023-02-24 16:30:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:09:53 UTC; unix", + "Archs": "fastmap.so.dSYM" + } + }, + "fontawesome": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Type": "Package", + "Package": "fontawesome", + "Version": "0.5.1", + "Title": "Easily Work with 'Font Awesome' Icons", + "Description": "Easily and flexibly insert 'Font Awesome' icons into 'R Markdown'\n documents and 'Shiny' apps. These icons can be inserted into HTML content\n through inline 'SVG' tags or 'i' tags. There is also a utility function for\n exporting 'Font Awesome' icons as 'PNG' images for those situations where\n raster graphics are needed.", + "Authors@R": "c(\n person(\"Richard\", \"Iannone\", , \"rich@posit.co\", c(\"aut\", \"cre\"),\n comment = c(ORCID = \"0000-0003-3925-190X\")),\n person(\"Christophe\", \"Dervieux\", , \"cderv@posit.co\", role = \"ctb\",\n comment = c(ORCID = \"0000-0003-4474-2498\")),\n person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"ctb\"),\n person(\"Dave\", \"Gandy\", role = c(\"ctb\", \"cph\"),\n comment = \"Font-Awesome font\"),\n person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"))\n )", + "License": "MIT + file LICENSE", + "URL": "https://github.com/rstudio/fontawesome,\nhttps://rstudio.github.io/fontawesome/", + "BugReports": "https://github.com/rstudio/fontawesome/issues", + "Encoding": "UTF-8", + "ByteCompile": "true", + "RoxygenNote": "7.2.3", + "Depends": "R (>= 3.3.0)", + "Imports": "rlang (>= 1.0.6), htmltools (>= 0.5.1.1)", + "Suggests": "covr, dplyr (>= 1.0.8), knitr (>= 1.31), testthat (>= 3.0.0),\nrsvg", + "Config/testthat/edition": "3", + "NeedsCompilation": "no", + "Packaged": "2023-04-18 17:20:05 UTC; rich", + "Author": "Richard Iannone [aut, cre] (),\n Christophe Dervieux [ctb] (),\n Winston Chang [ctb],\n Dave Gandy [ctb, cph] (Font-Awesome font),\n Posit Software, PBC [cph, fnd]", + "Maintainer": "Richard Iannone ", + "Repository": "CRAN", + "Date/Publication": "2023-04-18 20:30:02 UTC", + "Built": "R 4.3.0; ; 2023-04-22 00:45:59 UTC; unix" + } + }, + "fs": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "fs", + "Title": "Cross-Platform File System Operations Based on 'libuv'", + "Version": "1.6.2", + "Authors@R": "c(\n person(\"Jim\", \"Hester\", role = \"aut\"),\n person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = \"aut\"),\n person(\"Gábor\", \"Csárdi\", , \"csardi.gabor@gmail.com\", role = c(\"aut\", \"cre\")),\n person(\"libuv project contributors\", role = \"cph\",\n comment = \"libuv library\"),\n person(\"Joyent, Inc. and other Node contributors\", role = \"cph\",\n comment = \"libuv library\"),\n person(\"RStudio\", role = c(\"cph\", \"fnd\"))\n )", + "Description": "A cross-platform interface to file system operations, built\n on top of the 'libuv' C library.", + "License": "MIT + file LICENSE", + "URL": "https://fs.r-lib.org, https://github.com/r-lib/fs,\nhttps://fs.r-lib.org/", + "BugReports": "https://github.com/r-lib/fs/issues", + "Depends": "R (>= 3.4)", + "Imports": "methods", + "Suggests": "covr, crayon, knitr, pillar (>= 1.0.0), rmarkdown, spelling,\ntestthat (>= 3.0.0), tibble (>= 1.1.0), vctrs (>= 0.3.0), withr", + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "Copyright": "file COPYRIGHTS", + "Encoding": "UTF-8", + "Language": "en-US", + "RoxygenNote": "7.1.2", + "SystemRequirements": "GNU make", + "Config/testthat/edition": "3", + "Config/Needs/website": "tidyverse/tidytemplate", + "NeedsCompilation": "yes", + "Packaged": "2023-04-24 13:43:26 UTC; gaborcsardi", + "Author": "Jim Hester [aut],\n Hadley Wickham [aut],\n Gábor Csárdi [aut, cre],\n libuv project contributors [cph] (libuv library),\n Joyent, Inc. and other Node contributors [cph] (libuv library),\n RStudio [cph, fnd]", + "Maintainer": "Gábor Csárdi ", + "Repository": "CRAN", + "Date/Publication": "2023-04-25 08:30:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-30 06:45:54 UTC; unix", + "Archs": "fs.so.dSYM" + } + }, + "glue": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "glue", + "Title": "Interpreted String Literals", + "Version": "1.6.2", + "Authors@R": "c(\n person(\"Jim\", \"Hester\", role = \"aut\",\n comment = c(ORCID = \"0000-0002-2739-7082\")),\n person(\"Jennifer\", \"Bryan\", , \"jenny@rstudio.com\", role = c(\"aut\", \"cre\"),\n comment = c(ORCID = \"0000-0002-6983-2759\")),\n person(\"RStudio\", role = c(\"cph\", \"fnd\"))\n )", + "Description": "An implementation of interpreted string literals, inspired by\n Python's Literal String Interpolation\n and Docstrings\n and Julia's Triple-Quoted\n String Literals\n .", + "License": "MIT + file LICENSE", + "URL": "https://github.com/tidyverse/glue, https://glue.tidyverse.org/", + "BugReports": "https://github.com/tidyverse/glue/issues", + "Depends": "R (>= 3.4)", + "Imports": "methods", + "Suggests": "covr, crayon, DBI, dplyr, forcats, ggplot2, knitr, magrittr,\nmicrobenchmark, R.utils, rmarkdown, rprintf, RSQLite, stringr,\ntestthat (>= 3.0.0), vctrs (>= 0.3.0), waldo (>= 0.3.0), withr", + "VignetteBuilder": "knitr", + "ByteCompile": "true", + "Config/Needs/website": "hadley/emo, tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "RoxygenNote": "7.1.2", + "NeedsCompilation": "yes", + "Packaged": "2022-02-23 22:50:40 UTC; jenny", + "Author": "Jim Hester [aut] (),\n Jennifer Bryan [aut, cre] (),\n RStudio [cph, fnd]", + "Maintainer": "Jennifer Bryan ", + "Repository": "CRAN", + "Date/Publication": "2022-02-24 07:50:20 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:07:27 UTC; unix", + "Archs": "glue.so.dSYM" + } + }, + "highr": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "highr", + "Type": "Package", + "Title": "Syntax Highlighting for R Source Code", + "Version": "0.10", + "Authors@R": "c(\n person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")),\n person(\"Yixuan\", \"Qiu\", role = \"aut\"),\n person(\"Christopher\", \"Gandrud\", role = \"ctb\"),\n person(\"Qiang\", \"Li\", role = \"ctb\")\n )", + "Description": "Provides syntax highlighting for R source code. Currently it\n supports LaTeX and HTML output. Source code of other languages is supported\n via Andre Simon's highlight package ().", + "Depends": "R (>= 3.3.0)", + "Imports": "xfun (>= 0.18)", + "Suggests": "knitr, markdown, testit", + "License": "GPL", + "URL": "https://github.com/yihui/highr", + "BugReports": "https://github.com/yihui/highr/issues", + "VignetteBuilder": "knitr", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Packaged": "2022-12-22 06:43:07 UTC; yihui", + "Author": "Yihui Xie [aut, cre] (),\n Yixuan Qiu [aut],\n Christopher Gandrud [ctb],\n Qiang Li [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN", + "Date/Publication": "2022-12-22 07:00:02 UTC", + "Built": "R 4.3.0; ; 2023-04-12 06:44:58 UTC; unix" + } + }, + "htmltools": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "htmltools", + "Type": "Package", + "Title": "Tools for HTML", + "Version": "0.5.5", + "Authors@R": "c(\n person(\"Joe\", \"Cheng\", role = \"aut\", email = \"joe@rstudio.com\"),\n person(\"Carson\", \"Sievert\", role = c(\"aut\", \"cre\"), email = \"carson@rstudio.com\", comment = c(ORCID = \"0000-0002-4958-2844\")),\n person(\"Barret\", \"Schloerke\", role = \"aut\", email = \"barret@rstudio.com\", comment = c(ORCID = \"0000-0001-9986-114X\")),\n person(\"Winston\", \"Chang\", role = \"aut\", email = \"winston@rstudio.com\", comment = c(ORCID = \"0000-0002-1576-2126\")),\n person(\"Yihui\", \"Xie\", role = \"aut\", email = \"yihui@rstudio.com\"),\n person(\"Jeff\", \"Allen\", role = \"aut\", email = \"jeff@rstudio.com\"),\n person(family = \"RStudio\", role = \"cph\")\n )", + "Description": "Tools for HTML generation and output.", + "Depends": "R (>= 2.14.1)", + "Imports": "utils, digest, grDevices, base64enc, rlang (>= 0.4.10),\nfastmap (>= 1.1.0), ellipsis", + "Suggests": "markdown, testthat, withr, Cairo, ragg, shiny", + "Enhances": "knitr", + "License": "GPL (>= 2)", + "URL": "https://github.com/rstudio/htmltools,\nhttps://rstudio.github.io/htmltools/", + "BugReports": "https://github.com/rstudio/htmltools/issues", + "RoxygenNote": "7.2.3", + "Encoding": "UTF-8", + "Collate": "'colors.R' 'fill.R' 'html_dependency.R' 'html_escape.R'\n'html_print.R' 'images.R' 'known_tags.R' 'selector.R'\n'staticimports.R' 'tag_query.R' 'utils.R' 'tags.R' 'template.R'", + "Config/Needs/website": "rstudio/quillt, bench", + "NeedsCompilation": "yes", + "Packaged": "2023-03-22 22:59:42 UTC; cpsievert", + "Author": "Joe Cheng [aut],\n Carson Sievert [aut, cre] (),\n Barret Schloerke [aut] (),\n Winston Chang [aut] (),\n Yihui Xie [aut],\n Jeff Allen [aut],\n RStudio [cph]", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN", + "Date/Publication": "2023-03-23 09:50:06 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-12 06:43:49 UTC; unix", + "Archs": "htmltools.so.dSYM" + } + }, + "jquerylib": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "jquerylib", + "Title": "Obtain 'jQuery' as an HTML Dependency Object", + "Version": "0.1.4", + "Authors@R": "c(\n person(\"Carson\", \"Sievert\", role = c(\"aut\", \"cre\"), email = \"carson@rstudio.com\", comment = c(ORCID = \"0000-0002-4958-2844\")),\n person(\"Joe\", \"Cheng\", role = \"aut\", email = \"joe@rstudio.com\"),\n person(family = \"RStudio\", role = \"cph\"),\n person(family = \"jQuery Foundation\", role = \"cph\",\n comment = \"jQuery library and jQuery UI library\"),\n person(family = \"jQuery contributors\", role = c(\"ctb\", \"cph\"),\n comment = \"jQuery library; authors listed in inst/lib/jquery-AUTHORS.txt\")\n )", + "Description": "Obtain any major version of 'jQuery' () and use it in any webpage generated by 'htmltools' (e.g. 'shiny', 'htmlwidgets', and 'rmarkdown').\n Most R users don't need to use this package directly, but other R packages (e.g. 'shiny', 'rmarkdown', etc.) depend on this package to avoid bundling redundant copies of 'jQuery'.", + "License": "MIT + file LICENSE", + "Encoding": "UTF-8", + "Config/testthat/edition": "3", + "RoxygenNote": "7.0.2", + "Imports": "htmltools", + "Suggests": "testthat", + "NeedsCompilation": "no", + "Packaged": "2021-04-26 16:40:21 UTC; cpsievert", + "Author": "Carson Sievert [aut, cre] (),\n Joe Cheng [aut],\n RStudio [cph],\n jQuery Foundation [cph] (jQuery library and jQuery UI library),\n jQuery contributors [ctb, cph] (jQuery library; authors listed in\n inst/lib/jquery-AUTHORS.txt)", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN", + "Date/Publication": "2021-04-26 17:10:02 UTC", + "Built": "R 4.3.0; ; 2023-04-12 11:15:31 UTC; unix" + } + }, + "jsonlite": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "jsonlite", + "Version": "1.8.4", + "Title": "A Simple and Robust JSON Parser and Generator for R", + "License": "MIT + file LICENSE", + "Depends": "methods", + "Authors@R": "c(\n person(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"jeroen@berkeley.edu\",\n comment = c(ORCID = \"0000-0002-4035-0289\")),\n person(\"Duncan\", \"Temple Lang\", role = \"ctb\"),\n person(\"Lloyd\", \"Hilaiel\", role = \"cph\", comment=\"author of bundled libyajl\"))", + "URL": "https://arxiv.org/abs/1403.2805 (paper)", + "BugReports": "https://github.com/jeroen/jsonlite/issues", + "Maintainer": "Jeroen Ooms ", + "VignetteBuilder": "knitr, R.rsp", + "Description": "A reasonably fast JSON parser and generator, optimized for statistical \n data and the web. Offers simple, flexible tools for working with JSON in R, and\n is particularly powerful for building pipelines and interacting with a web API. \n The implementation is based on the mapping described in the vignette (Ooms, 2014).\n In addition to converting JSON data from/to R objects, 'jsonlite' contains \n functions to stream, validate, and prettify JSON data. The unit tests included \n with the package verify that all edge cases are encoded and decoded consistently \n for use with dynamic data in systems and applications.", + "Suggests": "httr, vctrs, testthat, knitr, rmarkdown, R.rsp, sf", + "RoxygenNote": "7.2.1", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Packaged": "2022-12-05 23:21:23 UTC; jeroen", + "Author": "Jeroen Ooms [aut, cre] (),\n Duncan Temple Lang [ctb],\n Lloyd Hilaiel [cph] (author of bundled libyajl)", + "Repository": "CRAN", + "Date/Publication": "2022-12-06 08:10:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:18:22 UTC; unix", + "Archs": "jsonlite.so.dSYM" + } + }, + "knitr": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "knitr", + "Type": "Package", + "Title": "A General-Purpose Package for Dynamic Report Generation in R", + "Version": "1.42", + "Authors@R": "c(\n person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")),\n person(\"Abhraneel\", \"Sarma\", role = \"ctb\"),\n person(\"Adam\", \"Vogt\", role = \"ctb\"),\n person(\"Alastair\", \"Andrew\", role = \"ctb\"),\n person(\"Alex\", \"Zvoleff\", role = \"ctb\"),\n person(\"Amar\", \"Al-Zubaidi\", role = \"ctb\"),\n person(\"Andre\", \"Simon\", role = \"ctb\", comment = \"the CSS files under inst/themes/ were derived from the Highlight package http://www.andre-simon.de\"),\n person(\"Aron\", \"Atkins\", role = \"ctb\"),\n person(\"Aaron\", \"Wolen\", role = \"ctb\"),\n person(\"Ashley\", \"Manton\", role = \"ctb\"),\n person(\"Atsushi\", \"Yasumoto\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8335-495X\")),\n person(\"Ben\", \"Baumer\", role = \"ctb\"),\n person(\"Brian\", \"Diggs\", role = \"ctb\"),\n person(\"Brian\", \"Zhang\", role = \"ctb\"),\n person(\"Bulat\", \"Yapparov\", role = \"ctb\"),\n person(\"Cassio\", \"Pereira\", role = \"ctb\"),\n person(\"Christophe\", \"Dervieux\", role = \"ctb\"),\n person(\"David\", \"Hall\", role = \"ctb\"),\n person(\"David\", \"Hugh-Jones\", role = \"ctb\"),\n person(\"David\", \"Robinson\", role = \"ctb\"),\n person(\"Doug\", \"Hemken\", role = \"ctb\"),\n person(\"Duncan\", \"Murdoch\", role = \"ctb\"),\n person(\"Elio\", \"Campitelli\", role = \"ctb\"),\n person(\"Ellis\", \"Hughes\", role = \"ctb\"),\n person(\"Emily\", \"Riederer\", role = \"ctb\"),\n person(\"Fabian\", \"Hirschmann\", role = \"ctb\"),\n person(\"Fitch\", \"Simeon\", role = \"ctb\"),\n person(\"Forest\", \"Fang\", role = \"ctb\"),\n person(c(\"Frank\", \"E\", \"Harrell\", \"Jr\"), role = \"ctb\", comment = \"the Sweavel package at inst/misc/Sweavel.sty\"),\n person(\"Garrick\", \"Aden-Buie\", role = \"ctb\"),\n person(\"Gregoire\", \"Detrez\", role = \"ctb\"),\n person(\"Hadley\", \"Wickham\", role = \"ctb\"),\n person(\"Hao\", \"Zhu\", role = \"ctb\"),\n person(\"Heewon\", \"Jeon\", role = \"ctb\"),\n person(\"Henrik\", \"Bengtsson\", role = \"ctb\"),\n person(\"Hiroaki\", \"Yutani\", role = \"ctb\"),\n person(\"Ian\", \"Lyttle\", role = \"ctb\"),\n person(\"Hodges\", \"Daniel\", role = \"ctb\"),\n person(\"Jacob\", \"Bien\", role = \"ctb\"),\n person(\"Jake\", \"Burkhead\", role = \"ctb\"),\n person(\"James\", \"Manton\", role = \"ctb\"),\n person(\"Jared\", \"Lander\", role = \"ctb\"),\n person(\"Jason\", \"Punyon\", role = \"ctb\"),\n person(\"Javier\", \"Luraschi\", role = \"ctb\"),\n person(\"Jeff\", \"Arnold\", role = \"ctb\"),\n person(\"Jenny\", \"Bryan\", role = \"ctb\"),\n person(\"Jeremy\", \"Ashkenas\", role = c(\"ctb\", \"cph\"), comment = \"the CSS file at inst/misc/docco-classic.css\"),\n person(\"Jeremy\", \"Stephens\", role = \"ctb\"),\n person(\"Jim\", \"Hester\", role = \"ctb\"),\n person(\"Joe\", \"Cheng\", role = \"ctb\"),\n person(\"Johannes\", \"Ranke\", role = \"ctb\"),\n person(\"John\", \"Honaker\", role = \"ctb\"),\n person(\"John\", \"Muschelli\", role = \"ctb\"),\n person(\"Jonathan\", \"Keane\", role = \"ctb\"),\n person(\"JJ\", \"Allaire\", role = \"ctb\"),\n person(\"Johan\", \"Toloe\", role = \"ctb\"),\n person(\"Jonathan\", \"Sidi\", role = \"ctb\"),\n person(\"Joseph\", \"Larmarange\", role = \"ctb\"),\n person(\"Julien\", \"Barnier\", role = \"ctb\"),\n person(\"Kaiyin\", \"Zhong\", role = \"ctb\"),\n person(\"Kamil\", \"Slowikowski\", role = \"ctb\"),\n person(\"Karl\", \"Forner\", role = \"ctb\"),\n person(c(\"Kevin\", \"K.\"), \"Smith\", role = \"ctb\"),\n person(\"Kirill\", \"Mueller\", role = \"ctb\"),\n person(\"Kohske\", \"Takahashi\", role = \"ctb\"),\n person(\"Lorenz\", \"Walthert\", role = \"ctb\"),\n person(\"Lucas\", \"Gallindo\", role = \"ctb\"),\n person(\"Marius\", \"Hofert\", role = \"ctb\"),\n person(\"Martin\", \"Modrák\", role = \"ctb\"),\n person(\"Michael\", \"Chirico\", role = \"ctb\"),\n person(\"Michael\", \"Friendly\", role = \"ctb\"),\n person(\"Michal\", \"Bojanowski\", role = \"ctb\"),\n person(\"Michel\", \"Kuhlmann\", role = \"ctb\"),\n person(\"Miller\", \"Patrick\", role = \"ctb\"),\n person(\"Nacho\", \"Caballero\", role = \"ctb\"),\n person(\"Nick\", \"Salkowski\", role = \"ctb\"),\n person(\"Niels Richard\", \"Hansen\", role = \"ctb\"),\n person(\"Noam\", \"Ross\", role = \"ctb\"),\n person(\"Obada\", \"Mahdi\", role = \"ctb\"),\n person(\"Pavel N.\", \"Krivitsky\", role = \"ctb\", comment=c(ORCID = \"0000-0002-9101-3362\")),\n person(\"Pedro\", \"Faria\", role = \"ctb\"),\n person(\"Qiang\", \"Li\", role = \"ctb\"),\n person(\"Ramnath\", \"Vaidyanathan\", role = \"ctb\"),\n person(\"Richard\", \"Cotton\", role = \"ctb\"),\n person(\"Robert\", \"Krzyzanowski\", role = \"ctb\"),\n person(\"Rodrigo\", \"Copetti\", role = \"ctb\"),\n person(\"Romain\", \"Francois\", role = \"ctb\"),\n person(\"Ruaridh\", \"Williamson\", role = \"ctb\"),\n person(\"Sagiru\", \"Mati\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1413-3974\")),\n person(\"Scott\", \"Kostyshak\", role = \"ctb\"),\n person(\"Sebastian\", \"Meyer\", role = \"ctb\"),\n person(\"Sietse\", \"Brouwer\", role = \"ctb\"),\n person(c(\"Simon\", \"de\"), \"Bernard\", role = \"ctb\"),\n person(\"Sylvain\", \"Rousseau\", role = \"ctb\"),\n person(\"Taiyun\", \"Wei\", role = \"ctb\"),\n person(\"Thibaut\", \"Assus\", role = \"ctb\"),\n person(\"Thibaut\", \"Lamadon\", role = \"ctb\"),\n person(\"Thomas\", \"Leeper\", role = \"ctb\"),\n person(\"Tim\", \"Mastny\", role = \"ctb\"),\n person(\"Tom\", \"Torsney-Weir\", role = \"ctb\"),\n person(\"Trevor\", \"Davis\", role = \"ctb\"),\n person(\"Viktoras\", \"Veitas\", role = \"ctb\"),\n person(\"Weicheng\", \"Zhu\", role = \"ctb\"),\n person(\"Wush\", \"Wu\", role = \"ctb\"),\n person(\"Zachary\", \"Foster\", role = \"ctb\"),\n person(\"Zhian N.\", \"Kamvar\", role = \"ctb\", comment = c(ORCID = \"0000-0003-1458-7108\"))\n )", + "Description": "Provides a general-purpose tool for dynamic report generation in R\n using Literate Programming techniques.", + "Depends": "R (>= 3.3.0)", + "Imports": "evaluate (>= 0.15), highr, methods, yaml (>= 2.1.19), xfun (>=\n0.34), tools", + "Suggests": "markdown (>= 1.3), formatR, testit, digest, rgl (>=\n0.95.1201), codetools, rmarkdown, htmlwidgets (>= 0.7),\nwebshot, tikzDevice (>= 0.10), tinytex, reticulate (>= 1.4),\nJuliaCall (>= 0.11.1), magick, png, jpeg, gifski, xml2 (>=\n1.2.0), httr, DBI (>= 0.4-1), showtext, tibble, sass, bslib,\nragg, gridSVG, styler (>= 1.2.0), targets (>= 0.6.0)", + "License": "GPL", + "URL": "https://yihui.org/knitr/", + "BugReports": "https://github.com/yihui/knitr/issues", + "Encoding": "UTF-8", + "VignetteBuilder": "knitr", + "SystemRequirements": "Package vignettes based on R Markdown v2 or\nreStructuredText require Pandoc (http://pandoc.org). The\nfunction rst2pdf() requires rst2pdf\n(https://github.com/rst2pdf/rst2pdf).", + "Collate": "'block.R' 'cache.R' 'utils.R' 'citation.R' 'hooks-html.R'\n'plot.R' 'defaults.R' 'concordance.R' 'engine.R' 'highlight.R'\n'themes.R' 'header.R' 'hooks-asciidoc.R' 'hooks-chunk.R'\n'hooks-extra.R' 'hooks-latex.R' 'hooks-md.R' 'hooks-rst.R'\n'hooks-textile.R' 'hooks.R' 'output.R' 'package.R' 'pandoc.R'\n'params.R' 'parser.R' 'pattern.R' 'rocco.R' 'spin.R' 'table.R'\n'template.R' 'utils-conversion.R' 'utils-rd2html.R'\n'utils-string.R' 'utils-sweave.R' 'utils-upload.R'\n'utils-vignettes.R' 'zzz.R'", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Packaged": "2023-01-20 05:51:44 UTC; yihui", + "Author": "Yihui Xie [aut, cre] (),\n Abhraneel Sarma [ctb],\n Adam Vogt [ctb],\n Alastair Andrew [ctb],\n Alex Zvoleff [ctb],\n Amar Al-Zubaidi [ctb],\n Andre Simon [ctb] (the CSS files under inst/themes/ were derived from\n the Highlight package http://www.andre-simon.de),\n Aron Atkins [ctb],\n Aaron Wolen [ctb],\n Ashley Manton [ctb],\n Atsushi Yasumoto [ctb] (),\n Ben Baumer [ctb],\n Brian Diggs [ctb],\n Brian Zhang [ctb],\n Bulat Yapparov [ctb],\n Cassio Pereira [ctb],\n Christophe Dervieux [ctb],\n David Hall [ctb],\n David Hugh-Jones [ctb],\n David Robinson [ctb],\n Doug Hemken [ctb],\n Duncan Murdoch [ctb],\n Elio Campitelli [ctb],\n Ellis Hughes [ctb],\n Emily Riederer [ctb],\n Fabian Hirschmann [ctb],\n Fitch Simeon [ctb],\n Forest Fang [ctb],\n Frank E Harrell Jr [ctb] (the Sweavel package at inst/misc/Sweavel.sty),\n Garrick Aden-Buie [ctb],\n Gregoire Detrez [ctb],\n Hadley Wickham [ctb],\n Hao Zhu [ctb],\n Heewon Jeon [ctb],\n Henrik Bengtsson [ctb],\n Hiroaki Yutani [ctb],\n Ian Lyttle [ctb],\n Hodges Daniel [ctb],\n Jacob Bien [ctb],\n Jake Burkhead [ctb],\n James Manton [ctb],\n Jared Lander [ctb],\n Jason Punyon [ctb],\n Javier Luraschi [ctb],\n Jeff Arnold [ctb],\n Jenny Bryan [ctb],\n Jeremy Ashkenas [ctb, cph] (the CSS file at\n inst/misc/docco-classic.css),\n Jeremy Stephens [ctb],\n Jim Hester [ctb],\n Joe Cheng [ctb],\n Johannes Ranke [ctb],\n John Honaker [ctb],\n John Muschelli [ctb],\n Jonathan Keane [ctb],\n JJ Allaire [ctb],\n Johan Toloe [ctb],\n Jonathan Sidi [ctb],\n Joseph Larmarange [ctb],\n Julien Barnier [ctb],\n Kaiyin Zhong [ctb],\n Kamil Slowikowski [ctb],\n Karl Forner [ctb],\n Kevin K. Smith [ctb],\n Kirill Mueller [ctb],\n Kohske Takahashi [ctb],\n Lorenz Walthert [ctb],\n Lucas Gallindo [ctb],\n Marius Hofert [ctb],\n Martin Modrák [ctb],\n Michael Chirico [ctb],\n Michael Friendly [ctb],\n Michal Bojanowski [ctb],\n Michel Kuhlmann [ctb],\n Miller Patrick [ctb],\n Nacho Caballero [ctb],\n Nick Salkowski [ctb],\n Niels Richard Hansen [ctb],\n Noam Ross [ctb],\n Obada Mahdi [ctb],\n Pavel N. Krivitsky [ctb] (),\n Pedro Faria [ctb],\n Qiang Li [ctb],\n Ramnath Vaidyanathan [ctb],\n Richard Cotton [ctb],\n Robert Krzyzanowski [ctb],\n Rodrigo Copetti [ctb],\n Romain Francois [ctb],\n Ruaridh Williamson [ctb],\n Sagiru Mati [ctb] (),\n Scott Kostyshak [ctb],\n Sebastian Meyer [ctb],\n Sietse Brouwer [ctb],\n Simon de Bernard [ctb],\n Sylvain Rousseau [ctb],\n Taiyun Wei [ctb],\n Thibaut Assus [ctb],\n Thibaut Lamadon [ctb],\n Thomas Leeper [ctb],\n Tim Mastny [ctb],\n Tom Torsney-Weir [ctb],\n Trevor Davis [ctb],\n Viktoras Veitas [ctb],\n Weicheng Zhu [ctb],\n Wush Wu [ctb],\n Zachary Foster [ctb],\n Zhian N. Kamvar [ctb] ()", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN", + "Date/Publication": "2023-01-25 10:20:08 UTC", + "Built": "R 4.3.0; ; 2023-04-12 11:17:12 UTC; unix" + } + }, + "lifecycle": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "lifecycle", + "Title": "Manage the Life Cycle of your Package Functions", + "Version": "1.0.3", + "Authors@R": "c(\n person(\"Lionel\", \"Henry\", , \"lionel@rstudio.com\", role = c(\"aut\", \"cre\")),\n person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = \"aut\",\n comment = c(ORCID = \"0000-0003-4757-117X\")),\n person(\"RStudio\", role = c(\"cph\", \"fnd\"))\n )", + "Description": "Manage the life cycle of your exported functions with shared\n conventions, documentation badges, and user-friendly deprecation\n warnings.", + "License": "MIT + file LICENSE", + "URL": "https://lifecycle.r-lib.org/, https://github.com/r-lib/lifecycle", + "BugReports": "https://github.com/r-lib/lifecycle/issues", + "Depends": "R (>= 3.4)", + "Imports": "cli (>= 3.4.0), glue, rlang (>= 1.0.6)", + "Suggests": "covr, crayon, knitr, lintr, rmarkdown, testthat (>= 3.0.1),\ntibble, tidyverse, tools, vctrs, withr", + "VignetteBuilder": "knitr", + "Config/testthat/edition": "3", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.1", + "NeedsCompilation": "no", + "Packaged": "2022-10-07 08:50:55 UTC; lionel", + "Author": "Lionel Henry [aut, cre],\n Hadley Wickham [aut] (),\n RStudio [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN", + "Date/Publication": "2022-10-07 09:50:02 UTC", + "Built": "R 4.3.0; ; 2023-04-12 06:43:28 UTC; unix" + } + }, + "magrittr": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Type": "Package", + "Package": "magrittr", + "Title": "A Forward-Pipe Operator for R", + "Version": "2.0.3", + "Authors@R": "c(\n person(\"Stefan Milton\", \"Bache\", , \"stefan@stefanbache.dk\", role = c(\"aut\", \"cph\"),\n comment = \"Original author and creator of magrittr\"),\n person(\"Hadley\", \"Wickham\", , \"hadley@rstudio.com\", role = \"aut\"),\n person(\"Lionel\", \"Henry\", , \"lionel@rstudio.com\", role = \"cre\"),\n person(\"RStudio\", role = c(\"cph\", \"fnd\"))\n )", + "Description": "Provides a mechanism for chaining commands with a new\n forward-pipe operator, %>%. This operator will forward a value, or the\n result of an expression, into the next function call/expression.\n There is flexible support for the type of right-hand side expressions.\n For more information, see package vignette. To quote Rene Magritte,\n \"Ceci n'est pas un pipe.\"", + "License": "MIT + file LICENSE", + "URL": "https://magrittr.tidyverse.org,\nhttps://github.com/tidyverse/magrittr", + "BugReports": "https://github.com/tidyverse/magrittr/issues", + "Depends": "R (>= 3.4.0)", + "Suggests": "covr, knitr, rlang, rmarkdown, testthat", + "VignetteBuilder": "knitr", + "ByteCompile": "Yes", + "Config/Needs/website": "tidyverse/tidytemplate", + "Encoding": "UTF-8", + "RoxygenNote": "7.1.2", + "NeedsCompilation": "yes", + "Packaged": "2022-03-29 09:34:37 UTC; lionel", + "Author": "Stefan Milton Bache [aut, cph] (Original author and creator of\n magrittr),\n Hadley Wickham [aut],\n Lionel Henry [cre],\n RStudio [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN", + "Date/Publication": "2022-03-30 07:30:09 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:07:22 UTC; unix", + "Archs": "magrittr.so.dSYM" + } + }, + "memoise": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "memoise", + "Title": "'Memoisation' of Functions", + "Version": "2.0.1", + "Authors@R": "\n c(person(given = \"Hadley\",\n family = \"Wickham\",\n role = \"aut\",\n email = \"hadley@rstudio.com\"),\n person(given = \"Jim\",\n family = \"Hester\",\n role = \"aut\"),\n person(given = \"Winston\",\n family = \"Chang\",\n role = c(\"aut\", \"cre\"),\n email = \"winston@rstudio.com\"),\n person(given = \"Kirill\",\n family = \"Müller\",\n role = \"aut\",\n email = \"krlmlr+r@mailbox.org\"),\n person(given = \"Daniel\",\n family = \"Cook\",\n role = \"aut\",\n email = \"danielecook@gmail.com\"),\n person(given = \"Mark\",\n family = \"Edmondson\",\n role = \"ctb\",\n email = \"r@sunholo.com\"))", + "Description": "Cache the results of a function so that when you\n call it again with the same arguments it returns the previously computed\n value.", + "License": "MIT + file LICENSE", + "URL": "https://memoise.r-lib.org, https://github.com/r-lib/memoise", + "BugReports": "https://github.com/r-lib/memoise/issues", + "Imports": "rlang (>= 0.4.10), cachem", + "Suggests": "digest, aws.s3, covr, googleAuthR, googleCloudStorageR, httr,\ntestthat", + "Encoding": "UTF-8", + "RoxygenNote": "7.1.2", + "NeedsCompilation": "no", + "Packaged": "2021-11-24 21:24:50 UTC; jhester", + "Author": "Hadley Wickham [aut],\n Jim Hester [aut],\n Winston Chang [aut, cre],\n Kirill Müller [aut],\n Daniel Cook [aut],\n Mark Edmondson [ctb]", + "Maintainer": "Winston Chang ", + "Repository": "CRAN", + "Date/Publication": "2021-11-26 16:11:10 UTC", + "Built": "R 4.3.0; ; 2023-04-17 22:23:05 UTC; unix" + } + }, + "mime": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "mime", + "Type": "Package", + "Title": "Map Filenames to MIME Types", + "Version": "0.12", + "Authors@R": "c(\n person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")),\n person(\"Jeffrey\", \"Horner\", role = \"ctb\"),\n person(\"Beilei\", \"Bian\", role = \"ctb\")\n )", + "Description": "Guesses the MIME type from a filename extension using the data\n derived from /etc/mime.types in UNIX-type systems.", + "Imports": "tools", + "License": "GPL", + "URL": "https://github.com/yihui/mime", + "BugReports": "https://github.com/yihui/mime/issues", + "RoxygenNote": "7.1.1", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Packaged": "2021-09-28 02:06:04 UTC; yihui", + "Author": "Yihui Xie [aut, cre] (),\n Jeffrey Horner [ctb],\n Beilei Bian [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN", + "Date/Publication": "2021-09-28 05:00:05 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:09:16 UTC; unix", + "Archs": "mime.so.dSYM" + } + }, + "rappdirs": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Type": "Package", + "Package": "rappdirs", + "Title": "Application Directories: Determine Where to Save Data, Caches,\nand Logs", + "Version": "0.3.3", + "Authors@R": "\n c(person(given = \"Hadley\",\n family = \"Wickham\",\n role = c(\"trl\", \"cre\", \"cph\"),\n email = \"hadley@rstudio.com\"),\n person(given = \"RStudio\",\n role = \"cph\"),\n person(given = \"Sridhar\",\n family = \"Ratnakumar\",\n role = \"aut\"),\n person(given = \"Trent\",\n family = \"Mick\",\n role = \"aut\"),\n person(given = \"ActiveState\",\n role = \"cph\",\n comment = \"R/appdir.r, R/cache.r, R/data.r, R/log.r translated from appdirs\"),\n person(given = \"Eddy\",\n family = \"Petrisor\",\n role = \"ctb\"),\n person(given = \"Trevor\",\n family = \"Davis\",\n role = c(\"trl\", \"aut\")),\n person(given = \"Gabor\",\n family = \"Csardi\",\n role = \"ctb\"),\n person(given = \"Gregory\",\n family = \"Jefferis\",\n role = \"ctb\"))", + "Description": "An easy way to determine which directories on the\n users computer you should use to save data, caches and logs. A port of\n Python's 'Appdirs' () to\n R.", + "License": "MIT + file LICENSE", + "URL": "https://rappdirs.r-lib.org, https://github.com/r-lib/rappdirs", + "BugReports": "https://github.com/r-lib/rappdirs/issues", + "Depends": "R (>= 3.2)", + "Suggests": "roxygen2, testthat (>= 3.0.0), covr, withr", + "Copyright": "Original python appdirs module copyright (c) 2010\nActiveState Software Inc. R port copyright Hadley Wickham,\nRStudio. See file LICENSE for details.", + "Encoding": "UTF-8", + "RoxygenNote": "7.1.1", + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Packaged": "2021-01-28 22:29:57 UTC; hadley", + "Author": "Hadley Wickham [trl, cre, cph],\n RStudio [cph],\n Sridhar Ratnakumar [aut],\n Trent Mick [aut],\n ActiveState [cph] (R/appdir.r, R/cache.r, R/data.r, R/log.r translated\n from appdirs),\n Eddy Petrisor [ctb],\n Trevor Davis [trl, aut],\n Gabor Csardi [ctb],\n Gregory Jefferis [ctb]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN", + "Date/Publication": "2021-01-31 05:40:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:10:28 UTC; unix", + "Archs": "rappdirs.so.dSYM" + } + }, + "rlang": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "rlang", + "Version": "1.1.1", + "Title": "Functions for Base Types and Core R and 'Tidyverse' Features", + "Description": "A toolbox for working with base types, core R features\n like the condition system, and core 'Tidyverse' features like tidy\n evaluation.", + "Authors@R": "c(\n person(\"Lionel\", \"Henry\", ,\"lionel@posit.co\", c(\"aut\", \"cre\")),\n person(\"Hadley\", \"Wickham\", ,\"hadley@posit.co\", \"aut\"),\n person(given = \"mikefc\",\n email = \"mikefc@coolbutuseless.com\", \n role = \"cph\", \n comment = \"Hash implementation based on Mike's xxhashlite\"),\n person(given = \"Yann\",\n family = \"Collet\",\n role = \"cph\", \n comment = \"Author of the embedded xxHash library\"),\n person(given = \"Posit, PBC\", role = c(\"cph\", \"fnd\"))\n )", + "License": "MIT + file LICENSE", + "ByteCompile": "true", + "Biarch": "true", + "Depends": "R (>= 3.5.0)", + "Imports": "utils", + "Suggests": "cli (>= 3.1.0), covr, crayon, fs, glue, knitr, magrittr,\nmethods, pillar, rmarkdown, stats, testthat (>= 3.0.0), tibble,\nusethis, vctrs (>= 0.2.3), withr", + "Enhances": "winch", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "URL": "https://rlang.r-lib.org, https://github.com/r-lib/rlang", + "BugReports": "https://github.com/r-lib/rlang/issues", + "Config/testthat/edition": "3", + "Config/Needs/website": "dplyr, tidyverse/tidytemplate", + "NeedsCompilation": "yes", + "Packaged": "2023-04-28 10:48:43 UTC; lionel", + "Author": "Lionel Henry [aut, cre],\n Hadley Wickham [aut],\n mikefc [cph] (Hash implementation based on Mike's xxhashlite),\n Yann Collet [cph] (Author of the embedded xxHash library),\n Posit, PBC [cph, fnd]", + "Maintainer": "Lionel Henry ", + "Repository": "CRAN", + "Date/Publication": "2023-04-28 22:30:03 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-30 06:48:25 UTC; unix", + "Archs": "rlang.so.dSYM" + } + }, + "rmarkdown": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Type": "Package", + "Package": "rmarkdown", + "Title": "Dynamic Documents for R", + "Version": "2.21", + "Authors@R": "c(\n person(\"JJ\", \"Allaire\", , \"jj@posit.co\", role = \"aut\"),\n person(\"Yihui\", \"Xie\", , \"xie@yihui.name\", role = c(\"aut\", \"cre\"), comment = c(ORCID = \"0000-0003-0645-5666\")),\n person(\"Christophe\", \"Dervieux\", , \"cderv@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-4474-2498\")),\n person(\"Jonathan\", \"McPherson\", , \"jonathan@posit.co\", role = \"aut\"),\n person(\"Javier\", \"Luraschi\", role = \"aut\"),\n person(\"Kevin\", \"Ushey\", , \"kevin@posit.co\", role = \"aut\"),\n person(\"Aron\", \"Atkins\", , \"aron@posit.co\", role = \"aut\"),\n person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"),\n person(\"Joe\", \"Cheng\", , \"joe@posit.co\", role = \"aut\"),\n person(\"Winston\", \"Chang\", , \"winston@posit.co\", role = \"aut\"),\n person(\"Richard\", \"Iannone\", , \"rich@posit.co\", role = \"aut\", comment = c(ORCID = \"0000-0003-3925-190X\")),\n person(\"Andrew\", \"Dunning\", role = \"ctb\", comment = c(ORCID = \"0000-0003-0464-5036\")),\n person(\"Atsushi\", \"Yasumoto\", role = c(\"ctb\", \"cph\"), comment = c(ORCID = \"0000-0002-8335-495X\", cph = \"Number sections Lua filter\")),\n person(\"Barret\", \"Schloerke\", role = \"ctb\"),\n person(\"Carson\", \"Sievert\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4958-2844\")), \n person(\"Devon\", \"Ryan\", , \"dpryan79@gmail.com\", role = \"ctb\", comment = c(ORCID = \"0000-0002-8549-0971\")),\n person(\"Frederik\", \"Aust\", , \"frederik.aust@uni-koeln.de\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4900-788X\")),\n person(\"Jeff\", \"Allen\", , \"jeff@posit.co\", role = \"ctb\"), \n person(\"JooYoung\", \"Seo\", role = \"ctb\", comment = c(ORCID = \"0000-0002-4064-6012\")),\n person(\"Malcolm\", \"Barrett\", role = \"ctb\"),\n person(\"Rob\", \"Hyndman\", , \"Rob.Hyndman@monash.edu\", role = \"ctb\"),\n person(\"Romain\", \"Lesur\", role = \"ctb\"),\n person(\"Roy\", \"Storey\", role = \"ctb\"),\n person(\"Ruben\", \"Arslan\", , \"ruben.arslan@uni-goettingen.de\", role = \"ctb\"),\n person(\"Sergio\", \"Oller\", role = \"ctb\"),\n person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")),\n person(, \"jQuery UI contributors\", role = c(\"ctb\", \"cph\"), comment = \"jQuery UI library; authors listed in inst/rmd/h/jqueryui-AUTHORS.txt\"),\n person(\"Mark\", \"Otto\", role = \"ctb\", comment = \"Bootstrap library\"),\n person(\"Jacob\", \"Thornton\", role = \"ctb\", comment = \"Bootstrap library\"),\n person(, \"Bootstrap contributors\", role = \"ctb\", comment = \"Bootstrap library\"),\n person(, \"Twitter, Inc\", role = \"cph\", comment = \"Bootstrap library\"),\n person(\"Alexander\", \"Farkas\", role = c(\"ctb\", \"cph\"), comment = \"html5shiv library\"),\n person(\"Scott\", \"Jehl\", role = c(\"ctb\", \"cph\"), comment = \"Respond.js library\"),\n person(\"Ivan\", \"Sagalaev\", role = c(\"ctb\", \"cph\"), comment = \"highlight.js library\"),\n person(\"Greg\", \"Franko\", role = c(\"ctb\", \"cph\"), comment = \"tocify library\"),\n person(\"John\", \"MacFarlane\", role = c(\"ctb\", \"cph\"), comment = \"Pandoc templates\"),\n person(, \"Google, Inc.\", role = c(\"ctb\", \"cph\"), comment = \"ioslides library\"),\n person(\"Dave\", \"Raggett\", role = \"ctb\", comment = \"slidy library\"),\n person(, \"W3C\", role = \"cph\", comment = \"slidy library\"),\n person(\"Dave\", \"Gandy\", role = c(\"ctb\", \"cph\"), comment = \"Font-Awesome\"),\n person(\"Ben\", \"Sperry\", role = \"ctb\", comment = \"Ionicons\"),\n person(, \"Drifty\", role = \"cph\", comment = \"Ionicons\"),\n person(\"Aidan\", \"Lister\", role = c(\"ctb\", \"cph\"), comment = \"jQuery StickyTabs\"),\n person(\"Benct Philip\", \"Jonsson\", role = c(\"ctb\", \"cph\"), comment = \"pagebreak Lua filter\"),\n person(\"Albert\", \"Krewinkel\", role = c(\"ctb\", \"cph\"), comment = \"pagebreak Lua filter\")\n )", + "Maintainer": "Yihui Xie ", + "Description": "Convert R Markdown documents into a variety of formats.", + "License": "GPL-3", + "URL": "https://github.com/rstudio/rmarkdown,\nhttps://pkgs.rstudio.com/rmarkdown/", + "BugReports": "https://github.com/rstudio/rmarkdown/issues", + "Depends": "R (>= 3.0)", + "Imports": "bslib (>= 0.2.5.1), evaluate (>= 0.13), fontawesome (>=\n0.5.0), htmltools (>= 0.5.1), jquerylib, jsonlite, knitr (>=\n1.22), methods, stringr (>= 1.2.0), tinytex (>= 0.31), tools,\nutils, xfun (>= 0.36), yaml (>= 2.1.19)", + "Suggests": "digest, dygraphs, fs, rsconnect, downlit (>= 0.4.0), katex\n(>= 1.4.0), sass (>= 0.4.0), shiny (>= 1.6.0), testthat (>=\n3.0.3), tibble, vctrs, withr (>= 2.4.2)", + "VignetteBuilder": "knitr", + "Config/Needs/website": "rstudio/quillt, pkgdown", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "SystemRequirements": "pandoc (>= 1.14) - http://pandoc.org", + "NeedsCompilation": "no", + "Packaged": "2023-03-25 21:50:22 UTC; yihui", + "Author": "JJ Allaire [aut],\n Yihui Xie [aut, cre] (),\n Christophe Dervieux [aut] (),\n Jonathan McPherson [aut],\n Javier Luraschi [aut],\n Kevin Ushey [aut],\n Aron Atkins [aut],\n Hadley Wickham [aut],\n Joe Cheng [aut],\n Winston Chang [aut],\n Richard Iannone [aut] (),\n Andrew Dunning [ctb] (),\n Atsushi Yasumoto [ctb, cph] (,\n Number sections Lua filter),\n Barret Schloerke [ctb],\n Carson Sievert [ctb] (),\n Devon Ryan [ctb] (),\n Frederik Aust [ctb] (),\n Jeff Allen [ctb],\n JooYoung Seo [ctb] (),\n Malcolm Barrett [ctb],\n Rob Hyndman [ctb],\n Romain Lesur [ctb],\n Roy Storey [ctb],\n Ruben Arslan [ctb],\n Sergio Oller [ctb],\n Posit Software, PBC [cph, fnd],\n jQuery UI contributors [ctb, cph] (jQuery UI library; authors listed in\n inst/rmd/h/jqueryui-AUTHORS.txt),\n Mark Otto [ctb] (Bootstrap library),\n Jacob Thornton [ctb] (Bootstrap library),\n Bootstrap contributors [ctb] (Bootstrap library),\n Twitter, Inc [cph] (Bootstrap library),\n Alexander Farkas [ctb, cph] (html5shiv library),\n Scott Jehl [ctb, cph] (Respond.js library),\n Ivan Sagalaev [ctb, cph] (highlight.js library),\n Greg Franko [ctb, cph] (tocify library),\n John MacFarlane [ctb, cph] (Pandoc templates),\n Google, Inc. [ctb, cph] (ioslides library),\n Dave Raggett [ctb] (slidy library),\n W3C [cph] (slidy library),\n Dave Gandy [ctb, cph] (Font-Awesome),\n Ben Sperry [ctb] (Ionicons),\n Drifty [cph] (Ionicons),\n Aidan Lister [ctb, cph] (jQuery StickyTabs),\n Benct Philip Jonsson [ctb, cph] (pagebreak Lua filter),\n Albert Krewinkel [ctb, cph] (pagebreak Lua filter)", + "Repository": "CRAN", + "Date/Publication": "2023-03-26 22:00:03 UTC", + "Built": "R 4.3.0; ; 2023-05-15 19:16:40 UTC; unix" + } + }, + "sass": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Type": "Package", + "Package": "sass", + "Version": "0.4.6", + "Title": "Syntactically Awesome Style Sheets ('Sass')", + "Description": "An 'SCSS' compiler, powered by the 'LibSass' library. With this,\n R developers can use variables, inheritance, and functions to generate\n dynamic style sheets. The package uses the 'Sass CSS' extension language,\n which is stable, powerful, and CSS compatible.", + "Authors@R": "c(\n person(\"Joe\", \"Cheng\", , \"joe@rstudio.com\", \"aut\"),\n person(\"Timothy\", \"Mastny\", , \"tim.mastny@gmail.com\", \"aut\"),\n person(\"Richard\", \"Iannone\", , \"rich@rstudio.com\", \"aut\",\n comment = c(ORCID = \"0000-0003-3925-190X\")),\n person(\"Barret\", \"Schloerke\", , \"barret@rstudio.com\", \"aut\",\n comment = c(ORCID = \"0000-0001-9986-114X\")),\n person(\"Carson\", \"Sievert\", , \"carson@rstudio.com\", c(\"aut\", \"cre\"),\n comment = c(ORCID = \"0000-0002-4958-2844\")),\n person(\"Christophe\", \"Dervieux\", , \"cderv@rstudio.com\", c(\"ctb\"),\n comment = c(ORCID = \"0000-0003-4474-2498\")),\n person(family = \"RStudio\", role = c(\"cph\", \"fnd\")),\n person(family = \"Sass Open Source Foundation\", role = c(\"ctb\", \"cph\"),\n comment = \"LibSass library\"),\n person(\"Greter\", \"Marcel\", role = c(\"ctb\", \"cph\"),\n comment = \"LibSass library\"),\n person(\"Mifsud\", \"Michael\", role = c(\"ctb\", \"cph\"),\n comment = \"LibSass library\"),\n person(\"Hampton\", \"Catlin\", role = c(\"ctb\", \"cph\"),\n comment = \"LibSass library\"),\n person(\"Natalie\", \"Weizenbaum\", role = c(\"ctb\", \"cph\"),\n comment = \"LibSass library\"),\n person(\"Chris\", \"Eppstein\", role = c(\"ctb\", \"cph\"),\n comment = \"LibSass library\"),\n person(\"Adams\", \"Joseph\", role = c(\"ctb\", \"cph\"),\n comment = \"json.cpp\"),\n person(\"Trifunovic\", \"Nemanja\", role = c(\"ctb\", \"cph\"),\n comment = \"utf8.h\")\n )", + "License": "MIT + file LICENSE", + "URL": "https://rstudio.github.io/sass/, https://github.com/rstudio/sass", + "BugReports": "https://github.com/rstudio/sass/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "SystemRequirements": "GNU make", + "Imports": "fs, rlang (>= 0.4.10), htmltools (>= 0.5.1), R6, rappdirs", + "Suggests": "testthat, knitr, rmarkdown, withr, shiny, curl", + "VignetteBuilder": "knitr", + "Config/testthat/edition": "3", + "NeedsCompilation": "yes", + "Packaged": "2023-05-03 22:45:10 UTC; cpsievert", + "Author": "Joe Cheng [aut],\n Timothy Mastny [aut],\n Richard Iannone [aut] (),\n Barret Schloerke [aut] (),\n Carson Sievert [aut, cre] (),\n Christophe Dervieux [ctb] (),\n RStudio [cph, fnd],\n Sass Open Source Foundation [ctb, cph] (LibSass library),\n Greter Marcel [ctb, cph] (LibSass library),\n Mifsud Michael [ctb, cph] (LibSass library),\n Hampton Catlin [ctb, cph] (LibSass library),\n Natalie Weizenbaum [ctb, cph] (LibSass library),\n Chris Eppstein [ctb, cph] (LibSass library),\n Adams Joseph [ctb, cph] (json.cpp),\n Trifunovic Nemanja [ctb, cph] (utf8.h)", + "Maintainer": "Carson Sievert ", + "Repository": "CRAN", + "Date/Publication": "2023-05-03 23:30:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-05-04 04:35:51 UTC; unix", + "Archs": "sass.so.dSYM" + } + }, + "stringi": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "stringi", + "Version": "1.7.12", + "Date": "2023-01-09", + "Title": "Fast and Portable Character String Processing Facilities", + "Description": "A collection of character string/text/natural language\n processing tools for pattern searching (e.g., with 'Java'-like regular\n expressions or the 'Unicode' collation algorithm), random string generation,\n case mapping, string transliteration, concatenation, sorting, padding,\n wrapping, Unicode normalisation, date-time formatting and parsing,\n and many more. They are fast, consistent, convenient, and -\n thanks to 'ICU' (International Components for Unicode) -\n portable across all locales and platforms. Documentation about 'stringi' is\n provided via its website at and\n the paper by Gagolewski (2022, ).", + "URL": "https://stringi.gagolewski.com/,\nhttps://github.com/gagolews/stringi, https://icu.unicode.org/", + "BugReports": "https://github.com/gagolews/stringi/issues", + "SystemRequirements": "C++11, ICU4C (>= 55, optional)", + "Type": "Package", + "Depends": "R (>= 3.1)", + "Imports": "tools, utils, stats", + "Biarch": "TRUE", + "License": "file LICENSE", + "Author": "Marek Gagolewski [aut, cre, cph] (),\n Bartek Tartanus [ctb], and others (stringi source code);\n Unicode, Inc. and others (ICU4C source code, Unicode Character Database)", + "Maintainer": "Marek Gagolewski ", + "RoxygenNote": "7.2.1", + "Encoding": "UTF-8", + "NeedsCompilation": "yes", + "Packaged": "2023-01-09 07:28:38 UTC; gagolews", + "License_is_FOSS": "yes", + "Repository": "CRAN", + "Date/Publication": "2023-01-11 10:10:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-11 20:20:49 UTC; unix" + } + }, + "stringr": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "stringr", + "Title": "Simple, Consistent Wrappers for Common String Operations", + "Version": "1.5.0", + "Authors@R": "\n c(person(given = \"Hadley\",\n family = \"Wickham\",\n role = c(\"aut\", \"cre\", \"cph\"),\n email = \"hadley@rstudio.com\"),\n person(given = \"RStudio\",\n role = c(\"cph\", \"fnd\")))", + "Description": "A consistent, simple and easy to use set of wrappers around\n the fantastic 'stringi' package. All function and argument names (and\n positions) are consistent, all functions deal with \"NA\"'s and zero\n length vectors in the same way, and the output from one function is\n easy to feed into the input of another.", + "License": "MIT + file LICENSE", + "URL": "https://stringr.tidyverse.org,\nhttps://github.com/tidyverse/stringr", + "BugReports": "https://github.com/tidyverse/stringr/issues", + "Depends": "R (>= 3.3)", + "Imports": "cli, glue (>= 1.6.1), lifecycle (>= 1.0.3), magrittr, rlang\n(>= 1.0.0), stringi (>= 1.5.3), vctrs", + "Suggests": "covr, htmltools, htmlwidgets, knitr, rmarkdown, testthat (>=\n3.0.0)", + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "LazyData": "true", + "RoxygenNote": "7.2.1", + "NeedsCompilation": "no", + "Packaged": "2022-12-01 20:53:42 UTC; hadleywickham", + "Author": "Hadley Wickham [aut, cre, cph],\n RStudio [cph, fnd]", + "Maintainer": "Hadley Wickham ", + "Repository": "CRAN", + "Date/Publication": "2022-12-02 10:20:02 UTC", + "Built": "R 4.3.0; ; 2023-04-12 12:50:56 UTC; unix" + } + }, + "tinytex": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "tinytex", + "Type": "Package", + "Title": "Helper Functions to Install and Maintain TeX Live, and Compile\nLaTeX Documents", + "Version": "0.45", + "Authors@R": "c(\n person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\", \"cph\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")),\n person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")),\n person(\"Christophe\", \"Dervieux\", role = \"ctb\", comment = c(ORCID = \"0000-0003-4474-2498\")),\n person(\"Devon\", \"Ryan\", role = \"ctb\", email = \"dpryan79@gmail.com\", comment = c(ORCID = \"0000-0002-8549-0971\")),\n person(\"Ethan\", \"Heinzen\", role = \"ctb\"),\n person(\"Fernando\", \"Cagua\", role = \"ctb\"),\n person()\n )", + "Description": "Helper functions to install and maintain the 'LaTeX' distribution\n named 'TinyTeX' (), a lightweight, cross-platform,\n portable, and easy-to-maintain version of 'TeX Live'. This package also\n contains helper functions to compile 'LaTeX' documents, and install missing\n 'LaTeX' packages automatically.", + "Imports": "xfun (>= 0.29)", + "Suggests": "testit, rstudioapi", + "License": "MIT + file LICENSE", + "URL": "https://github.com/rstudio/tinytex", + "BugReports": "https://github.com/rstudio/tinytex/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "no", + "Packaged": "2023-04-18 13:52:40 UTC; yihui", + "Author": "Yihui Xie [aut, cre, cph] (),\n Posit Software, PBC [cph, fnd],\n Christophe Dervieux [ctb] (),\n Devon Ryan [ctb] (),\n Ethan Heinzen [ctb],\n Fernando Cagua [ctb]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN", + "Date/Publication": "2023-04-18 14:30:07 UTC", + "Built": "R 4.3.0; ; 2023-04-22 00:31:32 UTC; unix" + } + }, + "vctrs": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "vctrs", + "Title": "Vector Helpers", + "Version": "0.6.2", + "Authors@R": "c(\n person(\"Hadley\", \"Wickham\", , \"hadley@posit.co\", role = \"aut\"),\n person(\"Lionel\", \"Henry\", , \"lionel@posit.co\", role = \"aut\"),\n person(\"Davis\", \"Vaughan\", , \"davis@posit.co\", role = c(\"aut\", \"cre\")),\n person(\"data.table team\", role = \"cph\",\n comment = \"Radix sort based on data.table's forder() and their contribution to R's order()\"),\n person(\"Posit Software, PBC\", role = c(\"cph\", \"fnd\"))\n )", + "Description": "Defines new notions of prototype and size that are used to\n provide tools for consistent and well-founded type-coercion and\n size-recycling, and are in turn connected to ideas of type- and\n size-stability useful for analysing function interfaces.", + "License": "MIT + file LICENSE", + "URL": "https://vctrs.r-lib.org/, https://github.com/r-lib/vctrs", + "BugReports": "https://github.com/r-lib/vctrs/issues", + "Depends": "R (>= 3.5.0)", + "Imports": "cli (>= 3.4.0), glue, lifecycle (>= 1.0.3), rlang (>= 1.1.0)", + "Suggests": "bit64, covr, crayon, dplyr (>= 0.8.5), generics, knitr,\npillar (>= 1.4.4), pkgdown (>= 2.0.1), rmarkdown, testthat (>=\n3.0.0), tibble (>= 3.1.3), waldo (>= 0.2.0), withr, xml2,\nzeallot", + "VignetteBuilder": "knitr", + "Config/Needs/website": "tidyverse/tidytemplate", + "Config/testthat/edition": "3", + "Encoding": "UTF-8", + "Language": "en-GB", + "RoxygenNote": "7.2.3", + "NeedsCompilation": "yes", + "Packaged": "2023-04-19 18:24:24 UTC; davis", + "Author": "Hadley Wickham [aut],\n Lionel Henry [aut],\n Davis Vaughan [aut, cre],\n data.table team [cph] (Radix sort based on data.table's forder() and\n their contribution to R's order()),\n Posit Software, PBC [cph, fnd]", + "Maintainer": "Davis Vaughan ", + "Repository": "CRAN", + "Date/Publication": "2023-04-19 19:30:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-22 00:48:35 UTC; unix", + "Archs": "vctrs.so.dSYM" + } + }, + "xfun": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "xfun", + "Type": "Package", + "Title": "Supporting Functions for Packages Maintained by 'Yihui Xie'", + "Version": "0.39", + "Authors@R": "c(\n person(\"Yihui\", \"Xie\", role = c(\"aut\", \"cre\", \"cph\"), email = \"xie@yihui.name\", comment = c(ORCID = \"0000-0003-0645-5666\")),\n person(\"Wush\", \"Wu\", role = \"ctb\"),\n person(\"Daijiang\", \"Li\", role = \"ctb\"),\n person(\"Xianying\", \"Tan\", role = \"ctb\"),\n person(\"Salim\", \"Brüggemann\", role = \"ctb\", email = \"salim-b@pm.me\", comment = c(ORCID = \"0000-0002-5329-5987\")),\n person(\"Christophe\", \"Dervieux\", role = \"ctb\"),\n person(given = \"Posit Software, PBC\", role = c(\"cph\", \"fnd\")),\n person()\n )", + "Description": "Miscellaneous functions commonly used in other packages maintained by 'Yihui Xie'.", + "Imports": "stats, tools", + "Suggests": "testit, parallel, codetools, rstudioapi, tinytex (>= 0.30),\nmime, markdown (>= 1.5), knitr (>= 1.42), htmltools, remotes,\npak, rhub, renv, curl, jsonlite, magick, yaml, rmarkdown", + "License": "MIT + file LICENSE", + "URL": "https://github.com/yihui/xfun", + "BugReports": "https://github.com/yihui/xfun/issues", + "Encoding": "UTF-8", + "RoxygenNote": "7.2.3", + "VignetteBuilder": "knitr", + "NeedsCompilation": "yes", + "Packaged": "2023-04-19 22:17:10 UTC; yihui", + "Author": "Yihui Xie [aut, cre, cph] (),\n Wush Wu [ctb],\n Daijiang Li [ctb],\n Xianying Tan [ctb],\n Salim Brüggemann [ctb] (),\n Christophe Dervieux [ctb],\n Posit Software, PBC [cph, fnd]", + "Maintainer": "Yihui Xie ", + "Repository": "CRAN", + "Date/Publication": "2023-04-20 12:50:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-22 00:00:24 UTC; unix", + "Archs": "xfun.so.dSYM" + } + }, + "yaml": { + "Source": "CRAN", + "Repository": "https://cran.rstudio.com", + "description": { + "Package": "yaml", + "Type": "Package", + "Title": "Methods to Convert R Data to YAML and Back", + "Date": "2023-01-18", + "Version": "2.3.7", + "Suggests": "RUnit", + "Author": "Shawn P Garbett [aut], Jeremy Stephens [aut, cre], Kirill Simonov [aut], Yihui Xie [ctb],\n Zhuoer Dong [ctb], Hadley Wickham [ctb], Jeffrey Horner [ctb], reikoch [ctb],\n Will Beasley [ctb], Brendan O'Connor [ctb], Gregory R. Warnes [ctb],\n Michael Quinn [ctb], Zhian N. Kamvar [ctb]", + "Maintainer": "Shawn Garbett ", + "License": "BSD_3_clause + file LICENSE", + "Description": "Implements the 'libyaml' 'YAML' 1.1 parser and emitter\n () for R.", + "URL": "https://github.com/vubiostat/r-yaml/", + "BugReports": "https://github.com/vubiostat/r-yaml/issues", + "NeedsCompilation": "yes", + "Packaged": "2023-01-18 17:20:16 UTC; garbetsp", + "Repository": "CRAN", + "Date/Publication": "2023-01-23 18:40:02 UTC", + "Built": "R 4.3.0; x86_64-apple-darwin20; 2023-04-08 21:18:13 UTC; unix", + "Archs": "yaml.so.dSYM" + } + } + }, + "files": { + "_site.yml": { + "checksum": "68b329da9893e34099c7d8ad5cb9c940" + }, + ".Rprofile": { + "checksum": "0b7556db576037033836dad462da03f7" + }, + "another.Rmd": { + "checksum": "3ff73b227b8d15e2b39172402234a0b6" + }, + "article.Rmd": { + "checksum": "c41a63e581ccf14e6e00ef8dab979765" + }, + "index.Rmd": { + "checksum": "c85dc46c45a93df8010830d238e4ff75" + }, + "meta.yaml": { + "checksum": "0824e67d283b321ee84d16fd194625d8" + } + }, + "users": null +} diff --git a/internal/inspect/detectors/testdata/rmd-site-no-meta/meta.yaml b/internal/inspect/detectors/testdata/rmd-site-no-meta/meta.yaml new file mode 100644 index 000000000..21c54d290 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site-no-meta/meta.yaml @@ -0,0 +1,10 @@ +tags: + - provisioner + - r + - rmd + - site + - static + - dev-env + - small-dev-env + - regression + - all diff --git a/internal/inspect/detectors/testdata/rmd-site-no-meta/renv.lock b/internal/inspect/detectors/testdata/rmd-site-no-meta/renv.lock new file mode 100644 index 000000000..54fd9f537 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site-no-meta/renv.lock @@ -0,0 +1,398 @@ +{ + "R": { + "Version": "4.3.1", + "Repositories": [ + { + "Name": "CRAN", + "URL": "https://packagemanager.posit.co/cran/latest" + } + ] + }, + "Packages": { + "R6": { + "Package": "R6", + "Version": "2.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "470851b6d5d0ac559e9d01bb352b4021" + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "543776ae6848fde2f48ff3816d0628bc" + }, + "bslib": { + "Package": "bslib", + "Version": "0.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "base64enc", + "cachem", + "grDevices", + "htmltools", + "jquerylib", + "jsonlite", + "memoise", + "mime", + "rlang", + "sass" + ], + "Hash": "283015ddfbb9d7bf15ea9f0b5698f0d9" + }, + "cachem": { + "Package": "cachem", + "Version": "1.0.8", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "fastmap", + "rlang" + ], + "Hash": "c35768291560ce302c0a6589f92e837d" + }, + "cli": { + "Package": "cli", + "Version": "3.6.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "1216ac65ac55ec0058a6f75d7ca0fd52" + }, + "digest": { + "Package": "digest", + "Version": "0.6.35", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "698ece7ba5a4fa4559e3d537e7ec3d31" + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "rlang" + ], + "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077" + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.22", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "66f39c7a21e03c4dcb2c2d21d738d603" + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f7736a18de97dea803bde0a2daaafb27" + }, + "fontawesome": { + "Package": "fontawesome", + "Version": "0.5.2", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "htmltools", + "rlang" + ], + "Hash": "c2efdd5f0bcd1ea861c2d4e2a883a67d" + }, + "fs": { + "Package": "fs", + "Version": "1.6.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "15aeb8c27f5ea5161f9f6a641fafd93a" + }, + "glue": { + "Package": "glue", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "methods" + ], + "Hash": "e0b3a53876554bd45879e596cdb10a52" + }, + "highr": { + "Package": "highr", + "Version": "0.10", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "xfun" + ], + "Hash": "06230136b2d2b9ba5805e1963fa6e890" + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.6", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "base64enc", + "digest", + "ellipsis", + "fastmap", + "grDevices", + "rlang", + "utils" + ], + "Hash": "a2326a66919a3311f7fbb1e3bf568283" + }, + "jquerylib": { + "Package": "jquerylib", + "Version": "0.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "htmltools" + ], + "Hash": "5aab57a3bd297eee1c1d862735972182" + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.8.8", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "methods" + ], + "Hash": "e1b9c55281c5adc4dd113652d9e26768" + }, + "knitr": { + "Package": "knitr", + "Version": "1.44", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "evaluate", + "highr", + "methods", + "tools", + "xfun", + "yaml" + ], + "Hash": "60885b9f746c9dfaef110d070b5f7dc0" + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "1.0.4", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "rlang" + ], + "Hash": "b8552d117e1b808b09a832f589b79035" + }, + "magrittr": { + "Package": "magrittr", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "7ce2733a9826b3aeb1775d56fd305472" + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "cachem", + "rlang" + ], + "Hash": "e2817ccf4a065c5d9d7f2cfbe7c1d78c" + }, + "mime": { + "Package": "mime", + "Version": "0.12", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "tools" + ], + "Hash": "18e9c28c1d3ca1560ce30658b22ce104" + }, + "rappdirs": { + "Package": "rappdirs", + "Version": "0.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R" + ], + "Hash": "5e3c5dc0b071b21fa128676560dbe94d" + }, + "renv": { + "Package": "renv", + "Version": "1.0.7", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "utils" + ], + "Hash": "397b7b2a265bc5a7a06852524dabae20" + }, + "rlang": { + "Package": "rlang", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "utils" + ], + "Hash": "42548638fae05fd9a9b5f3f437fbbbe2" + }, + "rmarkdown": { + "Package": "rmarkdown", + "Version": "2.25", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "bslib", + "evaluate", + "fontawesome", + "htmltools", + "jquerylib", + "jsonlite", + "knitr", + "methods", + "stringr", + "tinytex", + "tools", + "utils", + "xfun", + "yaml" + ], + "Hash": "d65e35823c817f09f4de424fcdfa812a" + }, + "sass": { + "Package": "sass", + "Version": "0.4.7", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R6", + "fs", + "htmltools", + "rappdirs", + "rlang" + ], + "Hash": "6bd4d33b50ff927191ec9acbf52fd056" + }, + "stringi": { + "Package": "stringi", + "Version": "1.7.12", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "stats", + "tools", + "utils" + ], + "Hash": "ca8bd84263c77310739d2cf64d84d7c9" + }, + "stringr": { + "Package": "stringr", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "magrittr", + "rlang", + "stringi", + "vctrs" + ], + "Hash": "671a4d384ae9d32fc47a14e98bfa3dc8" + }, + "tinytex": { + "Package": "tinytex", + "Version": "0.47", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "xfun" + ], + "Hash": "8d4ccb733843e513c1c1cdd66a759f0d" + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.6.5", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "R", + "cli", + "glue", + "lifecycle", + "rlang" + ], + "Hash": "c03fa420630029418f7e6da3667aac4a" + }, + "xfun": { + "Package": "xfun", + "Version": "0.40", + "Source": "Repository", + "Repository": "CRAN", + "Requirements": [ + "stats", + "tools" + ], + "Hash": "be07d23211245fc7d4209f54c4e4ffc8" + }, + "yaml": { + "Package": "yaml", + "Version": "2.3.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "29240487a071f535f5e5d5a323b7afbd" + } + } +} diff --git a/internal/inspect/detectors/testdata/rmd-site-no-meta/renv/.gitignore b/internal/inspect/detectors/testdata/rmd-site-no-meta/renv/.gitignore new file mode 100644 index 000000000..0ec0cbba2 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site-no-meta/renv/.gitignore @@ -0,0 +1,7 @@ +library/ +local/ +cellar/ +lock/ +python/ +sandbox/ +staging/ diff --git a/internal/inspect/detectors/testdata/rmd-site-no-meta/renv/activate.R b/internal/inspect/detectors/testdata/rmd-site-no-meta/renv/activate.R new file mode 100644 index 000000000..d13f9932a --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site-no-meta/renv/activate.R @@ -0,0 +1,1220 @@ + +local({ + + # the requested version of renv + version <- "1.0.7" + attr(version, "sha") <- NULL + + # the project directory + project <- Sys.getenv("RENV_PROJECT") + if (!nzchar(project)) + project <- getwd() + + # use start-up diagnostics if enabled + diagnostics <- Sys.getenv("RENV_STARTUP_DIAGNOSTICS", unset = "FALSE") + if (diagnostics) { + start <- Sys.time() + profile <- tempfile("renv-startup-", fileext = ".Rprof") + utils::Rprof(profile) + on.exit({ + utils::Rprof(NULL) + elapsed <- signif(difftime(Sys.time(), start, units = "auto"), digits = 2L) + writeLines(sprintf("- renv took %s to run the autoloader.", format(elapsed))) + writeLines(sprintf("- Profile: %s", profile)) + print(utils::summaryRprof(profile)) + }, add = TRUE) + } + + # figure out whether the autoloader is enabled + enabled <- local({ + + # first, check config option + override <- getOption("renv.config.autoloader.enabled") + if (!is.null(override)) + return(override) + + # if we're being run in a context where R_LIBS is already set, + # don't load -- presumably we're being run as a sub-process and + # the parent process has already set up library paths for us + rcmd <- Sys.getenv("R_CMD", unset = NA) + rlibs <- Sys.getenv("R_LIBS", unset = NA) + if (!is.na(rlibs) && !is.na(rcmd)) + return(FALSE) + + # next, check environment variables + # TODO: prefer using the configuration one in the future + envvars <- c( + "RENV_CONFIG_AUTOLOADER_ENABLED", + "RENV_AUTOLOADER_ENABLED", + "RENV_ACTIVATE_PROJECT" + ) + + for (envvar in envvars) { + envval <- Sys.getenv(envvar, unset = NA) + if (!is.na(envval)) + return(tolower(envval) %in% c("true", "t", "1")) + } + + # enable by default + TRUE + + }) + + # bail if we're not enabled + if (!enabled) { + + # if we're not enabled, we might still need to manually load + # the user profile here + profile <- Sys.getenv("R_PROFILE_USER", unset = "~/.Rprofile") + if (file.exists(profile)) { + cfg <- Sys.getenv("RENV_CONFIG_USER_PROFILE", unset = "TRUE") + if (tolower(cfg) %in% c("true", "t", "1")) + sys.source(profile, envir = globalenv()) + } + + return(FALSE) + + } + + # avoid recursion + if (identical(getOption("renv.autoloader.running"), TRUE)) { + warning("ignoring recursive attempt to run renv autoloader") + return(invisible(TRUE)) + } + + # signal that we're loading renv during R startup + options(renv.autoloader.running = TRUE) + on.exit(options(renv.autoloader.running = NULL), add = TRUE) + + # signal that we've consented to use renv + options(renv.consent = TRUE) + + # load the 'utils' package eagerly -- this ensures that renv shims, which + # mask 'utils' packages, will come first on the search path + library(utils, lib.loc = .Library) + + # unload renv if it's already been loaded + if ("renv" %in% loadedNamespaces()) + unloadNamespace("renv") + + # load bootstrap tools + `%||%` <- function(x, y) { + if (is.null(x)) y else x + } + + catf <- function(fmt, ..., appendLF = TRUE) { + + quiet <- getOption("renv.bootstrap.quiet", default = FALSE) + if (quiet) + return(invisible()) + + msg <- sprintf(fmt, ...) + cat(msg, file = stdout(), sep = if (appendLF) "\n" else "") + + invisible(msg) + + } + + header <- function(label, + ..., + prefix = "#", + suffix = "-", + n = min(getOption("width"), 78)) + { + label <- sprintf(label, ...) + n <- max(n - nchar(label) - nchar(prefix) - 2L, 8L) + if (n <= 0) + return(paste(prefix, label)) + + tail <- paste(rep.int(suffix, n), collapse = "") + paste0(prefix, " ", label, " ", tail) + + } + + heredoc <- function(text, leave = 0) { + + # remove leading, trailing whitespace + trimmed <- gsub("^\\s*\\n|\\n\\s*$", "", text) + + # split into lines + lines <- strsplit(trimmed, "\n", fixed = TRUE)[[1L]] + + # compute common indent + indent <- regexpr("[^[:space:]]", lines) + common <- min(setdiff(indent, -1L)) - leave + paste(substring(lines, common), collapse = "\n") + + } + + startswith <- function(string, prefix) { + substring(string, 1, nchar(prefix)) == prefix + } + + bootstrap <- function(version, library) { + + friendly <- renv_bootstrap_version_friendly(version) + section <- header(sprintf("Bootstrapping renv %s", friendly)) + catf(section) + + # attempt to download renv + catf("- Downloading renv ... ", appendLF = FALSE) + withCallingHandlers( + tarball <- renv_bootstrap_download(version), + error = function(err) { + catf("FAILED") + stop("failed to download:\n", conditionMessage(err)) + } + ) + catf("OK") + on.exit(unlink(tarball), add = TRUE) + + # now attempt to install + catf("- Installing renv ... ", appendLF = FALSE) + withCallingHandlers( + status <- renv_bootstrap_install(version, tarball, library), + error = function(err) { + catf("FAILED") + stop("failed to install:\n", conditionMessage(err)) + } + ) + catf("OK") + + # add empty line to break up bootstrapping from normal output + catf("") + + return(invisible()) + } + + renv_bootstrap_tests_running <- function() { + getOption("renv.tests.running", default = FALSE) + } + + renv_bootstrap_repos <- function() { + + # get CRAN repository + cran <- getOption("renv.repos.cran", "https://cloud.r-project.org") + + # check for repos override + repos <- Sys.getenv("RENV_CONFIG_REPOS_OVERRIDE", unset = NA) + if (!is.na(repos)) { + + # check for RSPM; if set, use a fallback repository for renv + rspm <- Sys.getenv("RSPM", unset = NA) + if (identical(rspm, repos)) + repos <- c(RSPM = rspm, CRAN = cran) + + return(repos) + + } + + # check for lockfile repositories + repos <- tryCatch(renv_bootstrap_repos_lockfile(), error = identity) + if (!inherits(repos, "error") && length(repos)) + return(repos) + + # retrieve current repos + repos <- getOption("repos") + + # ensure @CRAN@ entries are resolved + repos[repos == "@CRAN@"] <- cran + + # add in renv.bootstrap.repos if set + default <- c(FALLBACK = "https://cloud.r-project.org") + extra <- getOption("renv.bootstrap.repos", default = default) + repos <- c(repos, extra) + + # remove duplicates that might've snuck in + dupes <- duplicated(repos) | duplicated(names(repos)) + repos[!dupes] + + } + + renv_bootstrap_repos_lockfile <- function() { + + lockpath <- Sys.getenv("RENV_PATHS_LOCKFILE", unset = "renv.lock") + if (!file.exists(lockpath)) + return(NULL) + + lockfile <- tryCatch(renv_json_read(lockpath), error = identity) + if (inherits(lockfile, "error")) { + warning(lockfile) + return(NULL) + } + + repos <- lockfile$R$Repositories + if (length(repos) == 0) + return(NULL) + + keys <- vapply(repos, `[[`, "Name", FUN.VALUE = character(1)) + vals <- vapply(repos, `[[`, "URL", FUN.VALUE = character(1)) + names(vals) <- keys + + return(vals) + + } + + renv_bootstrap_download <- function(version) { + + sha <- attr(version, "sha", exact = TRUE) + + methods <- if (!is.null(sha)) { + + # attempting to bootstrap a development version of renv + c( + function() renv_bootstrap_download_tarball(sha), + function() renv_bootstrap_download_github(sha) + ) + + } else { + + # attempting to bootstrap a release version of renv + c( + function() renv_bootstrap_download_tarball(version), + function() renv_bootstrap_download_cran_latest(version), + function() renv_bootstrap_download_cran_archive(version) + ) + + } + + for (method in methods) { + path <- tryCatch(method(), error = identity) + if (is.character(path) && file.exists(path)) + return(path) + } + + stop("All download methods failed") + + } + + renv_bootstrap_download_impl <- function(url, destfile) { + + mode <- "wb" + + # https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17715 + fixup <- + Sys.info()[["sysname"]] == "Windows" && + substring(url, 1L, 5L) == "file:" + + if (fixup) + mode <- "w+b" + + args <- list( + url = url, + destfile = destfile, + mode = mode, + quiet = TRUE + ) + + if ("headers" %in% names(formals(utils::download.file))) + args$headers <- renv_bootstrap_download_custom_headers(url) + + do.call(utils::download.file, args) + + } + + renv_bootstrap_download_custom_headers <- function(url) { + + headers <- getOption("renv.download.headers") + if (is.null(headers)) + return(character()) + + if (!is.function(headers)) + stopf("'renv.download.headers' is not a function") + + headers <- headers(url) + if (length(headers) == 0L) + return(character()) + + if (is.list(headers)) + headers <- unlist(headers, recursive = FALSE, use.names = TRUE) + + ok <- + is.character(headers) && + is.character(names(headers)) && + all(nzchar(names(headers))) + + if (!ok) + stop("invocation of 'renv.download.headers' did not return a named character vector") + + headers + + } + + renv_bootstrap_download_cran_latest <- function(version) { + + spec <- renv_bootstrap_download_cran_latest_find(version) + type <- spec$type + repos <- spec$repos + + baseurl <- utils::contrib.url(repos = repos, type = type) + ext <- if (identical(type, "source")) + ".tar.gz" + else if (Sys.info()[["sysname"]] == "Windows") + ".zip" + else + ".tgz" + name <- sprintf("renv_%s%s", version, ext) + url <- paste(baseurl, name, sep = "/") + + destfile <- file.path(tempdir(), name) + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (inherits(status, "condition")) + return(FALSE) + + # report success and return + destfile + + } + + renv_bootstrap_download_cran_latest_find <- function(version) { + + # check whether binaries are supported on this system + binary <- + getOption("renv.bootstrap.binary", default = TRUE) && + !identical(.Platform$pkgType, "source") && + !identical(getOption("pkgType"), "source") && + Sys.info()[["sysname"]] %in% c("Darwin", "Windows") + + types <- c(if (binary) "binary", "source") + + # iterate over types + repositories + for (type in types) { + for (repos in renv_bootstrap_repos()) { + + # retrieve package database + db <- tryCatch( + as.data.frame( + utils::available.packages(type = type, repos = repos), + stringsAsFactors = FALSE + ), + error = identity + ) + + if (inherits(db, "error")) + next + + # check for compatible entry + entry <- db[db$Package %in% "renv" & db$Version %in% version, ] + if (nrow(entry) == 0) + next + + # found it; return spec to caller + spec <- list(entry = entry, type = type, repos = repos) + return(spec) + + } + } + + # if we got here, we failed to find renv + fmt <- "renv %s is not available from your declared package repositories" + stop(sprintf(fmt, version)) + + } + + renv_bootstrap_download_cran_archive <- function(version) { + + name <- sprintf("renv_%s.tar.gz", version) + repos <- renv_bootstrap_repos() + urls <- file.path(repos, "src/contrib/Archive/renv", name) + destfile <- file.path(tempdir(), name) + + for (url in urls) { + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (identical(status, 0L)) + return(destfile) + + } + + return(FALSE) + + } + + renv_bootstrap_download_tarball <- function(version) { + + # if the user has provided the path to a tarball via + # an environment variable, then use it + tarball <- Sys.getenv("RENV_BOOTSTRAP_TARBALL", unset = NA) + if (is.na(tarball)) + return() + + # allow directories + if (dir.exists(tarball)) { + name <- sprintf("renv_%s.tar.gz", version) + tarball <- file.path(tarball, name) + } + + # bail if it doesn't exist + if (!file.exists(tarball)) { + + # let the user know we weren't able to honour their request + fmt <- "- RENV_BOOTSTRAP_TARBALL is set (%s) but does not exist." + msg <- sprintf(fmt, tarball) + warning(msg) + + # bail + return() + + } + + catf("- Using local tarball '%s'.", tarball) + tarball + + } + + renv_bootstrap_download_github <- function(version) { + + enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE") + if (!identical(enabled, "TRUE")) + return(FALSE) + + # prepare download options + pat <- Sys.getenv("GITHUB_PAT") + if (nzchar(Sys.which("curl")) && nzchar(pat)) { + fmt <- "--location --fail --header \"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "curl", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } else if (nzchar(Sys.which("wget")) && nzchar(pat)) { + fmt <- "--header=\"Authorization: token %s\"" + extra <- sprintf(fmt, pat) + saved <- options("download.file.method", "download.file.extra") + options(download.file.method = "wget", download.file.extra = extra) + on.exit(do.call(base::options, saved), add = TRUE) + } + + url <- file.path("https://api.github.com/repos/rstudio/renv/tarball", version) + name <- sprintf("renv_%s.tar.gz", version) + destfile <- file.path(tempdir(), name) + + status <- tryCatch( + renv_bootstrap_download_impl(url, destfile), + condition = identity + ) + + if (!identical(status, 0L)) + return(FALSE) + + renv_bootstrap_download_augment(destfile) + + return(destfile) + + } + + # Add Sha to DESCRIPTION. This is stop gap until #890, after which we + # can use renv::install() to fully capture metadata. + renv_bootstrap_download_augment <- function(destfile) { + sha <- renv_bootstrap_git_extract_sha1_tar(destfile) + if (is.null(sha)) { + return() + } + + # Untar + tempdir <- tempfile("renv-github-") + on.exit(unlink(tempdir, recursive = TRUE), add = TRUE) + untar(destfile, exdir = tempdir) + pkgdir <- dir(tempdir, full.names = TRUE)[[1]] + + # Modify description + desc_path <- file.path(pkgdir, "DESCRIPTION") + desc_lines <- readLines(desc_path) + remotes_fields <- c( + "RemoteType: github", + "RemoteHost: api.github.com", + "RemoteRepo: renv", + "RemoteUsername: rstudio", + "RemotePkgRef: rstudio/renv", + paste("RemoteRef: ", sha), + paste("RemoteSha: ", sha) + ) + writeLines(c(desc_lines[desc_lines != ""], remotes_fields), con = desc_path) + + # Re-tar + local({ + old <- setwd(tempdir) + on.exit(setwd(old), add = TRUE) + + tar(destfile, compression = "gzip") + }) + invisible() + } + + # Extract the commit hash from a git archive. Git archives include the SHA1 + # hash as the comment field of the tarball pax extended header + # (see https://www.kernel.org/pub/software/scm/git/docs/git-archive.html) + # For GitHub archives this should be the first header after the default one + # (512 byte) header. + renv_bootstrap_git_extract_sha1_tar <- function(bundle) { + + # open the bundle for reading + # We use gzcon for everything because (from ?gzcon) + # > Reading from a connection which does not supply a 'gzip' magic + # > header is equivalent to reading from the original connection + conn <- gzcon(file(bundle, open = "rb", raw = TRUE)) + on.exit(close(conn)) + + # The default pax header is 512 bytes long and the first pax extended header + # with the comment should be 51 bytes long + # `52 comment=` (11 chars) + 40 byte SHA1 hash + len <- 0x200 + 0x33 + res <- rawToChar(readBin(conn, "raw", n = len)[0x201:len]) + + if (grepl("^52 comment=", res)) { + sub("52 comment=", "", res) + } else { + NULL + } + } + + renv_bootstrap_install <- function(version, tarball, library) { + + # attempt to install it into project library + dir.create(library, showWarnings = FALSE, recursive = TRUE) + output <- renv_bootstrap_install_impl(library, tarball) + + # check for successful install + status <- attr(output, "status") + if (is.null(status) || identical(status, 0L)) + return(status) + + # an error occurred; report it + header <- "installation of renv failed" + lines <- paste(rep.int("=", nchar(header)), collapse = "") + text <- paste(c(header, lines, output), collapse = "\n") + stop(text) + + } + + renv_bootstrap_install_impl <- function(library, tarball) { + + # invoke using system2 so we can capture and report output + bin <- R.home("bin") + exe <- if (Sys.info()[["sysname"]] == "Windows") "R.exe" else "R" + R <- file.path(bin, exe) + + args <- c( + "--vanilla", "CMD", "INSTALL", "--no-multiarch", + "-l", shQuote(path.expand(library)), + shQuote(path.expand(tarball)) + ) + + system2(R, args, stdout = TRUE, stderr = TRUE) + + } + + renv_bootstrap_platform_prefix <- function() { + + # construct version prefix + version <- paste(R.version$major, R.version$minor, sep = ".") + prefix <- paste("R", numeric_version(version)[1, 1:2], sep = "-") + + # include SVN revision for development versions of R + # (to avoid sharing platform-specific artefacts with released versions of R) + devel <- + identical(R.version[["status"]], "Under development (unstable)") || + identical(R.version[["nickname"]], "Unsuffered Consequences") + + if (devel) + prefix <- paste(prefix, R.version[["svn rev"]], sep = "-r") + + # build list of path components + components <- c(prefix, R.version$platform) + + # include prefix if provided by user + prefix <- renv_bootstrap_platform_prefix_impl() + if (!is.na(prefix) && nzchar(prefix)) + components <- c(prefix, components) + + # build prefix + paste(components, collapse = "/") + + } + + renv_bootstrap_platform_prefix_impl <- function() { + + # if an explicit prefix has been supplied, use it + prefix <- Sys.getenv("RENV_PATHS_PREFIX", unset = NA) + if (!is.na(prefix)) + return(prefix) + + # if the user has requested an automatic prefix, generate it + auto <- Sys.getenv("RENV_PATHS_PREFIX_AUTO", unset = NA) + if (is.na(auto) && getRversion() >= "4.4.0") + auto <- "TRUE" + + if (auto %in% c("TRUE", "True", "true", "1")) + return(renv_bootstrap_platform_prefix_auto()) + + # empty string on failure + "" + + } + + renv_bootstrap_platform_prefix_auto <- function() { + + prefix <- tryCatch(renv_bootstrap_platform_os(), error = identity) + if (inherits(prefix, "error") || prefix %in% "unknown") { + + msg <- paste( + "failed to infer current operating system", + "please file a bug report at https://github.com/rstudio/renv/issues", + sep = "; " + ) + + warning(msg) + + } + + prefix + + } + + renv_bootstrap_platform_os <- function() { + + sysinfo <- Sys.info() + sysname <- sysinfo[["sysname"]] + + # handle Windows + macOS up front + if (sysname == "Windows") + return("windows") + else if (sysname == "Darwin") + return("macos") + + # check for os-release files + for (file in c("/etc/os-release", "/usr/lib/os-release")) + if (file.exists(file)) + return(renv_bootstrap_platform_os_via_os_release(file, sysinfo)) + + # check for redhat-release files + if (file.exists("/etc/redhat-release")) + return(renv_bootstrap_platform_os_via_redhat_release()) + + "unknown" + + } + + renv_bootstrap_platform_os_via_os_release <- function(file, sysinfo) { + + # read /etc/os-release + release <- utils::read.table( + file = file, + sep = "=", + quote = c("\"", "'"), + col.names = c("Key", "Value"), + comment.char = "#", + stringsAsFactors = FALSE + ) + + vars <- as.list(release$Value) + names(vars) <- release$Key + + # get os name + os <- tolower(sysinfo[["sysname"]]) + + # read id + id <- "unknown" + for (field in c("ID", "ID_LIKE")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + id <- vars[[field]] + break + } + } + + # read version + version <- "unknown" + for (field in c("UBUNTU_CODENAME", "VERSION_CODENAME", "VERSION_ID", "BUILD_ID")) { + if (field %in% names(vars) && nzchar(vars[[field]])) { + version <- vars[[field]] + break + } + } + + # join together + paste(c(os, id, version), collapse = "-") + + } + + renv_bootstrap_platform_os_via_redhat_release <- function() { + + # read /etc/redhat-release + contents <- readLines("/etc/redhat-release", warn = FALSE) + + # infer id + id <- if (grepl("centos", contents, ignore.case = TRUE)) + "centos" + else if (grepl("redhat", contents, ignore.case = TRUE)) + "redhat" + else + "unknown" + + # try to find a version component (very hacky) + version <- "unknown" + + parts <- strsplit(contents, "[[:space:]]")[[1L]] + for (part in parts) { + + nv <- tryCatch(numeric_version(part), error = identity) + if (inherits(nv, "error")) + next + + version <- nv[1, 1] + break + + } + + paste(c("linux", id, version), collapse = "-") + + } + + renv_bootstrap_library_root_name <- function(project) { + + # use project name as-is if requested + asis <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT_ASIS", unset = "FALSE") + if (asis) + return(basename(project)) + + # otherwise, disambiguate based on project's path + id <- substring(renv_bootstrap_hash_text(project), 1L, 8L) + paste(basename(project), id, sep = "-") + + } + + renv_bootstrap_library_root <- function(project) { + + prefix <- renv_bootstrap_profile_prefix() + + path <- Sys.getenv("RENV_PATHS_LIBRARY", unset = NA) + if (!is.na(path)) + return(paste(c(path, prefix), collapse = "/")) + + path <- renv_bootstrap_library_root_impl(project) + if (!is.null(path)) { + name <- renv_bootstrap_library_root_name(project) + return(paste(c(path, prefix, name), collapse = "/")) + } + + renv_bootstrap_paths_renv("library", project = project) + + } + + renv_bootstrap_library_root_impl <- function(project) { + + root <- Sys.getenv("RENV_PATHS_LIBRARY_ROOT", unset = NA) + if (!is.na(root)) + return(root) + + type <- renv_bootstrap_project_type(project) + if (identical(type, "package")) { + userdir <- renv_bootstrap_user_dir() + return(file.path(userdir, "library")) + } + + } + + renv_bootstrap_validate_version <- function(version, description = NULL) { + + # resolve description file + # + # avoid passing lib.loc to `packageDescription()` below, since R will + # use the loaded version of the package by default anyhow. note that + # this function should only be called after 'renv' is loaded + # https://github.com/rstudio/renv/issues/1625 + description <- description %||% packageDescription("renv") + + # check whether requested version 'version' matches loaded version of renv + sha <- attr(version, "sha", exact = TRUE) + valid <- if (!is.null(sha)) + renv_bootstrap_validate_version_dev(sha, description) + else + renv_bootstrap_validate_version_release(version, description) + + if (valid) + return(TRUE) + + # the loaded version of renv doesn't match the requested version; + # give the user instructions on how to proceed + dev <- identical(description[["RemoteType"]], "github") + remote <- if (dev) + paste("rstudio/renv", description[["RemoteSha"]], sep = "@") + else + paste("renv", description[["Version"]], sep = "@") + + # display both loaded version + sha if available + friendly <- renv_bootstrap_version_friendly( + version = description[["Version"]], + sha = if (dev) description[["RemoteSha"]] + ) + + fmt <- heredoc(" + renv %1$s was loaded from project library, but this project is configured to use renv %2$s. + - Use `renv::record(\"%3$s\")` to record renv %1$s in the lockfile. + - Use `renv::restore(packages = \"renv\")` to install renv %2$s into the project library. + ") + catf(fmt, friendly, renv_bootstrap_version_friendly(version), remote) + + FALSE + + } + + renv_bootstrap_validate_version_dev <- function(version, description) { + expected <- description[["RemoteSha"]] + is.character(expected) && startswith(expected, version) + } + + renv_bootstrap_validate_version_release <- function(version, description) { + expected <- description[["Version"]] + is.character(expected) && identical(expected, version) + } + + renv_bootstrap_hash_text <- function(text) { + + hashfile <- tempfile("renv-hash-") + on.exit(unlink(hashfile), add = TRUE) + + writeLines(text, con = hashfile) + tools::md5sum(hashfile) + + } + + renv_bootstrap_load <- function(project, libpath, version) { + + # try to load renv from the project library + if (!requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) + return(FALSE) + + # warn if the version of renv loaded does not match + renv_bootstrap_validate_version(version) + + # execute renv load hooks, if any + hooks <- getHook("renv::autoload") + for (hook in hooks) + if (is.function(hook)) + tryCatch(hook(), error = warnify) + + # load the project + renv::load(project) + + TRUE + + } + + renv_bootstrap_profile_load <- function(project) { + + # if RENV_PROFILE is already set, just use that + profile <- Sys.getenv("RENV_PROFILE", unset = NA) + if (!is.na(profile) && nzchar(profile)) + return(profile) + + # check for a profile file (nothing to do if it doesn't exist) + path <- renv_bootstrap_paths_renv("profile", profile = FALSE, project = project) + if (!file.exists(path)) + return(NULL) + + # read the profile, and set it if it exists + contents <- readLines(path, warn = FALSE) + if (length(contents) == 0L) + return(NULL) + + # set RENV_PROFILE + profile <- contents[[1L]] + if (!profile %in% c("", "default")) + Sys.setenv(RENV_PROFILE = profile) + + profile + + } + + renv_bootstrap_profile_prefix <- function() { + profile <- renv_bootstrap_profile_get() + if (!is.null(profile)) + return(file.path("profiles", profile, "renv")) + } + + renv_bootstrap_profile_get <- function() { + profile <- Sys.getenv("RENV_PROFILE", unset = "") + renv_bootstrap_profile_normalize(profile) + } + + renv_bootstrap_profile_set <- function(profile) { + profile <- renv_bootstrap_profile_normalize(profile) + if (is.null(profile)) + Sys.unsetenv("RENV_PROFILE") + else + Sys.setenv(RENV_PROFILE = profile) + } + + renv_bootstrap_profile_normalize <- function(profile) { + + if (is.null(profile) || profile %in% c("", "default")) + return(NULL) + + profile + + } + + renv_bootstrap_path_absolute <- function(path) { + + substr(path, 1L, 1L) %in% c("~", "/", "\\") || ( + substr(path, 1L, 1L) %in% c(letters, LETTERS) && + substr(path, 2L, 3L) %in% c(":/", ":\\") + ) + + } + + renv_bootstrap_paths_renv <- function(..., profile = TRUE, project = NULL) { + renv <- Sys.getenv("RENV_PATHS_RENV", unset = "renv") + root <- if (renv_bootstrap_path_absolute(renv)) NULL else project + prefix <- if (profile) renv_bootstrap_profile_prefix() + components <- c(root, renv, prefix, ...) + paste(components, collapse = "/") + } + + renv_bootstrap_project_type <- function(path) { + + descpath <- file.path(path, "DESCRIPTION") + if (!file.exists(descpath)) + return("unknown") + + desc <- tryCatch( + read.dcf(descpath, all = TRUE), + error = identity + ) + + if (inherits(desc, "error")) + return("unknown") + + type <- desc$Type + if (!is.null(type)) + return(tolower(type)) + + package <- desc$Package + if (!is.null(package)) + return("package") + + "unknown" + + } + + renv_bootstrap_user_dir <- function() { + dir <- renv_bootstrap_user_dir_impl() + path.expand(chartr("\\", "/", dir)) + } + + renv_bootstrap_user_dir_impl <- function() { + + # use local override if set + override <- getOption("renv.userdir.override") + if (!is.null(override)) + return(override) + + # use R_user_dir if available + tools <- asNamespace("tools") + if (is.function(tools$R_user_dir)) + return(tools$R_user_dir("renv", "cache")) + + # try using our own backfill for older versions of R + envvars <- c("R_USER_CACHE_DIR", "XDG_CACHE_HOME") + for (envvar in envvars) { + root <- Sys.getenv(envvar, unset = NA) + if (!is.na(root)) + return(file.path(root, "R/renv")) + } + + # use platform-specific default fallbacks + if (Sys.info()[["sysname"]] == "Windows") + file.path(Sys.getenv("LOCALAPPDATA"), "R/cache/R/renv") + else if (Sys.info()[["sysname"]] == "Darwin") + "~/Library/Caches/org.R-project.R/R/renv" + else + "~/.cache/R/renv" + + } + + renv_bootstrap_version_friendly <- function(version, shafmt = NULL, sha = NULL) { + sha <- sha %||% attr(version, "sha", exact = TRUE) + parts <- c(version, sprintf(shafmt %||% " [sha: %s]", substring(sha, 1L, 7L))) + paste(parts, collapse = "") + } + + renv_bootstrap_exec <- function(project, libpath, version) { + if (!renv_bootstrap_load(project, libpath, version)) + renv_bootstrap_run(version, libpath) + } + + renv_bootstrap_run <- function(version, libpath) { + + # perform bootstrap + bootstrap(version, libpath) + + # exit early if we're just testing bootstrap + if (!is.na(Sys.getenv("RENV_BOOTSTRAP_INSTALL_ONLY", unset = NA))) + return(TRUE) + + # try again to load + if (requireNamespace("renv", lib.loc = libpath, quietly = TRUE)) { + return(renv::load(project = getwd())) + } + + # failed to download or load renv; warn the user + msg <- c( + "Failed to find an renv installation: the project will not be loaded.", + "Use `renv::activate()` to re-initialize the project." + ) + + warning(paste(msg, collapse = "\n"), call. = FALSE) + + } + + renv_json_read <- function(file = NULL, text = NULL) { + + jlerr <- NULL + + # if jsonlite is loaded, use that instead + if ("jsonlite" %in% loadedNamespaces()) { + + json <- tryCatch(renv_json_read_jsonlite(file, text), error = identity) + if (!inherits(json, "error")) + return(json) + + jlerr <- json + + } + + # otherwise, fall back to the default JSON reader + json <- tryCatch(renv_json_read_default(file, text), error = identity) + if (!inherits(json, "error")) + return(json) + + # report an error + if (!is.null(jlerr)) + stop(jlerr) + else + stop(json) + + } + + renv_json_read_jsonlite <- function(file = NULL, text = NULL) { + text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") + jsonlite::fromJSON(txt = text, simplifyVector = FALSE) + } + + renv_json_read_default <- function(file = NULL, text = NULL) { + + # find strings in the JSON + text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") + pattern <- '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + locs <- gregexpr(pattern, text, perl = TRUE)[[1]] + + # if any are found, replace them with placeholders + replaced <- text + strings <- character() + replacements <- character() + + if (!identical(c(locs), -1L)) { + + # get the string values + starts <- locs + ends <- locs + attr(locs, "match.length") - 1L + strings <- substring(text, starts, ends) + + # only keep those requiring escaping + strings <- grep("[[\\]{}:]", strings, perl = TRUE, value = TRUE) + + # compute replacements + replacements <- sprintf('"\032%i\032"', seq_along(strings)) + + # replace the strings + mapply(function(string, replacement) { + replaced <<- sub(string, replacement, replaced, fixed = TRUE) + }, strings, replacements) + + } + + # transform the JSON into something the R parser understands + transformed <- replaced + transformed <- gsub("{}", "`names<-`(list(), character())", transformed, fixed = TRUE) + transformed <- gsub("[[{]", "list(", transformed, perl = TRUE) + transformed <- gsub("[]}]", ")", transformed, perl = TRUE) + transformed <- gsub(":", "=", transformed, fixed = TRUE) + text <- paste(transformed, collapse = "\n") + + # parse it + json <- parse(text = text, keep.source = FALSE, srcfile = NULL)[[1L]] + + # construct map between source strings, replaced strings + map <- as.character(parse(text = strings)) + names(map) <- as.character(parse(text = replacements)) + + # convert to list + map <- as.list(map) + + # remap strings in object + remapped <- renv_json_read_remap(json, map) + + # evaluate + eval(remapped, envir = baseenv()) + + } + + renv_json_read_remap <- function(json, map) { + + # fix names + if (!is.null(names(json))) { + lhs <- match(names(json), names(map), nomatch = 0L) + rhs <- match(names(map), names(json), nomatch = 0L) + names(json)[rhs] <- map[lhs] + } + + # fix values + if (is.character(json)) + return(map[[json]] %||% json) + + # handle true, false, null + if (is.name(json)) { + text <- as.character(json) + if (text == "true") + return(TRUE) + else if (text == "false") + return(FALSE) + else if (text == "null") + return(NULL) + } + + # recurse + if (is.recursive(json)) { + for (i in seq_along(json)) { + json[i] <- list(renv_json_read_remap(json[[i]], map)) + } + } + + json + + } + + # load the renv profile, if any + renv_bootstrap_profile_load(project) + + # construct path to library root + root <- renv_bootstrap_library_root(project) + + # construct library prefix for platform + prefix <- renv_bootstrap_platform_prefix() + + # construct full libpath + libpath <- file.path(root, prefix) + + # run bootstrap code + renv_bootstrap_exec(project, libpath, version) + + invisible() + +}) diff --git a/internal/inspect/detectors/testdata/rmd-site-no-meta/renv/settings.json b/internal/inspect/detectors/testdata/rmd-site-no-meta/renv/settings.json new file mode 100644 index 000000000..d5590a960 --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site-no-meta/renv/settings.json @@ -0,0 +1,15 @@ +{ + "bioconductor.version": null, + "external.libraries": [], + "ignored.packages": [], + "package.dependency.fields": ["Imports", "Depends", "LinkingTo"], + "ppm.enabled": null, + "ppm.ignored.urls": [], + "r.version": null, + "snapshot.type": "implicit", + "use.cache": true, + "vcs.ignore.cellar": true, + "vcs.ignore.library": true, + "vcs.ignore.local": true, + "vcs.manage.ignores": true +} diff --git a/internal/inspect/detectors/testdata/rmd-site-no-meta/rmd-site.Rproj b/internal/inspect/detectors/testdata/rmd-site-no-meta/rmd-site.Rproj new file mode 100644 index 000000000..827cca17d --- /dev/null +++ b/internal/inspect/detectors/testdata/rmd-site-no-meta/rmd-site.Rproj @@ -0,0 +1,15 @@ +Version: 1.0 + +RestoreWorkspace: Default +SaveWorkspace: Default +AlwaysSaveHistory: Default + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX + +BuildType: Website