Setup runner cli
Version updated for https://github.com/kjanat/runner to version v0.17.0.
- This action is used across all versions by 0 repositories.
Action Type
This is a Node action using Node version 24.
Go to the GitHub Marketplace to find the latest changes.
What’s Changed
Added
- FQN task syntax: the
root:<source>#<name>identity thatdoctor --json/why --jsonprint for a task is now runnable —run 'root:package.json#deno:importsmap'(theroot:scope prefix is optional) dispatches that exact task. Every source label of every schema version round-trips, including v3’scargo-alias, which previously named a task no syntax could invoke. runner whyinterprets its argument exactly likerundoes — qualified syntax (why deno:lint), FQN (why root:package.json#build), and the colon-name fallback below — so it explains the very dispatchrunwould perform instead of reporting “no candidates” for tokensrunaccepts.- Makefile descriptions from the inline self-documenting form
(
build: deps ## Build the project), the idiom##help targets are built on. The preceding-line## docform still wins when both are present.
Changed
- A qualified or FQN miss (
deno:nope,package.json#nope) is now a hard error in every path. Previously an FQN token fell through to the PM-exec fallback, where bunx/npx treated it as a package spec and resolved it off the network — a typo could hang on registry resolution or download an arbitrary package. Bare unmatched names still fall through;user/repo#refpackage specs still work. - Single runs and chain pre-validation (
run -p/-s) report a qualified miss with one unified message, and miss errors add a note when a source’s task list failed to load (a brokenpackage.jsonused to produce only a misleadingdid you mean …?hint). - A CLI chain-failure flag now beats the opposite polarity from a lower
layer:
run -s a b -kwith[chain] kill_on_fail = trueinrunner.tomlkeeps going instead of aborting with a cross-source conflict — the config polarity had no command-line escape hatch. Same-source conflicts (-k -K, both env vars, both config keys) still error. - Boolean
RUNNER_*env vars (RUNNER_QUIET,RUNNER_EXPLAIN,RUNNER_NO_WARNINGS,RUNNER_KEEP_GOING,RUNNER_KILL_ON_FAIL) warn and are ignored when set to an unrecognized token.RUNNER_KEEP_GOING=flase(typo’d “false”) used to silently read as truthy — the opposite of the intent. Recognized, case-insensitive:1/true/yes/onand0/false/no/off.
Fixed
package.jsonscripts whose names start with a source label (deno:importsmap,cargo:check, …) are reachable by their bare name again. The qualifier parser claimed the prefix (deno→ deno.json), the qualified lookup missed, and dispatch fell through to PM-exec; an exact full-name match now wins on a qualified miss. A genuinedeno.jsontask still outranks the colon-named script when both exist.- Streaming parallel chains (
run -p, the default outside GitHub Actions) no longer hang when a task exits but leaves a backgrounded descendant holding the inherited stdout/stderr pipe (some-daemon & exit 0). Pipe readers are now drained with the same bounded grace the grouped path already used, instead of an unbounded join that blocked until the descendant died. - A
try_waiterror while polling a parallel chain no longer orphans the already-spawned sibling processes and their reader threads; both parallel paths route the error through the same kill-and-reap cleanup as a spawn failure. - A malformed
devEnginesvalue inpackage.json(e.g. a Corepack-style string where the spec wants an object) no longer erases every script and thepackageManagersignal behind a falsenot valid JSONwarning. The field degrades to “absent”; the rest of the manifest parses normally. - The Taskfile fallback parser (used when the
taskbinary is absent) is a real YAML parse now: quoted and namespaced task names ("build:prod":) are no longer silently dropped, and a Taskfile that fails to parse surfaces afailed to read taskswarning instead of silently yielding zero tasks. - A Makefile target whose header appears twice (legal in make) is listed once instead of twice; a later documented duplicate still contributes the description when the first occurrence had none.
Full Changelog: https://github.com/kjanat/runner/compare/v0.16.1...v0.17.0