Package Workflows
DESCRIPTION Fields
Package Metadata
R packages describe themselves with metadata fields. Keeping required fields explicit makes package checks easier to reason about.
Program
Play the script to change the patch version and see the package metadata summary update.
description_fields.R
Replay: real traced execution (multi-file project)
fields <- c(Package = "demoTools", Version = "1.0.0", License = "MIT")
patch <- 0
fields["Version"] <- paste0("1.0.", patch)
required <- c("Package", "Version", "License")
complete <- all(required %in% names(fields))
label <- paste(fields[["Package"]], fields[["Version"]], complete, sep = ":")
cat(label, "\n", sep = "")
fields <- c(Package = "demoTools", Version = "1.0.0", License = "MIT")
patch <- 1
fields["Version"] <- paste0("1.0.", patch)
required <- c("Package", "Version", "License")
complete <- all(required %in% names(fields))
label <- paste(fields[["Package"]], fields[["Version"]], complete, sep = ":")
cat(label, "\n", sep = "")
fields <- c(Package = "demoTools", Version = "1.0.0", License = "MIT")
patch <- 2
fields["Version"] <- paste0("1.0.", patch)
required <- c("Package", "Version", "License")
complete <- all(required %in% names(fields))
label <- paste(fields[["Package"]], fields[["Version"]], complete, sep = ":")
cat(label, "\n", sep = "")
fields ← Package=demoTools, Version=1.0.0, License=MIT
1fields <- c(Package = "demoTools", Version = "1.0.0", License = "MIT")2patch <- 0values this stepPackage=demoTools, Version=1.0.0, License=MITfieldspatch ← 0
1fields <- c(Package = "demoTools", Version = "1.0.0", License = "MIT")2patch <- 03fields["Version"] <- paste0("1.0.", patch)values this step0patchfields[Version] ← 1.0.0
2patch <- 03fields["Version"] <- paste0("1.0.", patch)4required <- c("Package", "Version", "License")values this step1.0.0fields[Version]0patchrequired ← Package, Version, License
3fields["Version"] <- paste0("1.0.", patch)4required <- c("Package", "Version", "License")5complete <- all(required %in% names(fields))values this stepPackage, Version, Licenserequiredcomplete ← TRUE
4required <- c("Package", "Version", "License")5complete <- all(required %in% names(fields))6label <- paste(fields[["Package"]], fields[["Version"]], complete, sep = ":")values this stepTRUEcomplete3 fieldsrequiredPackage, Version, Licensenames(fields)label ← demoTools:1.0.0:TRUE
5complete <- all(required %in% names(fields))6label <- paste(fields[["Package"]], fields[["Version"]], complete, sep = ":")7cat(label, "\n", sep = "")values this stepdemoTools:1.0.0:TRUElabeldemoTools 1.0.0fieldsTRUEcompletecat(label, " ", sep = "")
6label <- paste(fields[["Package"]], fields[["Version"]], complete, sep = ":")7cat(label, "\n", sep = "")outputdemoTools:1.0.0:TRUEvalues this stepdemoTools:1.0.0:TRUElabel
fields ← Package=demoTools, Version=1.0.0, License=MIT
1fields <- c(Package = "demoTools", Version = "1.0.0", License = "MIT")2patch <- 1values this stepPackage=demoTools, Version=1.0.0, License=MITfieldspatch ← 1
1fields <- c(Package = "demoTools", Version = "1.0.0", License = "MIT")2patch <- 13fields["Version"] <- paste0("1.0.", patch)values this step1patchfields[Version] ← 1.0.1
2patch <- 13fields["Version"] <- paste0("1.0.", patch)4required <- c("Package", "Version", "License")values this step1.0.1fields[Version]1patchrequired ← Package, Version, License
3fields["Version"] <- paste0("1.0.", patch)4required <- c("Package", "Version", "License")5complete <- all(required %in% names(fields))values this stepPackage, Version, Licenserequiredcomplete ← TRUE
4required <- c("Package", "Version", "License")5complete <- all(required %in% names(fields))6label <- paste(fields[["Package"]], fields[["Version"]], complete, sep = ":")values this stepTRUEcomplete3 fieldsrequiredPackage, Version, Licensenames(fields)label ← demoTools:1.0.1:TRUE
5complete <- all(required %in% names(fields))6label <- paste(fields[["Package"]], fields[["Version"]], complete, sep = ":")7cat(label, "\n", sep = "")values this stepdemoTools:1.0.1:TRUElabeldemoTools 1.0.1fieldsTRUEcompletecat(label, " ", sep = "")
6label <- paste(fields[["Package"]], fields[["Version"]], complete, sep = ":")7cat(label, "\n", sep = "")outputdemoTools:1.0.1:TRUEvalues this stepdemoTools:1.0.1:TRUElabel
fields ← Package=demoTools, Version=1.0.0, License=MIT
1fields <- c(Package = "demoTools", Version = "1.0.0", License = "MIT")2patch <- 2values this stepPackage=demoTools, Version=1.0.0, License=MITfieldspatch ← 2
1fields <- c(Package = "demoTools", Version = "1.0.0", License = "MIT")2patch <- 23fields["Version"] <- paste0("1.0.", patch)values this step2patchfields[Version] ← 1.0.2
2patch <- 23fields["Version"] <- paste0("1.0.", patch)4required <- c("Package", "Version", "License")values this step1.0.2fields[Version]2patchrequired ← Package, Version, License
3fields["Version"] <- paste0("1.0.", patch)4required <- c("Package", "Version", "License")5complete <- all(required %in% names(fields))values this stepPackage, Version, Licenserequiredcomplete ← TRUE
4required <- c("Package", "Version", "License")5complete <- all(required %in% names(fields))6label <- paste(fields[["Package"]], fields[["Version"]], complete, sep = ":")values this stepTRUEcomplete3 fieldsrequiredPackage, Version, Licensenames(fields)label ← demoTools:1.0.2:TRUE
5complete <- all(required %in% names(fields))6label <- paste(fields[["Package"]], fields[["Version"]], complete, sep = ":")7cat(label, "\n", sep = "")values this stepdemoTools:1.0.2:TRUElabeldemoTools 1.0.2fieldsTRUEcompletecat(label, " ", sep = "")
6label <- paste(fields[["Package"]], fields[["Version"]], complete, sep = ":")7cat(label, "\n", sep = "")outputdemoTools:1.0.2:TRUEvalues this stepdemoTools:1.0.2:TRUElabel
DESCRIPTION
`Package`, `Version`, and `License` are common package metadata fields.
names
`names(fields)` exposes the metadata field names.
all
`all(required %in% names(fields))` checks whether every required name is present.