The output file of pkglite::pack() uses a standard file
format to allow the storage, exchange, and parsing of the packaged
assets. The specification for this file is detailed below.
Unless specified, the output file is automatically named.
pkg1 is packed into
pkg1.txt.pkg1, pkg2, …
are packed into pkglite.txt.The file extension is .txt so that one can recognize,
open, and inspect it directly using regular text editors.
The overall goal here is to make the file format unambiguous,
human-friendly, and machine-readable. For pkglite.txt, we
follow the DCF
(Debian Control File) format, used by Debian, R, and RStudio IDE.
The minimalist, time-tested format allows us to save key-value data in
plain text that humans can easily read and write. The format is also
extendable to include more information about the assets being
packed.
A pkglite.txt is structured following these rules:
Each block has at least four key-value pairs called fields. For example:
Package: pkglite
File: R/pkglite-package.R
Format: text
Content:
#' @keywords internal
"_PACKAGE"
The keys and values in these fields are separated by a colon and a
whitespace except for Content, whose value part starts in a
new line.
Package
R package name. Since one pkglite.txt might contain
files from multiple packages, this field is used to declare the package
the file is under explicitly.
This design implies that each pkglite.txt can only store
multiple R packages with unique names.