pdulvp.fr

buildCommand for 'prel build', releaseBuildCommand for the release has been fixed.

See more details at : https://github.com/pdulvp/prel/issues/10

  • buildCommand is the project's ordinary build and prel build runs it;

releaseBuildCommand stays the release's own, run by prel release

  • prel build --release runs the release build without releasing anything,

which is how it gets tried before a release depends on it

  • neither key stands in for the other: an unset key means there is no build to

run, and the output names the key that ran rather than just saying "build"

  • 0.2.3 called the release build buildCommand, so a config written then is

told where a release would otherwise build nothing - on the build: line of
the release plan and under an artifact pattern that matched no file - rather
than warned about in prel config, where both keys are now valid

buildCommand for 'prel build', releaseBuildCommand for 'prel release'

<sub>2026-10-22-2141-two-build-commands.md — 2026-10-22 22:05</sub>

Goal

There is one build command in prel.config.json and two things to build. The
ordinary build of a project - the one run while working on it - is not the
build that makes the files a release carries, and prel build running the
release build left a project with no way to say what its ordinary build is.

Two keys, each read by the command it is named for:

{
  "buildCommand": "make",
  "releaseBuildCommand": "packaging/build-deb.sh ${version}"
}

prel build runs buildCommand. prel release runs releaseBuildCommand.
prel build --release runs releaseBuildCommand without releasing anything,
which is what prel build was added for: trying the release build before a
release depends on it.

Decisions

  • No fallback either way. Each command reads its own key, and a key not set

means there is no build to run - said plainly with the key to set, exit 0,
as prel build says it today. A release never reaches for buildCommand
and prel build never reaches for releaseBuildCommand unless --release
asks it to.

  • buildCommand becomes a live key again rather than staying a renamed one:

_PREL_CONFIG_RENAMED_OLD/NEW and the warning over them go, since the name
is read once more - for a different build. The prel.buildCommand git key
keeps pointing at releaseBuildCommand, which is the build it configured.

  • 0.2.3 shipped buildCommand as the release build, so a config written then

now names the ordinary build and a release would build nothing. Not a config
warning - buildCommand with no releaseBuildCommand is a perfectly good
config for a project that releases a tag and no files - but said where it
changes what happens: the release plan prints `build: nothing,
releaseBuildCommand not set, and prel release artifacts` names the key
under a pattern that matched nothing.

  • --release rather than a second command: everything else about prel build
  • the version, the tag, the directory, the artifacts report, -n - is the

same, and only the key read differs.

  • The header lines name the key that ran, in the %-21s column prel config

uses, so buildCommand: and releaseBuildCommand: both fit and the output
says which of the two was run.

  • _prel_build_eval stays the single implementation of the contract (the

repository root, $version, $tag), used by both modes and by the build
step of prel release.

Steps

  • [x] scripts/config.sh: buildCommand in _PREL_CONFIG_KEYS before

releaseBuildCommand, the renamed-key machinery and its warning out,
the config usage key list and sample

  • [x] scripts/build.sh: _prel_build_command reading buildCommand,

--release selecting _rel_build_command, the key-named header lines,
the messages that name the key, and the usage text

  • [x] scripts/release.sh: the build: nothing, releaseBuildCommand not set

plan line where buildCommand is set instead, the same hint in
_rel_check_artifacts, and the release usage text on the two keys

  • [x] README.md: the configuring table and sample, prel config output, the

prel build section on both modes, the release-artifacts section, the
.deb section (prel build --release in a clone), the configuration-files
list, and the 0.2.3 note on what buildCommand means now

  • [x] test: prel build with no buildCommand, with one, -n, an explicit

version, a bad version; prel build --release in this repository
(builds the .deb), --release -n, and with no releaseBuildCommand

  • [x] test: prel config on both keys and on a config setting only

buildCommand; prel release 0.2.4 -n with and without
releaseBuildCommand; prel release artifacts; build.sh and
release.sh run directly

  • [x] mark complete; write docs/plans/sumup.md per the plan-summary skill;

archive this file

<sub>Filed by prel from the completed plans at commit time.</sub>