pkglite
offers a solution for converting R package source code to a compact, text-based representation and restore the source package structure from the representation. There are three specific aims:
To achieve these goals, we developed a pipe-friendly workflow, the concept of file specifications and file collections, and a format specification for the output file pkglite.txt
. These designs allow us to leave a clear and skimmable trace in the code when generating such compact representations, thus improves reproducibility.
To demonstrate the basic usage of pkglite, we will show how to pack and unpack one or multiple R packages.
First, locate the input package directory and the output file:
Use the following chain of calls to pack a default set of files in the R package under directory pkg
into the file txt
:
The collate()
function evaluates one or more file specifications to generate a file collection. They fully determine the scope of the files to pack here. For details, check vignette("filespec", package = "pkglite")
.
Check the first lines of the output file:
# Generated by pkglite: do not edit by hand
# Use pkglite::unpack() to restore the packages
Package: pkg1
File: DESCRIPTION
Format: text
Content:
Package: pkg1
Type: Package
Title: Example Package One
Version: 0.1.0
Check the number of lines the output file:
[1] 1081
To unpack (restore) the file structures from the text file, use unpack()
:
This will create a directory named after the R package under the output directory:
[1] "DESCRIPTION" "NAMESPACE" "NEWS.md" "R" "README.md"
[6] "data" "man" "vignettes"
To install the packages after unpacking them, use unpack(..., install = TRUE)
.
pack()
accepts one or more input directories. Therefore, one can pack multiple R packages (file collections) into one file at once:
pkg1 <- system.file("examples/pkg1", package = "pkglite")
pkg2 <- system.file("examples/pkg2", package = "pkglite")
fc1 <- pkg1 %>% collate(file_default())
fc2 <- pkg2 %>% collate(file_default())
pack(fc1, fc2, output = txt, quiet = TRUE)
Since the two example packages have almost identical content, the number of lines in the text file is doubled here (three header lines excluded):
[1] 2159
Use the same call to unpack (and install) multiple R packages from the text file:
[1] "DESCRIPTION" "NAMESPACE" "NEWS.md" "R" "README.md"
[6] "data" "man" "vignettes"
[1] "DESCRIPTION" "NAMESPACE" "NEWS.md" "R" "README.md"
[6] "data" "man" "vignettes"
The file format specification for pkglite.txt
is described in vignette("format", package = "pkglite")
.