Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ginolhac/upnews
Display news and update outdated github R packages
https://github.com/ginolhac/upnews
news r rstudio-addin
Last synced: 9 days ago
JSON representation
Display news and update outdated github R packages
- Host: GitHub
- URL: https://github.com/ginolhac/upnews
- Owner: ginolhac
- License: other
- Created: 2018-10-21T20:23:21.000Z (about 6 years ago)
- Default Branch: main
- Last Pushed: 2021-07-12T08:35:36.000Z (over 3 years ago)
- Last Synced: 2024-12-01T04:27:37.888Z (12 days ago)
- Topics: news, r, rstudio-addin
- Language: R
- Homepage:
- Size: 3.65 MB
- Stars: 25
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- jimsghstars - ginolhac/upnews - Display news and update outdated github R packages (R)
README
# upnews
[![Travis-CI Build Status](https://travis-ci.org/ginolhac/upnews.svg?branch=master)](https://travis-ci.org/ginolhac/upnews)
[![AppVeyor build status](https://ci.appveyor.com/api/projects/status/github/ginolhac/upnews?branch=master&svg=true)](https://ci.appveyor.com/project/ginolhac/upnews)
[![Coverage status](https://codecov.io/gh/ginolhac/upnews/branch/master/graph/badge.svg)](https://codecov.io/github/ginolhac/upnews?branch=master)**Display news and upgrade outdated GitHub R packages**
## Motivation
Get a similar output as the RStudio **Update** button for CRAN packages, but for GitHub ones.
![](docs/cran_update.png)
## Installation
You can install the released version of upnews from [github](https://github.com/ginolhac/upnews)
### Console version
``` r
if (!requireNamespace("remotes")) install.packages("remotes")
remotes::install_github("ginolhac/upnews")
```### With add-in
``` r
if (!requireNamespace("remotes")) install.packages("remotes")
remotes::install_github("ginolhac/upnews", dependencies = TRUE)
```## Procedure
This add-in will fetch the remote `HEAD sha1` of local github packages and compare them, to the remote `HEAD` (same branch).
If some packages are outdated, fetch and display a link to a NEWS file (case insensitive `NEWS.md`).
If the `Ref` is a commit, all branches are tested to find out from which branch it originate from.## Usage and ouput
### Console
``` r
> upnews::upnews()
fetching 23 distant sha1
|++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 05s
4 outdated pkgs (23 gh pkgs)
fetching news...
no news for jeroen/credentials/master
# A tibble: 4 x 7
pkgs loc_version gh_version local remote date news
*
1 ginolhac/bifag 0.1.3.990 0.1.3.990 master@d490355 master@362992a 2018-11-07 https://raw.githubusercontent.com/ginolhac/bifag/master/NEWS.md
2 jeroen/credentials 0.1 0.1 master@c9a4197 master@e1b2d9d 2018-11-13 NA
3 r-lib/pkgbuild 1.0.2.9000 1.0.2.9000 master@aec4654 master@6e4ebdf 2018-10-28 https://raw.githubusercontent.com/r-lib/pkgbuild/master/NEWS.md
4 tidyverse/rlang 0.3.0.9000 0.3.0.9000 master@f6a719a master@b8566db 2018-11-14 https://raw.githubusercontent.com/r-lib/rlang/master/NEWS.md
```### RStudio add-in
- use the **upnews** link in the _Addins_ menu.
- in the console, a progress bar display the retrieval of remote `HEAD`
- finally a [`DataTable`](https://rstudio.github.io/DT/) output is displayed:![screenshot](docs/screenshot.png)
- the package name has a pophover text with `user/pkg` and a link to the GitHub repo
- **loc_version** is from the `DESCRIPTION` **local** file, and a pophover text displays `branch/commit`
- **gh_version** is from the `DESCRIPTION` **remote** file, and a pophover text displays `branch/commit`
- **date** is the last commit datewhen the green buttons are used, `NEWS.md` are fetched and rendered in modals:
![screenshot2](docs/screenshot2.png)
- Demo GIF below:
![demo gif](docs/demo.gif)
### increase limits to the GITHUB API
If you need more request to the GitHub API, you must be authenticated. Then, the limit
is **5,000** requests per hour instead of **60**.To authenticate yourself, you can follow the great [happygitwithr](http://happygitwithr.com) bookdown by Jenny Bryan. The specific chapter about the `GITHUB_PAT` env variable is [here](http://happygitwithr.com/github-pat.html). Brefly:
- create a token with no rights on GitHub
- write this token in your `~/.Renviron` file
- from a fresh R session, check you registered token with `Sys.getenv("GITHUB_PAT")`### Related packages
[@Pakillo](https://github.com/Pakillo) recently made me aware of this similar package [dtupdate](https://github.com/hrbrmstr/dtupdate) by Bob Rudis. It has no add-in plus a dependency to `dplyr` but must be more stable than this one.
### Acknowledgements
- this [SO answer](https://stackoverflow.com/a/23970412/1395352) for fixing the issue with commit sha as reference
- [regexplain](https://github.com/gadenbuie/regexplain) by @gabenbuie for inspiration in the addin design
- [addinslist](https://github.com/daattali/addinslist) by @daattali for inspiration in the addin design
- [remotes](https://github.com/r-lib/remotes/blob/master/tests/testthat/test-install-github.R) for appropriate testing
- [@pvictor](https://github.com/pvictor/) for contributing and insightful advices
- [@koncina](https://github.com/kocina/) and [@Pakillo](https://github.com/Pakillo/) for testing and suggestions
- [@AntoineGuillot2](https://github.com/AntoineGuillot2/) for his nice [tutorial](https://github.com/AntoineGuillot2/ButtonsInDataTable) about buttons in DT.### TODO
- smarter search for news
- tests add-in (`shinytest`)
- is it useful since `remotes` v2.0.1 allows an interactive upgrade?