Title: | Internal Infrastructure for R-multiverse |
---|---|
Description: | R-multiverse requires this internal internal infrastructure package to automate contribution reviews and populate universes. |
Authors: | William Michael Landau [aut, cre]
|
Maintainer: | William Michael Landau <[email protected]> |
License: | MIT + file LICENSE |
Version: | 0.2.4 |
Built: | 2024-06-23 17:20:34 UTC |
Source: | https://github.com/r-multiverse/multiverse.internals |
Check R-universe package check results.
issues_checks(meta = meta_checks())
issues_checks(meta = meta_checks())
meta |
A data frame with R-universe package check results
returned by |
issues_checks()
reads output from
the R-universe check API
to scan all R-multiverse packages for issues that may have
happened during building and testing.
A named list of information about packages which do not comply
with DESCRPTION
checks. Each name is a package name,
and each element contains specific information about
non-compliance.
Functions like issues_versions()
and issues_descriptions()
perform health checks for all packages in R-multiverse.
Only packages that pass these checks go to the production repository at
https://production.r-multiverse.org. For a complete list of checks, see
the issues_*()
functions listed at
https://r-multiverse.org/multiverse.internals/reference.html.
record_versions()
updates the version number history
of releases in R-multiverse, and record_issues()
gathers
together all the issues about R-multiverse packages.
Other issues:
issues_dependencies()
,
issues_descriptions()
,
issues_versions()
meta <- meta_checks(repo = "https://wlandau.r-universe.dev") issues <- issues_checks(meta = meta) str(issues)
meta <- meta_checks(repo = "https://wlandau.r-universe.dev") issues <- issues_checks(meta = meta) str(issues)
Flag packages which have issues in their strong dependencies
(Imports:
, Depends:
, and LinkingTo:
in the DESCRIPTION
.)
These include indirect/upstream dependencies, as well, not just
the explicit mentions in the DESCRIPTION
file.
issues_dependencies(packages, meta = meta_packages(), verbose = FALSE)
issues_dependencies(packages, meta = meta_packages(), verbose = FALSE)
packages |
Character vector of names of packages with other issues. |
meta |
A data frame with R-universe package check results
returned by |
verbose |
|
A nested list of problems triggered by dependencies. The names of top-level elements are packages affected downstream. The value of each top-level element is a list whose names are Each element of this inner list is a character vector of relevant dependencies of the downstream package.
For example, consider a linear dependency graph where crew.cluster
depends on crew
, crew
depends on mirai
, and
mirai
depends on nanonext
. We represent the graph like this:
nanonext -> mirai -> crew -> crew.cluster
.
If nanonext
has an issue, then issues_dependencies()
returns
list(crew.cluster = list(nanonext = "crew"), ...)
, where ...
stands for additional named list entries. From this list, we deduce
that nanonext
is causing an issue affecting crew.cluster
through
the direct dependency on crew
.
The choice in output format from issues_dependencies()
allows package
maintainers to more easily figure out which direct dependencies
are contributing issues and drop those direct dependencies if necessary.
Functions like issues_versions()
and issues_descriptions()
perform health checks for all packages in R-multiverse.
Only packages that pass these checks go to the production repository at
https://production.r-multiverse.org. For a complete list of checks, see
the issues_*()
functions listed at
https://r-multiverse.org/multiverse.internals/reference.html.
record_versions()
updates the version number history
of releases in R-multiverse, and record_issues()
gathers
together all the issues about R-multiverse packages.
Other issues:
issues_checks()
,
issues_descriptions()
,
issues_versions()
meta <- meta_packages(repo = "https://wlandau.r-universe.dev") issues_dependencies(packages = character(0L), meta = meta) issues_dependencies(packages = "crew.aws.batch", meta = meta) issues_dependencies(packages = "nanonext", meta = meta) issues_dependencies(packages = "crew", meta = meta) issues_dependencies(packages = c("crew", "mirai"), meta = meta)
meta <- meta_packages(repo = "https://wlandau.r-universe.dev") issues_dependencies(packages = character(0L), meta = meta) issues_dependencies(packages = "crew.aws.batch", meta = meta) issues_dependencies(packages = "nanonext", meta = meta) issues_dependencies(packages = "crew", meta = meta) issues_dependencies(packages = c("crew", "mirai"), meta = meta)
DESCRIPTION
file issues.Report issues with the DESCRIPTION
files of packages.
issues_descriptions(meta = meta_packages())
issues_descriptions(meta = meta_packages())
meta |
A data frame with R-universe package check results
returned by |
issues_descriptions()
scans downloaded metadata from the
PACKAGES.json
file of an R universe and reports issues with a
package's description file, such as the presence of a
"Remotes"
field.
A named list of information about packages which do not comply
with DESCRPTION
checks. Each name is a package name,
and each element contains specific information about
non-compliance.
Functions like issues_versions()
and issues_descriptions()
perform health checks for all packages in R-multiverse.
Only packages that pass these checks go to the production repository at
https://production.r-multiverse.org. For a complete list of checks, see
the issues_*()
functions listed at
https://r-multiverse.org/multiverse.internals/reference.html.
record_versions()
updates the version number history
of releases in R-multiverse, and record_issues()
gathers
together all the issues about R-multiverse packages.
Other issues:
issues_checks()
,
issues_dependencies()
,
issues_versions()
meta <- meta_packages(repo = "https://wlandau.r-universe.dev") issues <- issues_descriptions(meta = meta) str(issues)
meta <- meta_packages(repo = "https://wlandau.r-universe.dev") issues <- issues_descriptions(meta = meta) str(issues)
Check package version number history for compliance.
issues_versions(versions)
issues_versions(versions)
versions |
Character of length 1, file path to a JSON manifest tracking the history of released versions of packages. The official versions file for R-multiverse is maintained and updated periodically at https://github.com/r-multiverse/checks/blob/main/versions.json. |
This function checks the version number history of packages in R-multiverse and reports any packages with issues. The current released version of a given package must be unique, and it must be greater than all the versions of all the previous package releases.
A named list of information about packages which do not comply with version number history checks. Each name is a package name, and each element contains specific information about version non-compliance: the current version number, the current version hash, and the analogous versions and hashes of the highest-versioned release recorded.
Functions like issues_versions()
and issues_descriptions()
perform health checks for all packages in R-multiverse.
Only packages that pass these checks go to the production repository at
https://production.r-multiverse.org. For a complete list of checks, see
the issues_*()
functions listed at
https://r-multiverse.org/multiverse.internals/reference.html.
record_versions()
updates the version number history
of releases in R-multiverse, and record_issues()
gathers
together all the issues about R-multiverse packages.
Other issues:
issues_checks()
,
issues_dependencies()
,
issues_descriptions()
# See https://github.com/r-multiverse/checks/blob/main/versions.json # for the official versions JSON for R-multiverse. lines <- c( "[", " {", " \"package\": \"package_unmodified\",", " \"version_current\": \"1.0.0\",", " \"hash_current\": \"hash_1.0.0\",", " \"version_highest\": \"1.0.0\",", " \"hash_highest\": \"hash_1.0.0\"", " },", " {", " \"package\": \"version_decremented\",", " \"version_current\": \"0.0.1\",", " \"hash_current\": \"hash_0.0.1\",", " \"version_highest\": \"1.0.0\",", " \"hash_highest\": \"hash_1.0.0\"", " },", " {", " \"package\": \"version_incremented\",", " \"version_current\": \"2.0.0\",", " \"hash_current\": \"hash_2.0.0\",", " \"version_highest\": \"2.0.0\",", " \"hash_highest\": \"hash_2.0.0\"", " },", " {", " \"package\": \"version_unmodified\",", " \"version_current\": \"1.0.0\",", " \"hash_current\": \"hash_1.0.0-modified\",", " \"version_highest\": \"1.0.0\",", " \"hash_highest\": \"hash_1.0.0\"", " }", "]" ) versions <- tempfile() writeLines(lines, versions) out <- issues_versions(versions) str(out)
# See https://github.com/r-multiverse/checks/blob/main/versions.json # for the official versions JSON for R-multiverse. lines <- c( "[", " {", " \"package\": \"package_unmodified\",", " \"version_current\": \"1.0.0\",", " \"hash_current\": \"hash_1.0.0\",", " \"version_highest\": \"1.0.0\",", " \"hash_highest\": \"hash_1.0.0\"", " },", " {", " \"package\": \"version_decremented\",", " \"version_current\": \"0.0.1\",", " \"hash_current\": \"hash_0.0.1\",", " \"version_highest\": \"1.0.0\",", " \"hash_highest\": \"hash_1.0.0\"", " },", " {", " \"package\": \"version_incremented\",", " \"version_current\": \"2.0.0\",", " \"hash_current\": \"hash_2.0.0\",", " \"version_highest\": \"2.0.0\",", " \"hash_highest\": \"hash_2.0.0\"", " },", " {", " \"package\": \"version_unmodified\",", " \"version_current\": \"1.0.0\",", " \"hash_current\": \"hash_1.0.0-modified\",", " \"version_highest\": \"1.0.0\",", " \"hash_highest\": \"hash_1.0.0\"", " }", "]" ) versions <- tempfile() writeLines(lines, versions) out <- issues_versions(versions) str(out)
List package checks results reported by the R-universe package API.
meta_checks(repo = "https://community.r-multiverse.org")
meta_checks(repo = "https://community.r-multiverse.org")
repo |
Character of length 1, URL of the package repository.
R-multiverse uses |
A data frame with one row per package and columns with package check results.
meta_checks(repo = "https://wlandau.r-universe.dev")
meta_checks(repo = "https://wlandau.r-universe.dev")
List package metadata in an R universe.
meta_packages(repo = "https://community.r-multiverse.org")
meta_packages(repo = "https://community.r-multiverse.org")
repo |
Character of length 1, URL of the package repository.
R-multiverse uses |
A data frame with one row per package and columns with package metadata.
meta_packages(repo = "https://wlandau.r-universe.dev")
meta_packages(repo = "https://wlandau.r-universe.dev")
Record R-multiverse package issues in package-specific JSON files.
record_issues( repo = "https://community.r-multiverse.org", versions = "versions.json", output = "issues", mock = NULL, verbose = FALSE )
record_issues( repo = "https://community.r-multiverse.org", versions = "versions.json", output = "issues", mock = NULL, verbose = FALSE )
repo |
Character of length 1, URL of the package repository.
R-multiverse uses |
versions |
Character of length 1, file path to a JSON manifest tracking the history of released versions of packages. The official versions file for R-multiverse is maintained and updated periodically at https://github.com/r-multiverse/checks/blob/main/versions.json. |
output |
Character of length 1, file path to the folder to record
new package issues. Each call to |
mock |
For testing purposes only, a named list of data frames for inputs to various intermediate functions. |
verbose |
|
NULL
(invisibly).
Functions like issues_versions()
and issues_descriptions()
perform health checks for all packages in R-multiverse.
Only packages that pass these checks go to the production repository at
https://production.r-multiverse.org. For a complete list of checks, see
the issues_*()
functions listed at
https://r-multiverse.org/multiverse.internals/reference.html.
record_versions()
updates the version number history
of releases in R-multiverse, and record_issues()
gathers
together all the issues about R-multiverse packages.
For each package with observed problems, record_issues()
writes
an issue file. This issue file is a JSON list with one element
per type of failing check. Each element has an informative name
(for example, checks
, descriptions
, or versions
)
and a list of diagnostic information.
Each issue file also has a date
field. This date the day that
an issue was first noticed. It automatically resets the next time
all package are resolved.
repo <- "https://wlandau.r-universe.dev" output <- tempfile() versions <- tempfile() record_versions( versions = versions, repo = repo ) record_issues( repo = repo, versions = versions, output = output ) files <- list.files(output) print(files) package <- head(files, n = 1) if (length(package)) { print(package) } if (length(package)) { print(readLines(file.path(output, package))) }
repo <- "https://wlandau.r-universe.dev" output <- tempfile() versions <- tempfile() record_versions( versions = versions, repo = repo ) record_issues( repo = repo, versions = versions, output = output ) files <- list.files(output) print(files) package <- head(files, n = 1) if (length(package)) { print(package) } if (length(package)) { print(readLines(file.path(output, package))) }
Record the manifest of versions of packages and their hashes.
record_versions( versions = "versions.json", repo = "https://community.r-multiverse.org", current = multiverse.internals::get_current_versions(repo = repo) )
record_versions( versions = "versions.json", repo = "https://community.r-multiverse.org", current = multiverse.internals::get_current_versions(repo = repo) )
versions |
Character of length 1, file path to a JSON manifest tracking the history of released versions of packages. The official versions file for R-multiverse is maintained and updated periodically at https://github.com/r-multiverse/checks/blob/main/versions.json. |
repo |
Character of length 1, URL of the package repository.
R-multiverse uses |
current |
A data frame of current versions and hashes of packages
in |
This function tracks a manifest containing the current version,
the current hash, the highest version ever released, and
the hash of the highest version ever released.
issues_versions()
uses this information
to determine whether the package complies with best
practices for version numbers.
NULL
(invisibly). Writes a package version manifest
and a manifest of version issues as JSON files.
Functions like issues_versions()
and issues_descriptions()
perform health checks for all packages in R-multiverse.
Only packages that pass these checks go to the production repository at
https://production.r-multiverse.org. For a complete list of checks, see
the issues_*()
functions listed at
https://r-multiverse.org/multiverse.internals/reference.html.
record_versions()
updates the version number history
of releases in R-multiverse, and record_issues()
gathers
together all the issues about R-multiverse packages.
# R-multiverse uses https://community.r-multiverse.org as the repo. repo <- "https://wlandau.r-universe.dev" # just for testing and examples output <- tempfile() versions <- tempfile() # First snapshot: record_versions( versions = versions, repo = repo ) readLines(versions) # In subsequent snapshots, we have historical information about versions. record_versions( versions = versions, repo = repo ) readLines(versions)
# R-multiverse uses https://community.r-multiverse.org as the repo. repo <- "https://wlandau.r-universe.dev" # just for testing and examples output <- tempfile() versions <- tempfile() # First snapshot: record_versions( versions = versions, repo = repo ) readLines(versions) # In subsequent snapshots, we have historical information about versions. record_versions( versions = versions, repo = repo ) readLines(versions)
Review a pull request to add packages to packages.json
.
review_pull_request(owner = "r-multiverse", repo = "contributions", number)
review_pull_request(owner = "r-multiverse", repo = "contributions", number)
owner |
Character of length 1, name of the package repository owner. |
repo |
Character of length 1, URL of the package repository.
R-multiverse uses |
number |
Positive integer of length 1, index of the pull request in the repo. |
NULL
(invisibly).
Testing of this function unfortunately needs to be manual. Test cases:
Add a package correctly (automatically merge).
Add a bad URL (manual review).
Change a URL (manual review).
Add a file in a forbidden place (close).
Add a custom JSON file which can be parsed (manual review).
Other pull request reviews:
review_pull_requests()
Review pull requests which add packages to packages.json
.
review_pull_requests(owner = "r-multiverse", repo = "contributions")
review_pull_requests(owner = "r-multiverse", repo = "contributions")
owner |
Character of length 1, name of the package repository owner. |
repo |
Character of length 1, URL of the package repository.
R-multiverse uses |
NULL
(invisibly).
Testing of this function unfortunately needs to be manual. Test cases:
Add a package correctly (automatically merge).
Add a bad URL (manual review).
Change a URL (manual review).
Add a file in a forbidden place (close).
Add a custom JSON file which can be parsed (manual review).
Other pull request reviews:
review_pull_request()