The goal of this vignette is to provide an explicit map between the metadata fields used by cffr and each one of the valid keys of the Citation File Format schema version 1.2.0.
Summary
We summarize here the fields that cffr can coerce and the original source of information for each one of them. The details on each key are presented on the next section of the document. The assessment of fields are based on the Guide to Citation File Format schema version 1.2.0 (Druskat et al. 2021).
key | source |
---|---|
abstract | DESCRIPTION file |
authors | DESCRIPTION file |
cff-version | parameter on function |
commit | DESCRIPTION file |
contact | DESCRIPTION file |
date-released | DESCRIPTION file |
doi | CITATION file |
identifiers | DESCRIPTION/CITATION files |
keywords | DESCRIPTION file |
license | DESCRIPTION file |
license-url | Ignored by cffr |
message | DESCRIPTION file |
preferred-citation | CITATION file |
references | DESCRIPTION/CITATION files |
repository | DESCRIPTION file |
repository-artifact | Ignored by cffr |
repository-code | DESCRIPTION file |
title | DESCRIPTION file |
type | Fixed value: ‘software’ |
url | DESCRIPTION file |
version | DESCRIPTION file |
Details
abstract
This key is extracted from the "Description"
field of
the DESCRIPTION
file.
Example
library(cffr)
# Create cffr for yaml
cff_obj <- cff_create("rmarkdown")
# Get DESCRIPTION of rmarkdown to check
pkg <- desc::desc(file.path(find.package("rmarkdown"), "DESCRIPTION"))
cat(cff_obj$abstract)
#> Convert R Markdown documents into a variety of formats.
cat(pkg$get("Description"))
#> Convert R Markdown documents into a variety of formats.
authors
This key is coerced from the "Authors"
or
"Authors@R"
field of the DESCRIPTION
file. By
default persons with the role "aut"
or "cre"
are considered, however this can be modified via the
authors_roles
parameter.
Example
# An example DESCRIPTION
path <- system.file("examples/DESCRIPTION_many_persons", package = "cffr")
pkg <- desc::desc(path)
# See persons listed
pkg$get_authors()
#> [1] "Diego Hernangómez <fake@gmail.com> [aut, cre] (<https://orcid.org/0000-0001-8457-4658>, error, error)"
#> [2] "Joe Doe <I am a wrong email> [aut] (This One, ES, error)"
#> [3] "Pepe Doe <fake@gmail.com> [aut] (error)"
#> [4] "I am an entity [cre] (2020-01-01, error)"
#> [5] "ERROR entity [cph] (for the administrative boundaries.)"
#> [6] "ERROR person [cph] (<https://orcid.org/0000-0003-2042-7063>, for the gisco_countrycode dataset.)"
# Default behaviour, use authors and creators (maintainers)
cff_obj <- cff_create(path)
cff_obj$authors
#> - family-names: Hernangómez
#> given-names: Diego
#> email: fake@gmail.com
#> orcid: https://orcid.org/0000-0001-8457-4658
#> - family-names: Doe
#> given-names: Joe
#> affiliation: This One
#> country: ES
#> - family-names: Doe
#> given-names: Pepe
#> email: fake@gmail.com
#> - name: I am an entity
#> date-end: '2020-01-01'
# Use now Copyright holders and maintainers
cff_obj_alt <- cff_create(path, authors_roles = c("cre", "cph"))
cff_obj_alt$authors
#> - family-names: Hernangómez
#> given-names: Diego
#> email: fake@gmail.com
#> orcid: https://orcid.org/0000-0001-8457-4658
#> - name: I am an entity
#> date-end: '2020-01-01'
#> - name: ERROR entity
#> - family-names: person
#> given-names: ERROR
#> orcid: https://orcid.org/0000-0003-2042-7063
cff-version
This key can be set via the parameters of the
cff_create()
/cff_write()
functions:
Example
cff_objv110 <- cff_create("jsonlite", cff_version = "v1.1.0")
cat(cff_objv110$`cff-version`)
#> v1.1.0
commit
This key is extracted from the "RemoteSha"
field of the
DESCRIPTION
file. This is the case of packages installed
using the r-universe or
packages such as remotes or pak.
Example
# An example DESCRIPTION
path <- system.file("examples/DESCRIPTION_r_universe", package = "cffr")
pkg <- desc::desc(path)
# See RemoteSha
pkg$get("RemoteSha")
#> RemoteSha
#> "bdd9a29d7eabcc43c3195fe461f884932eba763c"
cff_read(path)
#> cff-version: 1.2.0
#> message: 'To cite package "codemetar" in publications use:'
#> type: software
#> title: 'codemetar: Generate ''CodeMeta'' Metadata for R Packages'
#> version: 0.3.5
#> authors:
#> - family-names: Boettiger
#> given-names: Carl
#> email: cboettig@gmail.com
#> orcid: https://orcid.org/0000-0002-1642-628X
#> - family-names: Salmon
#> given-names: Maëlle
#> orcid: https://orcid.org/0000-0002-2815-0399
#> abstract: The 'Codemeta' Project defines a 'JSON-LD' format for describing software
#> metadata, as detailed at <https://codemeta.github.io>. This package provides utilities
#> to generate, parse, and modify 'codemeta.json' files automatically for R packages,
#> as well as tools and examples for working with 'codemeta.json' 'JSON-LD' more generally.
#> repository: https://ropensci.r-universe.dev
#> repository-code: https://github.com/ropensci/codemetar
#> url: https://docs.ropensci.org/codemetar/
#> date-released: '2024-02-09'
#> contact:
#> - family-names: Boettiger
#> given-names: Carl
#> email: cboettig@gmail.com
#> orcid: https://orcid.org/0000-0002-1642-628X
#> keywords:
#> - metadata
#> - codemeta
#> - ropensci
#> - citation
#> - credit
#> - linked-data
#> - json-ld
#> - peer-reviewed
#> - r
#> - r-package
#> - rstats
#> license: GPL-3.0-only
#> commit: bdd9a29d7eabcc43c3195fe461f884932eba763c
#> doi: 10.32614/CRAN.package.codemetar
contact
This key is coerced from the "Authors"
or
"Authors@R"
field of the DESCRIPTION
file.
Only persons with the role "cre"
(i.e, the maintainer(s))
are considered.
Example
cff_obj <- cff_create("rmarkdown")
pkg <- desc::desc(file.path(find.package("rmarkdown"), "DESCRIPTION"))
cff_obj$contact
#> - family-names: Xie
#> given-names: Yihui
#> email: xie@yihui.name
#> orcid: https://orcid.org/0000-0003-0645-5666
pkg$get_author()
#> [1] "Yihui Xie <xie@yihui.name> [aut, cre] (<https://orcid.org/0000-0003-0645-5666>)"
date-released
This key is extracted from the DESCRIPTION
file
following this logic:
-
"Date"
field or, - If not present, from
"Date/Publication"
. This is present on packages built on CRAN and Bioconductor. or, - If not present, from
"Packaged"
, that is present on packages built by the r-universe.
Example
# From an installed package
cff_obj <- cff_create("rmarkdown")
pkg <- desc::desc(file.path(find.package("rmarkdown"), "DESCRIPTION"))
cat(pkg$get("Date/Publication"))
#> 2024-11-04 12:30:09 UTC
cat(cff_obj$`date-released`)
#> 2024-11-04
# A DESCRIPTION file without a Date
nodate <- system.file("examples/DESCRIPTION_basic", package = "cffr")
tmp <- tempfile("DESCRIPTION")
# Create a temporary file
file.copy(nodate, tmp)
#> [1] TRUE
pkgnodate <- desc::desc(tmp)
cffnodate <- cff_create(tmp)
# Won't appear
cat(cffnodate$`date-released`)
pkgnodate
#> Type: Package
#> Package: basicdesc
#> Title: A Basic Description
#> Version: 0.1.6
#> Authors@R (parsed):
#> * Marc Basic <marcbasic@gmail.com> [aut, cre, cph]
#> Description: A very basic description. Should parse without
#> problems.
#> License: GPL-3
#> URL: https://github.com/basic/package,
#> https://basic.github.io/package
#> BugReports: https://github.com/basic/package/issues
#> Encoding: UTF-8
#> LazyData: true
#> RoxygenNote: 6.0.1.9000
# Adding a Date
desc::desc_set("Date", "1999-01-01", file = tmp)
#> Type: Package
#> Package: basicdesc
#> Title: A Basic Description
#> Version: 0.1.6
#> Date: 1999-01-01
#> Authors@R (parsed):
#> * Marc Basic <marcbasic@gmail.com> [aut, cre, cph]
#> Description: A very basic description. Should parse without
#> problems.
#> License: GPL-3
#> URL: https://github.com/basic/package,
#> https://basic.github.io/package
#> BugReports: https://github.com/basic/package/issues
#> Encoding: UTF-8
#> LazyData: true
#> RoxygenNote: 6.0.1.9000
cat(cff_create(tmp)$`date-released`)
#> 1999-01-01
doi
This key is coerced from the "doi"
field of the preferred-citation object. If not present
and the package is on CRAN, it would be populated with
the doi provided by CRAN (e.g. https://doi.org/10.32614/CRAN.package.cffr).
Example
cff_doi <- cff_create("cffr")
cat(cff_doi$doi)
#> 10.21105/joss.03900
cat(cff_doi$`preferred-citation`$doi)
#> 10.21105/joss.03900
identifiers
This key includes all the possible identifiers of the package:
From the
DESCRIPTION
field, it includes all the urls not included in url or repository-code.From the
CITATION
file, it includes all the dois not included in doi and the identifiers (if any) not included in the"identifiers"
key of preferred-citation.If the package is on CRAN and it has a
CITATION
file providing a doi, the doi provided by CRAN would be added as well.
Example
file <- system.file("examples/DESCRIPTION_many_urls", package = "cffr")
pkg <- desc::desc(file)
cat(pkg$get_urls())
#> https://github.com/test/package https://test.github.io/package/ https://r-forge.r-project.org/projects/test/ http://google.ru https://gitlab.com/r-packages/behaviorchange
cat(cff_create(file)$url)
#> https://test.github.io/package/
cat(cff_create(file)$`repository-code`)
#> https://github.com/test/package
cff_create(file)$identifiers
#> - type: url
#> value: https://r-forge.r-project.org/projects/test/
#> - type: url
#> value: http://google.ru
#> - type: url
#> value: https://gitlab.com/r-packages/behaviorchange
keywords
This key is extracted from the DESCRIPTION
file. The
keywords should appear in the DESCRIPTION
as:
...
X-schema.org-keywords: keyword1, keyword2, keyword3
Example
# A DESCRIPTION file without keywords
nokeywords <- system.file("examples/DESCRIPTION_basic", package = "cffr")
tmp2 <- tempfile("DESCRIPTION")
# Create a temporary file
file.copy(nokeywords, tmp2)
#> [1] TRUE
pkgnokeywords <- desc::desc(tmp2)
cffnokeywords <- cff_create(tmp2)
# Won't appear
cat(cffnokeywords$keywords)
pkgnokeywords
#> Type: Package
#> Package: basicdesc
#> Title: A Basic Description
#> Version: 0.1.6
#> Authors@R (parsed):
#> * Marc Basic <marcbasic@gmail.com> [aut, cre, cph]
#> Description: A very basic description. Should parse without
#> problems.
#> License: GPL-3
#> URL: https://github.com/basic/package,
#> https://basic.github.io/package
#> BugReports: https://github.com/basic/package/issues
#> Encoding: UTF-8
#> LazyData: true
#> RoxygenNote: 6.0.1.9000
# Adding Keywords
desc::desc_set("X-schema.org-keywords", "keyword1, keyword2, keyword3",
file = tmp2
)
#> Type: Package
#> Package: basicdesc
#> Title: A Basic Description
#> Version: 0.1.6
#> Authors@R (parsed):
#> * Marc Basic <marcbasic@gmail.com> [aut, cre, cph]
#> Description: A very basic description. Should parse without
#> problems.
#> License: GPL-3
#> URL: https://github.com/basic/package,
#> https://basic.github.io/package
#> BugReports: https://github.com/basic/package/issues
#> Encoding: UTF-8
#> LazyData: true
#> RoxygenNote: 6.0.1.9000
#> X-schema.org-keywords: keyword1, keyword2, keyword3
cat(cff_create(tmp2)$keywords)
#> keyword1 keyword2 keyword3
Additionally, if the source code of the package is hosted on GitHub,
cffr can retrieve the topics of your repo via the GitHub API and include those
topics as keywords. This option is controlled via the
gh_keywords
parameter:
Example
# Get cff object from jsonvalidate
jsonval <- cff_create("jsonvalidate")
# Keywords are retrieved from the GitHub repo
jsonval
#> cff-version: 1.2.0
#> message: 'To cite package "jsonvalidate" in publications use:'
#> type: software
#> license: MIT
#> title: 'jsonvalidate: Validate ''JSON'' Schema'
#> version: 1.4.2
#> doi: 10.32614/CRAN.package.jsonvalidate
#> abstract: Uses the node library 'is-my-json-valid' or 'ajv' to validate 'JSON' against
#> a 'JSON' schema. Drafts 04, 06 and 07 of 'JSON' schema are supported.
#> authors:
#> - family-names: FitzJohn
#> given-names: Rich
#> email: rich.fitzjohn@gmail.com
#> - family-names: Ashton
#> given-names: Rob
#> - family-names: Buus
#> given-names: Mathias
#> - family-names: Poberezkin
#> given-names: Evgeny
#> repository: https://ropensci.r-universe.dev
#> repository-code: https://github.com/ropensci/jsonvalidate
#> commit: f942ba39f09474ffee82fef35761b6e1cde0165f
#> url: https://docs.ropensci.org/jsonvalidate/
#> date-released: '2024-10-29'
#> contact:
#> - family-names: FitzJohn
#> given-names: Rich
#> email: rich.fitzjohn@gmail.com
#> keywords:
#> - json
#> - json-validation
#> - jsonvalidate
#> - r
#> - r-package
#> - rstats
#> references:
#> - type: software
#> title: R6
#> abstract: 'R6: Encapsulated Classes with Reference Semantics'
#> notes: Imports
#> url: https://r6.r-lib.org
#> repository: https://CRAN.R-project.org/package=R6
#> authors:
#> - family-names: Chang
#> given-names: Winston
#> email: winston@stdout.org
#> year: '2024'
#> doi: 10.32614/CRAN.package.R6
#> - type: software
#> title: V8
#> abstract: 'V8: Embedded JavaScript and WebAssembly Engine for R'
#> notes: Imports
#> url: https://jeroen.r-universe.dev/V8
#> repository: https://CRAN.R-project.org/package=V8
#> authors:
#> - family-names: Ooms
#> given-names: Jeroen
#> email: jeroenooms@gmail.com
#> orcid: https://orcid.org/0000-0002-4035-0289
#> year: '2024'
#> doi: 10.32614/CRAN.package.V8
#> - type: software
#> title: knitr
#> abstract: 'knitr: A General-Purpose Package for Dynamic Report Generation in R'
#> notes: Suggests
#> url: https://yihui.org/knitr/
#> repository: https://CRAN.R-project.org/package=knitr
#> authors:
#> - family-names: Xie
#> given-names: Yihui
#> email: xie@yihui.name
#> orcid: https://orcid.org/0000-0003-0645-5666
#> year: '2024'
#> doi: 10.32614/CRAN.package.knitr
#> - type: software
#> title: jsonlite
#> abstract: 'jsonlite: A Simple and Robust JSON Parser and Generator for R'
#> notes: Suggests
#> url: https://jeroen.r-universe.dev/jsonlite
#> repository: https://CRAN.R-project.org/package=jsonlite
#> authors:
#> - family-names: Ooms
#> given-names: Jeroen
#> email: jeroenooms@gmail.com
#> orcid: https://orcid.org/0000-0002-4035-0289
#> year: '2024'
#> identifiers:
#> - type: url
#> value: https://arxiv.org/abs/1403.2805
#> doi: 10.32614/CRAN.package.jsonlite
#> - type: software
#> title: rmarkdown
#> abstract: 'rmarkdown: Dynamic Documents for R'
#> notes: Suggests
#> url: https://pkgs.rstudio.com/rmarkdown/
#> repository: https://CRAN.R-project.org/package=rmarkdown
#> authors:
#> - family-names: Allaire
#> given-names: JJ
#> email: jj@posit.co
#> - family-names: Xie
#> given-names: Yihui
#> email: xie@yihui.name
#> orcid: https://orcid.org/0000-0003-0645-5666
#> - family-names: Dervieux
#> given-names: Christophe
#> email: cderv@posit.co
#> orcid: https://orcid.org/0000-0003-4474-2498
#> - family-names: McPherson
#> given-names: Jonathan
#> email: jonathan@posit.co
#> - family-names: Luraschi
#> given-names: Javier
#> - family-names: Ushey
#> given-names: Kevin
#> email: kevin@posit.co
#> - family-names: Atkins
#> given-names: Aron
#> email: aron@posit.co
#> - family-names: Wickham
#> given-names: Hadley
#> email: hadley@posit.co
#> - family-names: Cheng
#> given-names: Joe
#> email: joe@posit.co
#> - family-names: Chang
#> given-names: Winston
#> email: winston@posit.co
#> - family-names: Iannone
#> given-names: Richard
#> email: rich@posit.co
#> orcid: https://orcid.org/0000-0003-3925-190X
#> year: '2024'
#> doi: 10.32614/CRAN.package.rmarkdown
#> - type: software
#> title: testthat
#> abstract: 'testthat: Unit Testing for R'
#> notes: Suggests
#> url: https://testthat.r-lib.org
#> repository: https://CRAN.R-project.org/package=testthat
#> authors:
#> - family-names: Wickham
#> given-names: Hadley
#> email: hadley@posit.co
#> year: '2024'
#> doi: 10.32614/CRAN.package.testthat
#> - type: software
#> title: withr
#> abstract: 'withr: Run Code ''With'' Temporarily Modified Global State'
#> notes: Suggests
#> url: https://withr.r-lib.org
#> repository: https://CRAN.R-project.org/package=withr
#> authors:
#> - family-names: Hester
#> given-names: Jim
#> - family-names: Henry
#> given-names: Lionel
#> email: lionel@posit.co
#> - family-names: Müller
#> given-names: Kirill
#> email: krlmlr+r@mailbox.org
#> - family-names: Ushey
#> given-names: Kevin
#> email: kevinushey@gmail.com
#> - family-names: Wickham
#> given-names: Hadley
#> email: hadley@posit.co
#> - family-names: Chang
#> given-names: Winston
#> year: '2024'
#> doi: 10.32614/CRAN.package.withr
# Check keywords
jsonval$keywords
#> [1] "json" "json-validation" "jsonvalidate" "r"
#> [5] "r-package" "rstats"
# The repo
jsonval$`repository-code`
#> [1] "https://github.com/ropensci/jsonvalidate"
license
This key is extracted from the "License"
field of the
DESCRIPTION
file.
Example
cff_obj <- cff_create("yaml")
cat(cff_obj$license)
#> BSD-3-Clause
pkg <- desc::desc(file.path(find.package("yaml"), "DESCRIPTION"))
cat(pkg$get("License"))
#> BSD_3_clause + file LICENSE
license-url
This key is not extracted from the metadata of the package. See the description on the Guide to CFF schema v1.2.0.
description: The URL of the license text under which the software or dataset is licensed (only for non-standard licenses not included in the SPDX License List).
usage:
message
This key is extracted from the DESCRIPTION
field,
specifically as:
msg <- paste0(
'To cite package "',
"NAME_OF_THE_PACKAGE",
'" in publications use:'
)
Example
cat(cff_create("jsonlite")$message)
#> To cite package "jsonlite" in publications use:
preferred-citation
This key is extracted from the CITATION
file. If several
references are provided, it would select the first citation as the
"preferred-citation"
and the rest of them as references.
Example
cffobj <- cff_create("rmarkdown")
cffobj$`preferred-citation`
#> type: manual
#> title: 'rmarkdown: Dynamic Documents for R'
#> authors:
#> - family-names: Allaire
#> given-names: JJ
#> email: jj@posit.co
#> - family-names: Xie
#> given-names: Yihui
#> email: xie@yihui.name
#> orcid: https://orcid.org/0000-0003-0645-5666
#> - family-names: Dervieux
#> given-names: Christophe
#> email: cderv@posit.co
#> orcid: https://orcid.org/0000-0003-4474-2498
#> - family-names: McPherson
#> given-names: Jonathan
#> email: jonathan@posit.co
#> - family-names: Luraschi
#> given-names: Javier
#> - family-names: Ushey
#> given-names: Kevin
#> email: kevin@posit.co
#> - family-names: Atkins
#> given-names: Aron
#> email: aron@posit.co
#> - family-names: Wickham
#> given-names: Hadley
#> email: hadley@posit.co
#> - family-names: Cheng
#> given-names: Joe
#> email: joe@posit.co
#> - family-names: Chang
#> given-names: Winston
#> email: winston@posit.co
#> - family-names: Iannone
#> given-names: Richard
#> email: rich@posit.co
#> orcid: https://orcid.org/0000-0003-3925-190X
#> year: '2024'
#> notes: R package version 2.29
#> url: https://github.com/rstudio/rmarkdown
citation("rmarkdown")[1]
#> Allaire J, Xie Y, Dervieux C, McPherson J, Luraschi J, Ushey K, Atkins
#> A, Wickham H, Cheng J, Chang W, Iannone R (2024). _rmarkdown: Dynamic
#> Documents for R_. R package version 2.29,
#> <https://github.com/rstudio/rmarkdown>.
#>
#> A BibTeX entry for LaTeX users is
#>
#> @Manual{,
#> title = {rmarkdown: Dynamic Documents for R},
#> author = {JJ Allaire and Yihui Xie and Christophe Dervieux and Jonathan McPherson and Javier Luraschi and Kevin Ushey and Aron Atkins and Hadley Wickham and Joe Cheng and Winston Chang and Richard Iannone},
#> year = {2024},
#> note = {R package version 2.29},
#> url = {https://github.com/rstudio/rmarkdown},
#> }
references
This key is extracted from the CITATION
file if several
references are provided. The first citation is considered as the preferred-citation and the rest of them
as "references"
. It also extracts the package dependencies
and adds those to this fields using citation(auto = TRUE)
on each dependency.
Example
cffobj <- cff_create("rmarkdown")
cffobj$references
#> - type: book
#> title: 'R Markdown: The Definitive Guide'
#> authors:
#> - family-names: Xie
#> given-names: Yihui
#> - family-names: Allaire
#> given-names: J.J.
#> - family-names: Grolemund
#> given-names: Garrett
#> publisher:
#> name: Chapman and Hall/CRC
#> address: Boca Raton, Florida
#> year: '2018'
#> isbn: '9781138359338'
#> url: https://bookdown.org/yihui/rmarkdown
#> - type: book
#> title: R Markdown Cookbook
#> authors:
#> - family-names: Xie
#> given-names: Yihui
#> - family-names: Dervieux
#> given-names: Christophe
#> - family-names: Riederer
#> given-names: Emily
#> publisher:
#> name: Chapman and Hall/CRC
#> address: Boca Raton, Florida
#> year: '2020'
#> isbn: '9780367563837'
#> url: https://bookdown.org/yihui/rmarkdown-cookbook
#> - type: software
#> title: 'R: A Language and Environment for Statistical Computing'
#> notes: Depends
#> url: https://www.R-project.org/
#> authors:
#> - name: R Core Team
#> institution:
#> name: R Foundation for Statistical Computing
#> address: Vienna, Austria
#> year: '2024'
#> version: '>= 3.0'
#> - type: software
#> title: bslib
#> abstract: 'bslib: Custom ''Bootstrap'' ''Sass'' Themes for ''shiny'' and ''rmarkdown'''
#> notes: Imports
#> url: https://rstudio.github.io/bslib/
#> repository: https://CRAN.R-project.org/package=bslib
#> authors:
#> - family-names: Sievert
#> given-names: Carson
#> email: carson@posit.co
#> orcid: https://orcid.org/0000-0002-4958-2844
#> - family-names: Cheng
#> given-names: Joe
#> email: joe@posit.co
#> - family-names: Aden-Buie
#> given-names: Garrick
#> email: garrick@posit.co
#> orcid: https://orcid.org/0000-0002-7111-0077
#> year: '2024'
#> doi: 10.32614/CRAN.package.bslib
#> version: '>= 0.2.5.1'
#> - type: software
#> title: evaluate
#> abstract: 'evaluate: Parsing and Evaluation Tools that Provide More Details than
#> the Default'
#> notes: Imports
#> url: https://evaluate.r-lib.org/
#> repository: https://CRAN.R-project.org/package=evaluate
#> authors:
#> - family-names: Wickham
#> given-names: Hadley
#> email: hadley@posit.co
#> - family-names: Xie
#> given-names: Yihui
#> orcid: https://orcid.org/0000-0003-0645-5666
#> year: '2024'
#> doi: 10.32614/CRAN.package.evaluate
#> version: '>= 0.13'
#> - type: software
#> title: fontawesome
#> abstract: 'fontawesome: Easily Work with ''Font Awesome'' Icons'
#> notes: Imports
#> url: https://rstudio.github.io/fontawesome/
#> repository: https://CRAN.R-project.org/package=fontawesome
#> authors:
#> - family-names: Iannone
#> given-names: Richard
#> email: rich@posit.co
#> orcid: https://orcid.org/0000-0003-3925-190X
#> year: '2024'
#> doi: 10.32614/CRAN.package.fontawesome
#> version: '>= 0.5.0'
#> - type: software
#> title: htmltools
#> abstract: 'htmltools: Tools for HTML'
#> notes: Imports
#> url: https://rstudio.github.io/htmltools/
#> repository: https://CRAN.R-project.org/package=htmltools
#> authors:
#> - family-names: Cheng
#> given-names: Joe
#> email: joe@posit.co
#> - family-names: Sievert
#> given-names: Carson
#> email: carson@posit.co
#> orcid: https://orcid.org/0000-0002-4958-2844
#> - family-names: Schloerke
#> given-names: Barret
#> email: barret@posit.co
#> orcid: https://orcid.org/0000-0001-9986-114X
#> - family-names: Chang
#> given-names: Winston
#> email: winston@posit.co
#> orcid: https://orcid.org/0000-0002-1576-2126
#> - family-names: Xie
#> given-names: Yihui
#> email: yihui@posit.co
#> - family-names: Allen
#> given-names: Jeff
#> year: '2024'
#> doi: 10.32614/CRAN.package.htmltools
#> version: '>= 0.5.1'
#> - type: software
#> title: jquerylib
#> abstract: 'jquerylib: Obtain ''jQuery'' as an HTML Dependency Object'
#> notes: Imports
#> repository: https://CRAN.R-project.org/package=jquerylib
#> authors:
#> - family-names: Sievert
#> given-names: Carson
#> email: carson@rstudio.com
#> orcid: https://orcid.org/0000-0002-4958-2844
#> - family-names: Cheng
#> given-names: Joe
#> email: joe@rstudio.com
#> year: '2024'
#> doi: 10.32614/CRAN.package.jquerylib
#> - type: software
#> title: jsonlite
#> abstract: 'jsonlite: A Simple and Robust JSON Parser and Generator for R'
#> notes: Imports
#> url: https://jeroen.r-universe.dev/jsonlite
#> repository: https://CRAN.R-project.org/package=jsonlite
#> authors:
#> - family-names: Ooms
#> given-names: Jeroen
#> email: jeroenooms@gmail.com
#> orcid: https://orcid.org/0000-0002-4035-0289
#> year: '2024'
#> identifiers:
#> - type: url
#> value: https://arxiv.org/abs/1403.2805
#> doi: 10.32614/CRAN.package.jsonlite
#> - type: software
#> title: knitr
#> abstract: 'knitr: A General-Purpose Package for Dynamic Report Generation in R'
#> notes: Imports
#> url: https://yihui.org/knitr/
#> repository: https://CRAN.R-project.org/package=knitr
#> authors:
#> - family-names: Xie
#> given-names: Yihui
#> email: xie@yihui.name
#> orcid: https://orcid.org/0000-0003-0645-5666
#> year: '2024'
#> doi: 10.32614/CRAN.package.knitr
#> version: '>= 1.43'
#> - type: software
#> title: methods
#> abstract: 'R: A Language and Environment for Statistical Computing'
#> notes: Imports
#> authors:
#> - name: R Core Team
#> institution:
#> name: R Foundation for Statistical Computing
#> address: Vienna, Austria
#> year: '2024'
#> - type: software
#> title: tinytex
#> abstract: 'tinytex: Helper Functions to Install and Maintain TeX Live, and Compile
#> LaTeX Documents'
#> notes: Imports
#> url: https://github.com/rstudio/tinytex
#> repository: https://CRAN.R-project.org/package=tinytex
#> authors:
#> - family-names: Xie
#> given-names: Yihui
#> email: xie@yihui.name
#> orcid: https://orcid.org/0000-0003-0645-5666
#> year: '2024'
#> doi: 10.32614/CRAN.package.tinytex
#> version: '>= 0.31'
#> - type: software
#> title: tools
#> abstract: 'R: A Language and Environment for Statistical Computing'
#> notes: Imports
#> authors:
#> - name: R Core Team
#> institution:
#> name: R Foundation for Statistical Computing
#> address: Vienna, Austria
#> year: '2024'
#> - type: software
#> title: utils
#> abstract: 'R: A Language and Environment for Statistical Computing'
#> notes: Imports
#> authors:
#> - name: R Core Team
#> institution:
#> name: R Foundation for Statistical Computing
#> address: Vienna, Austria
#> year: '2024'
#> - type: software
#> title: xfun
#> abstract: 'xfun: Supporting Functions for Packages Maintained by ''Yihui Xie'''
#> notes: Imports
#> url: https://github.com/yihui/xfun
#> repository: https://CRAN.R-project.org/package=xfun
#> authors:
#> - family-names: Xie
#> given-names: Yihui
#> email: xie@yihui.name
#> orcid: https://orcid.org/0000-0003-0645-5666
#> year: '2024'
#> doi: 10.32614/CRAN.package.xfun
#> version: '>= 0.36'
#> - type: software
#> title: yaml
#> abstract: 'yaml: Methods to Convert R Data to YAML and Back'
#> notes: Imports
#> url: https://github.com/vubiostat/r-yaml/
#> repository: https://CRAN.R-project.org/package=yaml
#> authors:
#> - family-names: Garbett
#> given-names: Shawn P
#> - family-names: Stephens
#> given-names: Jeremy
#> - family-names: Simonov
#> given-names: Kirill
#> - family-names: Xie
#> given-names: Yihui
#> - family-names: Dong
#> given-names: Zhuoer
#> - family-names: Wickham
#> given-names: Hadley
#> - family-names: Horner
#> given-names: Jeffrey
#> - name: reikoch
#> - family-names: Beasley
#> given-names: Will
#> - family-names: O'Connor
#> given-names: Brendan
#> - family-names: Warnes
#> given-names: Gregory R.
#> - family-names: Quinn
#> given-names: Michael
#> - family-names: Kamvar
#> given-names: Zhian N.
#> - family-names: Gao
#> given-names: Charlie
#> year: '2024'
#> doi: 10.32614/CRAN.package.yaml
#> version: '>= 2.1.19'
#> - type: software
#> title: digest
#> abstract: 'digest: Create Compact Hash Digests of R Objects'
#> notes: Suggests
#> url: https://dirk.eddelbuettel.com/code/digest.html
#> repository: https://CRAN.R-project.org/package=digest
#> authors:
#> - family-names: Eddelbuettel
#> given-names: Dirk
#> email: edd@debian.org
#> orcid: https://orcid.org/0000-0001-6419-907X
#> year: '2024'
#> doi: 10.32614/CRAN.package.digest
#> - type: software
#> title: fs
#> abstract: 'fs: Cross-Platform File System Operations Based on ''libuv'''
#> notes: Suggests
#> url: https://fs.r-lib.org
#> repository: https://CRAN.R-project.org/package=fs
#> authors:
#> - family-names: Hester
#> given-names: Jim
#> - family-names: Wickham
#> given-names: Hadley
#> email: hadley@posit.co
#> - family-names: Csárdi
#> given-names: Gábor
#> email: csardi.gabor@gmail.com
#> year: '2024'
#> doi: 10.32614/CRAN.package.fs
#> - type: software
#> title: downlit
#> abstract: 'downlit: Syntax Highlighting and Automatic Linking'
#> notes: Suggests
#> url: https://downlit.r-lib.org/
#> repository: https://CRAN.R-project.org/package=downlit
#> authors:
#> - family-names: Wickham
#> given-names: Hadley
#> email: hadley@posit.co
#> year: '2024'
#> doi: 10.32614/CRAN.package.downlit
#> version: '>= 0.4.0'
#> - type: software
#> title: sass
#> abstract: 'sass: Syntactically Awesome Style Sheets (''Sass'')'
#> notes: Suggests
#> url: https://rstudio.github.io/sass/
#> repository: https://CRAN.R-project.org/package=sass
#> authors:
#> - family-names: Cheng
#> given-names: Joe
#> email: joe@rstudio.com
#> - family-names: Mastny
#> given-names: Timothy
#> email: tim.mastny@gmail.com
#> - family-names: Iannone
#> given-names: Richard
#> email: rich@rstudio.com
#> orcid: https://orcid.org/0000-0003-3925-190X
#> - family-names: Schloerke
#> given-names: Barret
#> email: barret@rstudio.com
#> orcid: https://orcid.org/0000-0001-9986-114X
#> - family-names: Sievert
#> given-names: Carson
#> email: carson@rstudio.com
#> orcid: https://orcid.org/0000-0002-4958-2844
#> year: '2024'
#> doi: 10.32614/CRAN.package.sass
#> version: '>= 0.4.0'
#> - type: software
#> title: shiny
#> abstract: 'shiny: Web Application Framework for R'
#> notes: Suggests
#> url: https://shiny.posit.co/
#> repository: https://CRAN.R-project.org/package=shiny
#> authors:
#> - family-names: Chang
#> given-names: Winston
#> email: winston@posit.co
#> orcid: https://orcid.org/0000-0002-1576-2126
#> - family-names: Cheng
#> given-names: Joe
#> email: joe@posit.co
#> - family-names: Allaire
#> given-names: JJ
#> email: jj@posit.co
#> - family-names: Sievert
#> given-names: Carson
#> email: carson@posit.co
#> orcid: https://orcid.org/0000-0002-4958-2844
#> - family-names: Schloerke
#> given-names: Barret
#> email: barret@posit.co
#> orcid: https://orcid.org/0000-0001-9986-114X
#> - family-names: Xie
#> given-names: Yihui
#> email: yihui@posit.co
#> - family-names: Allen
#> given-names: Jeff
#> - family-names: McPherson
#> given-names: Jonathan
#> email: jonathan@posit.co
#> - family-names: Dipert
#> given-names: Alan
#> - family-names: Borges
#> given-names: Barbara
#> year: '2024'
#> doi: 10.32614/CRAN.package.shiny
#> version: '>= 1.6.0'
#> - type: software
#> title: testthat
#> abstract: 'testthat: Unit Testing for R'
#> notes: Suggests
#> url: https://testthat.r-lib.org
#> repository: https://CRAN.R-project.org/package=testthat
#> authors:
#> - family-names: Wickham
#> given-names: Hadley
#> email: hadley@posit.co
#> year: '2024'
#> doi: 10.32614/CRAN.package.testthat
#> version: '>= 3.0.3'
#> - type: software
#> title: tibble
#> abstract: 'tibble: Simple Data Frames'
#> notes: Suggests
#> url: https://tibble.tidyverse.org/
#> repository: https://CRAN.R-project.org/package=tibble
#> authors:
#> - family-names: Müller
#> given-names: Kirill
#> email: kirill@cynkra.com
#> orcid: https://orcid.org/0000-0002-1416-3412
#> - family-names: Wickham
#> given-names: Hadley
#> email: hadley@rstudio.com
#> year: '2024'
#> doi: 10.32614/CRAN.package.tibble
#> - type: software
#> title: vctrs
#> abstract: 'vctrs: Vector Helpers'
#> notes: Suggests
#> url: https://vctrs.r-lib.org/
#> repository: https://CRAN.R-project.org/package=vctrs
#> authors:
#> - family-names: Wickham
#> given-names: Hadley
#> email: hadley@posit.co
#> - family-names: Henry
#> given-names: Lionel
#> email: lionel@posit.co
#> - family-names: Vaughan
#> given-names: Davis
#> email: davis@posit.co
#> year: '2024'
#> doi: 10.32614/CRAN.package.vctrs
#> - type: software
#> title: withr
#> abstract: 'withr: Run Code ''With'' Temporarily Modified Global State'
#> notes: Suggests
#> url: https://withr.r-lib.org
#> repository: https://CRAN.R-project.org/package=withr
#> authors:
#> - family-names: Hester
#> given-names: Jim
#> - family-names: Henry
#> given-names: Lionel
#> email: lionel@posit.co
#> - family-names: Müller
#> given-names: Kirill
#> email: krlmlr+r@mailbox.org
#> - family-names: Ushey
#> given-names: Kevin
#> email: kevinushey@gmail.com
#> - family-names: Wickham
#> given-names: Hadley
#> email: hadley@posit.co
#> - family-names: Chang
#> given-names: Winston
#> year: '2024'
#> doi: 10.32614/CRAN.package.withr
#> version: '>= 2.4.2'
#> - type: software
#> title: xml2
#> abstract: 'xml2: Parse XML'
#> notes: Suggests
#> url: https://xml2.r-lib.org/
#> repository: https://CRAN.R-project.org/package=xml2
#> authors:
#> - family-names: Wickham
#> given-names: Hadley
#> email: hadley@posit.co
#> - family-names: Hester
#> given-names: Jim
#> - family-names: Ooms
#> given-names: Jeroen
#> year: '2024'
#> doi: 10.32614/CRAN.package.xml2
citation("rmarkdown")[-1]
#> Xie Y, Allaire J, Grolemund G (2018). _R Markdown: The Definitive
#> Guide_. Chapman and Hall/CRC, Boca Raton, Florida. ISBN 9781138359338,
#> <https://bookdown.org/yihui/rmarkdown>.
#>
#> Xie Y, Dervieux C, Riederer E (2020). _R Markdown Cookbook_. Chapman
#> and Hall/CRC, Boca Raton, Florida. ISBN 9780367563837,
#> <https://bookdown.org/yihui/rmarkdown-cookbook>.
#>
#> To see these entries in BibTeX format, use 'print(<citation>,
#> bibtex=TRUE)', 'toBibtex(.)', or set
#> 'options(citation.bibtex.max=999)'.
repository
This key is extracted from the "Repository"
field of the
DESCRIPTION
file. Usually, this field is auto-populated
when a package is hosted on a repo (like CRAN or the r-universe). For packages
without this field on the DESCRIPTION
(that is the typical
case for an in-development package), cffr would try to
search the package on any of the default repositories specified on
options("repos")
.
In the case of Bioconductor
packages, those are identified if a “biocViews”
is present on the DESCRIPTION
file.
If cffr detects that the package is available on CRAN, it would return the canonical url form of the package (i.e. https://CRAN.R-project.org/package=jsonlite).
Example
# Installed package
inst <- cff_create("jsonlite")
cat(inst$repository)
#> https://CRAN.R-project.org/package=jsonlite
# Demo file downloaded from the r-universe
runiv <- system.file("examples/DESCRIPTION_r_universe", package = "cffr")
runiv_cff <- cff_create(runiv)
cat(runiv_cff$repository)
#> https://ropensci.r-universe.dev
desc::desc(runiv)$get("Repository")
#> Repository
#> "https://ropensci.r-universe.dev"
# For in development package
norepo <- system.file("examples/DESCRIPTION_basic", package = "cffr")
# No repo
norepo_cff <- cff_create(norepo)
cat(norepo_cff[["repository"]])
# Change the name to a known package on CRAN: ggplot2
tmp <- tempfile("DESCRIPTION")
file.copy(norepo, tmp)
#> [1] TRUE
# Change name
desc::desc_set("Package", "ggplot2", file = tmp)
#> Type: Package
#> Package: ggplot2
#> Title: A Basic Description
#> Version: 0.1.6
#> Authors@R (parsed):
#> * Marc Basic <marcbasic@gmail.com> [aut, cre, cph]
#> Description: A very basic description. Should parse without
#> problems.
#> License: GPL-3
#> URL: https://github.com/basic/package,
#> https://basic.github.io/package
#> BugReports: https://github.com/basic/package/issues
#> Encoding: UTF-8
#> LazyData: true
#> RoxygenNote: 6.0.1.9000
cat(cff_create(tmp)[["repository"]])
#> https://CRAN.R-project.org/package=ggplot2
repository-artifact
This key is not extracted from the metadata of the package. See the description on the Guide to CFF schema v1.2.0.
description: The URL of the work in a build artifact/binary repository (when the work is software).
usage:
repository-code
This key is extracted from the "BugReports"
or
"URL"
fields on the DESCRIPTION
file.
cffr tries to identify the url of the source on the
following repositories:
Example
# Installed package on GitHub
cff_create("jsonlite")$`repository-code`
#> [1] "https://github.com/jeroen/jsonlite"
# GitLab
gitlab <- system.file("examples/DESCRIPTION_gitlab", package = "cffr")
cat(cff_create(gitlab)$`repository-code`)
#> https://gitlab.com/ninijay/methoden
# Check
desc::desc(gitlab)
#> Type: Package
#> Package: codemetar
#> Title: Generate 'CodeMeta' Metadata for R Packages
#> Version: 0.1.6
#> Authors@R (parsed):
#> * Carl Boettiger <cboettig@gmail.com> [aut, cre, cph] (<https://orcid.org/0000-0002-1642-628X>)
#> * Anna Krystalli [rev, ctb] (<https://orcid.org/0000-0002-2378-4915>)
#> * Toph Allen [rev] (<https://orcid.org/0000-0003-4580-091X>)
#> * Maëlle Salmon [ctb, aut] (<https://orcid.org/0000-0002-2815-0399>)
#> * rOpenSci [fnd] (https://ropensci.org/)
#> * Katrin Leinweber [ctb]
#> * Noam Ross [ctb]
#> * Arfon Smith [ctb]
#> Description: The 'Codemeta' Project defines a 'JSON-LD' format for
#> describing software metadata, as detailed at
#> <https://codemeta.github.io>. This package provides utilities to
#> generate, parse, and modify 'codemeta.json' files automatically for R
#> packages, as well as tools and examples for working with
#> 'codemeta.json' 'JSON-LD' more generally.
#> License: GPL-3
#> URL: https://gitlab.com/ninijay/methoden,
#> https://ropensci.github.io/codemetar
#> BugReports: https://gitlab.com/ninijay/methoden/-/issues
#> Depends:
#> R (>= 3.0.0)
#> Imports:
#> crul,
#> desc,
#> devtools,
#> gh,
#> git2r,
#> jsonld,
#> jsonlite (>= 1.3),
#> memoise,
#> methods,
#> purrr,
#> readr,
#> sessioninfo,
#> stats,
#> stringi,
#> stringr,
#> tibble,
#> usethis,
#> whisker
#> Suggests:
#> covr,
#> dplyr (>= 0.7.0),
#> jsonvalidate,
#> knitr,
#> magrittr,
#> printr,
#> rmarkdown,
#> testthat,
#> xml2
#> VignetteBuilder:
#> knitr
#> Encoding: UTF-8
#> LazyData: true
#> RoxygenNote: 6.0.1.9000
#> X-schema.org-isPartOf: https://ropensci.org
#> X-schema.org-keywords: metadata, codemeta, ropensci, citation,
#> credit, linked-data
title
This key is extracted from the "Description"
field of
the DESCRIPTION
file.
title <- paste0(
"NAME_OF_THE_PACKAGE",
": ",
"TITLE_OF_THE_PACKAGE"
)
Example
# Installed package
cat(cff_create("testthat")$title)
#> testthat: Unit Testing for R
type
Fixed value equal to "software"
. The other possible
value is "dataset"
. See the description on the Guide
to CFF schema v1.2.0.
url
This key is extracted from the "BugReports"
or
"URL"
fields on the DESCRIPTION
file. It
corresponds to the first url that is different to repository-code.
Example
# Many urls
manyurls <- system.file("examples/DESCRIPTION_many_urls", package = "cffr")
cat(cff_create(manyurls)$url)
#> https://test.github.io/package/
# Check
desc::desc(manyurls)
#> Type: Package
#> Package: manyurls
#> Title: A lot of urls
#> Version: 0.1.6
#> Authors@R (parsed):
#> * Marc Basic <marcbasic@gmail.com> [aut, cre, cph]
#> Description: This package has many urls. Specifically, 1 Bug
#> Reports and 6 URLs. Expected is to have 1 repository-code, 1 url and 3
#> URLs, since there is 1 duplicate and 1 invalid url.
#> License: GPL-3
#> URL: https://github.com/test/package,
#> https://test.github.io/package/,
#> https://r-forge.r-project.org/projects/test/, http://google.ru,
#> https://gitlab.com/r-packages/behaviorchange, this.is.not.an.url
#> BugReports: https://github.com/test/package/issues
#> Encoding: UTF-8
version
This key is extracted from the "Version"
field on the
DESCRIPTION
file.
# Should be (>= 3.0.0)
cat(cff_create("testthat")$version)
#> 3.2.1.1