{"id":16411787,"url":"https://github.com/ijlyttle/pinsmanifest","last_synced_at":"2026-06-15T03:32:24.970Z","repository":{"id":54134211,"uuid":"521954811","full_name":"ijlyttle/pinsManifest","owner":"ijlyttle","description":"Manage Manifests for URL Boards in the Pins Package","archived":false,"fork":false,"pushed_at":"2022-11-07T02:36:50.000Z","size":423,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-31T16:48:11.591Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://ijlyttle.github.io/pinsManifest/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ijlyttle.png","metadata":{"files":{"readme":"README.Rmd","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-08-06T13:31:46.000Z","updated_at":"2023-05-12T17:34:14.000Z","dependencies_parsed_at":"2023-01-22T10:00:55.297Z","dependency_job_id":null,"html_url":"https://github.com/ijlyttle/pinsManifest","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ijlyttle/pinsManifest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ijlyttle%2FpinsManifest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ijlyttle%2FpinsManifest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ijlyttle%2FpinsManifest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ijlyttle%2FpinsManifest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ijlyttle","download_url":"https://codeload.github.com/ijlyttle/pinsManifest/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ijlyttle%2FpinsManifest/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34346867,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-10-11T06:46:34.926Z","updated_at":"2026-06-15T03:32:24.957Z","avatar_url":"https://github.com/ijlyttle.png","language":"R","funding_links":[],"categories":[],"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 = \"100%\"\n)\n```\n\n# pinsManifest\n\n\u003c!-- badges: start --\u003e\n[![R-CMD-check](https://github.com/ijlyttle/pinsManifest/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/ijlyttle/pinsManifest/actions/workflows/R-CMD-check.yaml)\n[![Lifecycle: experimental](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](https://lifecycle.r-lib.org/articles/stages.html#experimental)\n\u003c!-- badges: end --\u003e\n\nThe goal of pinsManifest is to help with a particular use-case for [pins](https://pins.rstudio.com/):\n\n - you create a board using `pins::board_folder()`\n - you serve the board using `pins::board_url()`\n \nThe mechanism is to make a *manifest* file of pins used to create a `pins::board_url()`. \n\nIt is hoped that this package can motivate a discussion to see if these ideas could be integrated into the pins package itself. \nIn other words, one version of success is that this package need not exist.\n\nTowards that end, these ideas are being adopted into pins (yay!). \n\nAs a result, I'm making changes here to track the changes there.\n\n## Installation\n\nYou can install the development version of pinsManifest from [GitHub](https://github.com/) with:\n\n``` r\n# install.packages(\"devtools\")\ndevtools::install_github(\"ijlyttle/pinsManifest\")\n```\n\n## Example\n\n```{r}\nlibrary(\"pinsManifest\")\n```\n\n### Writing a folder-board\n\nLet's say you have a `pins::board_folder()` that you want to serve as a website, perhaps using GitHub.\nYou can write a manifest file for the pins using `pin_write_manifest()`:\n\n``` r\nboard \u003c- pins::board_folder(\"/some/path\")\n\n# add/update pins\n\npin_write_manifest(board)\n#\u003e Manifest file written to `/some/path/_pins.yaml`\n```\n\nThis writes a manifest file, `_pins.yaml` to root directory of your board.\nIt stores the names of your pins and the names of each version of each pin.\n\nNote: `pin_write_manifest()` supports only boards created using `pins::board_folder()`.\n\n### Reading a URL-board\n\nTo create a `pins::board_url()`, you need a named character-vector where:\n\n   - names are names of pins\n   - values are the URLs that point to a version-directory\n   \nThe problem is that the names of version directories are, by design, hard to predict and manage manually.\n\nThis is where a manifest file, `_pins.yaml` can help. \nWhen you call `board_url_manifest()`, it downloads `_pins.yaml`, then parses it to provide information to build a `pins::board_url()`.\n\nA demonstration board is provided using `url_demo_manifest()`:\n\n```{r}\nboard_demo \u003c- board_url_manifest(url_demo_manifest())\n\npins::pin_list(board_demo)\npins::pin_meta(board_demo, \"mtcars-json\")\n```\n\n### Behind the scenes\n\nThe function `manifest_latest()`:\n\n  - takes a `url` describing the root directory of a board\n  - downloads and parses the `_pins.yaml` file at the root\n  - returns a named character vector where:\n    - names are names of pins\n    - values are URLs to directory for the latest version for each pin\n\nThe return value can be used to build a `pins::board_url()`:\n    \n```{r}\nmanifest_latest(url_demo_manifest())\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fijlyttle%2Fpinsmanifest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fijlyttle%2Fpinsmanifest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fijlyttle%2Fpinsmanifest/lists"}