richfitz / drat.builder

Build tools for a drat
Other
17 stars 2 forks source link

drat.builder

Build Status

Docker Build Status

The idea here is to make it extremely easy to keep a drat repository up to date.

Suppose you have a drat that tracks a number of upstream github repos (here the repos are the package repositories and drat repository will be the drat itself). Say, reomoji, rfiglet and cowsay

In the root of an existing drat repository or in a new empty directory, make a file called packages.txt containing:

richfitz/remoji
richfitz/rfiglet
sckott/cowsay

Then run

drat.builder::build()

which will download the most recent sources for those packages, build them (source versions only, but will build vignettes) and add them to drat following the best practice commit log so that each log entry reads like

<package_name> <version> <sha> <url>

e.g.,

rfiglet 0.1.0 4b65d19 https://github.com/richfitz/rfiglet.git

Command line use

Run

drat.builder::install_script("~/bin")

and then a shell script drat.builder is available. It takes all the arguments that drat.builder::build takes, but is useful to run from the command line. See

drat.builder --help

for help.

Options

drat.builder takes options

packages.txt

The file packages.txt roughly follows the convention started by devtools;

The @ref syntax will be useful to anchor drat builds to particular versions, rather than constantly reading off HEAD of the upstream repo. This will be easy when the upstream repo uses github releases and semantic versioning as you can write:

richfitz/rfiglet@v0.1.0

Avoiding rebuilds

To avoid polluting the drat repo, drat.builder will try to avoid rebuilding. To do this it keeps a file packages.json with version numbers and sha values of the installed packages.

TODO