{"id":14066354,"url":"https://github.com/turtletopia/woodendesc","last_synced_at":"2026-02-19T07:31:06.634Z","repository":{"id":50324077,"uuid":"479397856","full_name":"turtletopia/woodendesc","owner":"turtletopia","description":"Get the available packages and their version codes as well as their dependencies from any R repository with unified API.","archived":false,"fork":false,"pushed_at":"2025-02-04T19:01:30.000Z","size":19765,"stargazers_count":5,"open_issues_count":8,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-22T03:41:22.803Z","etag":null,"topics":["available-packages","available-versions","dependencies","r","unified-api"],"latest_commit_sha":null,"homepage":"https://turtletopia.github.io/woodendesc/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/turtletopia.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-04-08T13:17:26.000Z","updated_at":"2025-10-06T09:38:39.000Z","dependencies_parsed_at":"2024-04-10T11:27:28.553Z","dependency_job_id":"57e24889-d384-41ef-81d0-00758310f306","html_url":"https://github.com/turtletopia/woodendesc","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/turtletopia/woodendesc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turtletopia%2Fwoodendesc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turtletopia%2Fwoodendesc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turtletopia%2Fwoodendesc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turtletopia%2Fwoodendesc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/turtletopia","download_url":"https://codeload.github.com/turtletopia/woodendesc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/turtletopia%2Fwoodendesc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29606806,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T06:47:36.664Z","status":"ssl_error","status_checked_at":"2026-02-19T06:45:47.551Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["available-packages","available-versions","dependencies","r","unified-api"],"created_at":"2024-08-13T07:05:03.541Z","updated_at":"2026-02-19T07:31:06.605Z","avatar_url":"https://github.com/turtletopia.png","language":"R","funding_links":[],"categories":["R"],"sub_categories":[],"readme":"---\noutput: github_document\n---\n\n\u003c!-- README.md is generated from README.Rmd. Please edit that file --\u003e\n\n```{r, include=FALSE}\nknitr::opts_chunk$set(\n  collapse = TRUE,\n  comment = \"#\u003e\",\n  fig.path = \"man/figures/README-\",\n  out.width = \"90%\"\n)\nlibrary(woodendesc)\n```\n\n# woodendesc \u003ca href=\"https://turtletopia.github.io/woodendesc/\"\u003e\u003cimg src=\"man/figures/logo.svg\" align=\"right\" height=\"139\" /\u003e\u003c/a\u003e\n\n\u003c!-- badges: start --\u003e\n[![CRAN status](https://www.r-pkg.org/badges/version-last-release/woodendesc)](https://CRAN.R-project.org/package=woodendesc)\n[![R-universe](https://turtletopia.r-universe.dev/badges/woodendesc)](https://turtletopia.r-universe.dev)\n[![R-CMD-check](https://github.com/turtletopia/woodendesc/workflows/R-CMD-check/badge.svg)](https://github.com/turtletopia/woodendesc/actions)\n[![Codecov test coverage](https://codecov.io/gh/turtletopia/woodendesc/branch/master/graph/badge.svg)](https://app.codecov.io/gh/turtletopia/woodendesc?branch=master)\n\u003c!-- badges: end --\u003e\n\n{woodendesc} strives to provide an unified API to query any R repository for the following data:\n\n* list of available packages,\n* version code of any selected package,\n* direct dependencies of any selected package.\n\nThe package tries to cache as much as possible and reuse existing cache wherever possible to minimize internet usage. Many repositories (CRAN, Bioconductor, R-universe, and local libraries) have custom implementations of their handlers to make use of additional possibilities they present (e.g. previous versions on CRAN or old releases of Bioconductor).\n\n## Installation\n\n```{r install, eval=FALSE}\n# Install from CRAN\ninstall.packages(\"woodendesc\")\n# Install the development version from GitHub:\n# install.packages(\"devtools\")\ndevtools::install_github(\"turtletopia/woodendesc\")\n```\n\n## How to use woodendesc?\n\nEach repository has its dedicated functions for listing available packages, package version, and package dependencies.\n\nA list of available packages is returned as a character vector. An example call returning a list of CRAN packages:\n\n```{r demo_cran_pkgs, cache=TRUE}\nlibrary(woodendesc)\n# Too many packages to list them all\nall_cran_pkgs \u003c- wood_cran_packages()\nprint(all_cran_pkgs, max = 10)\n```\n\nAn available package version is returned as a single code. An example call checking the current version of Biobase package on Bioconductor:\n\n```{r demo_bioc_version, cache=TRUE}\nwood_bioc_version(\"Biobase\")\n```\n\nDependencies of a package are returned as a data frame with the same set of columns for all calls. An example call for locally installed digest package (dependency of woodendesc):\n\n```{r demo_local_deps, cache=TRUE}\nwood_local_dependencies(\"digest\")\n```\n\nNote that some repositories store more than just one version of a package (e.g. CRAN and Github). These cases can be distinguished by pluralized `_versions` function name component and they return all version codes instead; a character vector of any length. This is how it works for gglgbtq on Github:\n\n```{r demo_gh_versions, cache=TRUE}\nwood_github_versions(\"gglgbtq\", \"turtletopia\")\n```\n\nIf a single version code is needed, there's a counterpart that selects the latest version only. The current version of aurrera on Github is:\n\n```{r demo_gh_latest, cache=TRUE}\nwood_github_latest(\"aurrera\", \"turtletopia\")\n```\n\nLast, but not least, there are three functions for searching through multiple repositories and collecting the results. Read the documentation for details on how to specify `repos` parameter.\n\n`wood_packages()` collects available packages from the specified repositories and returns unique elements:\n\n```{r demo_wood_packages, cache=TRUE}\nwood_packages(repos = c(\"core\", \"https://colinfay.me\"))\n```\n\n`wood_versions()` returns all package versions available on at least one of the specified repositories; may take more than one package:\n\n```{r demo_wood_versions, cache=TRUE}\nwood_versions(\n  c(\"aurrera\", \"woodendesc\"),\n  repos = c(\"local#all\", \"runiverse@turtletopia\", \"cran\")\n)\n```\n\n`wood_dependencies()` returns a list of package dependencies, a data frame for each package specified; the first working repository is used for each package, as the dependencies are not supposed to be summable:\n\n```{r demo_wood_deps, cache=TRUE}\nwood_dependencies(\n  c(\"versionsort\", \"gglgbtq\"),\n  repos = c(\"local#all\", \"runiverse@turtletopia\", \"cran\")\n)\n```\n\nAnd if you ever need to clear cache, simply call:\n\n```{r clear_cache}\nwood_clear_cache()\n```\n\n## End notes\n\nI believe in equal rights and treatment for everybody, regardless of their sexuality, gender identity, skin tone, nationality, and other features beyond human control. Thus, I do not allow woodendesc to be used in any project that promotes hate based on the aforementioned factors.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fturtletopia%2Fwoodendesc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fturtletopia%2Fwoodendesc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fturtletopia%2Fwoodendesc/lists"}