Skip to main content
Version: Next

GitHub Action

The poof GitHub Action lets you bootstrap poof on any GitHub-hosted (or self-hosted) runner and optionally install a list of pre-built binaries from GitHub Releases, all in a single workflow step.

The action is available in the GitHub Actions Marketplace.

Usage​

Setup only​

Add poof to the runner PATH without installing any packages:

- name: Setup poof
uses: pirafrank/poof@main

Setup and install packages​

Bootstrap poof and install one or more tools at once:

- name: Setup poof and install packages
uses: pirafrank/poof@main
with:
packages: |
pirafrank/vault-conductor
ms-jpq/[email protected]

Pin a specific poof version​

- name: Setup poof and install packages
uses: pirafrank/poof@main
with:
version: v0.6.0
packages: pirafrank/vault-conductor
token: ${{ secrets.GITHUB_TOKEN }}

Inputs​

InputDescriptionDefault
packagesNewline or comma-separated list of USERNAME/REPO (or USERNAME/REPO@TAG) entries to install. Leave empty to skip package installation.-
versionVersion of poof to bootstrap (e.g. v0.6.0). Use latest to always install the most recent release (recommended).latest
tokenGitHub token used for API requests inside poof to avoid rate limiting.${{ github.token }}

Package format​

Packages are specified as USERNAME/REPO GitHub slugs, optionally pinned to a specific release tag with @TAG:

pirafrank/vault-conductor         # latest release
pirafrank/[email protected] # specific tag
ms-jpq/sad

Multiple packages can be separated by newlines or commas.

info

When writing @TAGNAME use the actual tag name, not the release name!

You can find it in the GitHub release page, on the left side, under the release date.

Rate limiting​

poof makes GitHub API calls to resolve releases. Without a token these calls are unauthenticated and subject to GitHub's rate limit (60 requests/hour per IP). The action defaults to the workflow's built-in GITHUB_TOKEN, which raises the limit to 5,000 requests/hour. You can supply a different token via the token input.

How it works​

  1. Downloads and places poof in $HOME/.local/bin, then adds that directory to $GITHUB_PATH so subsequent steps can call poof directly.
  2. Adds poof's bin directory (where installed tools land) to $GITHUB_PATH as well, so installed binaries are immediately available to all later steps.
  3. If packages is set, iterates over each entry and runs poof install USER/REPO [--tag TAG].

The action is idempotent: if poof is already present in the install directory it skips re-downloading it.

Supported platforms​

OSArchitecture
Linux (glibc)x86_64, aarch64, armv7, i686
Linux (musl)x86_64, aarch64, armv7, i686
macOSx86_64 (Intel), aarch64 (Apple Silicon)