The allcontributors
package is an
alternative implementation in R of the original
all-contributors
to acknowledge all
contributors in your ‘README’ (or elsewhere). The original is intended
to help acknowledge all contributions including those beyond the
contents of an actual repository, such as community or other or
less-tangible organisational contributions. This version only
acknowledges tangible contributions to a repository, but automates that
task to a single function call, in the hope that such simplicity will
spur greater usage. In short: This package can’t do everything the
original does, but it makes what it does much easier.
The original all-contributors
is
primarily a bot which responds to commit messages such as
add @user for <contribution>
, where <contribution>
is one of the
recognized types. As
said above, the relative advantage of that original system lies
primarily in the diversity of contribution types able to be
acknowledged, with each type for a given user appearing as a
corresponding emoji
below their github avatar as listed on the README. In comparison, this R
package:
add_contributors()
at any time to
add or update contributor acknowledgements.The primary function of the package,
add_contributors()
,
adds a table of all contributors by default to the main README.md
file
(and README.Rmd
if that exists). Tables or lists can be added to other
files by specifying the files
argument of that function. The
appearance of the contributors table is determined by several parameters
in that function, including:
type
For the type of contributions to include (code, contributors
who open issues, contributors who discuss issues).num_sections
For whether to present contributors in 1, 2, or 3
distinct sections, dependent upon which type
s of contributions are
to be acknowledged.format
Determining whether contributors are presented in a grid
with associated avatars of each contributor, as in the
original,
an enumerated list of github user names only, or a single text
string of comma-separated names.Contribution data are obtained by querying the github API, for which a
local key should be set as an environmental variable containing the name
"GITHUB"
(either via Sys.setenv()
, or as an equivalent entry in a
file ~/.Renviron
).
If the main README
file(s) contains a markdown section entitled
"Contributors"
, the
add_contributors()
function will add a table of contributors there, otherwise it will be
appended to the end of the document(s). If you wish your contributors
table to be somewhere other than at the end of the README
file(s),
start by adding an empty "## Contributors
section to the file(s) and
the function will insert the table at that point.
Any time you wish to update your contributor list, simply re-run the
add_contributors()
function. There’s even an open_issue
parameter
that will automatically open or update a github issue on your repository
so that contributors will be pinged about them being added to your list
of contributors.
The data used to construct the contributions table can also be extracted
without writing to the README
file(s) with the function
get_contributors()
:
library (allcontributors)
get_contributors(org = "ropenscilabs", repo = "allcontributors")
## ★ Extracting code contributors
## ✔ Extracted code contributors
## ★ Extracting github issue contributors
## ✔ Extracted github issue contributors
## logins contributions avatar
## 1 mpadge 130 https://avatars.githubusercontent.com/u/6697851?v=4
## 2 maelle NA https://avatars.githubusercontent.com/u/8360597?u=144e03ae2bbe8a69318cb0c6c3f647e25aec6763&v=4
## type
## 1 code
## 2 issue_authors
“Contributors” sections of files will be automatically updated to
reflect any new contributions by simply calling
add_contributors()
.
If your contributors have not changed then your lists of
acknowledgements will not be changed. The
add_contributors()
function has an additional parameter which may be set to
force_update = TRUE
to force lists to be updated regardless of whether
contributions have changed. This can be used to change the formats of
acknowledgements at any time. If anything goes wrong, the easiest way to
replace a contributions section is to simply delete the old ones from
all files, and call
add_contributors()
again.
The package has a single vignette which visually demonstrates the various formats in which an “allcontributors” section can be presented.
Copyright © 2019--22 mark padgham