Zesk Build release v0.41.0
Copyright © 2026 Market Acumen, Inc.
- Previous version: v0.40.3
validate updated in code everywhere. Any functions which look like usageArgumentFoo are now deprecated.
Sped up the template documentation which in general speeds up the build process, hopefully. New phase of build now
includes building the help cache, now stored in ./bin/build/documentation/functionName.sh for function settings.
Also test finding and searching is cached and faster in a test file located at ./test/tests.index which is generated as part of the commit.
Made an effort this release to rename deprecated functions whose prefixes (e.g. insideDocker -> dockerInside) do not
match their related module. So a lot has changed used deprecated.sh to upgrade your scripts.
testTools is now deprecated and all test and assertions functions are dynamically loaded as needed - so they are now
universally available.
isExecutable now uses which as it was returning true for all isCallable and no easy way to disambiguate.
testSuite output formats
testSuite now outputs three formats: junit, tap, and a statistics output showing test timings (--stats), all are written using hooks.
bashDebugInterruptFile sample output
bashDebugInterruptFile now outputs an error to stderr so it's clear that it's working. Errors look like:
user@host ~/dev/build > CI=1 bin/tools.sh buildDocumentationExtractionUpdate --quick
#1/631 - alignLeft 0.273 seconds
#2/631 - alignRight 0.263 seconds
^C
+=================+=====+
| DEBUG INTERRUPT | 130 |
+=================+=====+
Validate changes
validateis the newusageArgumentand is in use universally
Deprecations and Renamed Functions (old functions are deprecated)
- Removed
BUILD_COLORS_MODEand addedconsoleConfigureDecorateas a substitute (Hey, look at when it was added!) markdownFormatListshould output fewer stray blank list entriesalignRight->textAlignRightalignLeft->textAlignLeftcachedShaPipe->shaPipe --cache cacheDirectorydebugOpenFiles->filesOpenStatusfindUncaughtAssertions->bashFindUncaughtAssertionshasColors->consoleHasColorshasConsoleAnimation->consoleHasAnimationinsideDocker->dockerInsideisAbsolutePath->pathIsAbsolutemakeShellFilesExecutable->bashMakeExecutablebeginsWithwas removed, usestringBegins(it's the same function)echoBar->consoleLineyesterdayDate->dateYesterdaytodayDate->dateTodaytomorrowDate->dateTomorrowextensionLists->fileExtensionListswhichHook->hookFindwhichExists->executableExistsrepeat->textRepeat** NOT ADDED TO DEPRECATED PROCESSING DUE TO WORD USAGE AS COMMON **lineFill->consoleHeadingLineboxedHeading->consoleHeadingBoxedenvironmentAddFile->buildEnvironmentAddlineFill->consoleHeadingLineplainLength->consolePlainLengthmapReturn->returnMapmaximumFieldLength->fileFieldMaximummaximumLineLength->fileLineMaximum-
stripAnsi->consoleToPlain -
Added deprecated updates (to mapping file) to
catchReturnfor internal functions (catchEnvironment "$handler" any->catchReturn "$handler" any) - All functions
usageArgument...are deprecated and will be replaced by the deprecated binary - if you wish to keep using these, includebin/build/tools/usage-deprecated.shto temporarily keep access to these. They will be removed in a future release. - Removed all references to
# Usage:in functions - the argument definition tends to be more accurate - Abandoned
buildFastFilesandsugar-fast.sh- too soon to optimize this BUILD_COVERAGE_REQUIRED_DATEhas passed and so it has been removed
Bug fixes
- Removed
backgroundProcessfrom corebin/developer.sh- need to test better for longer/slower processes pathConfigureandpathRemovenow sanitize directory names to remove trailing slashes, helps avoid duplicates- Fixed
buildEnvironmentNamesand misspelled template variableGASH_SOURCE - Fixed a bug in
listAppendwhen adding strings whose ends match - would be a no-op - Added
--debugflag topipWrapperto hide debugging
New Features
- Added
timingElapsed - Added
consoleConfigureDecorate - Added
shfmtto pre-commit hook for bash (only if installed) - Added some optimizations to
reloadChangesprompt module to make it less slow - Added
--versionto_installRemotePackageto enable fixed version installations for live stable environments - Updated semantics of
version-functionandurl-functionin_installRemotePathto support new passed in requested version. Blank if latest is requested. - Changed
whichusage tocommand -vbutcommand -vcaches binaries which have moved, so updatedexecutableExiststo check path and existence.shopt -u checkhashmay fix this but do not want to worry about save/restore. bin/build/install-bin-build.sh --version v0.40.3now works with thev0.41.0installer and greater_installRemotePackagesupports usage via a pipe (remote install) and avoids writing a file calledmainin this case- Added
decorateInitializedto better support correct setup for tools which configure their color mode bashDocumentationExtractnow requiressourceFileand supports cached values in builds in thebin/build/documentation/directory with new flags.- Fixed the ordering of most documentation arguments so it's now:
Type. Required.Type. Optional. -
Added cached documentation to
bin/build/documentationto speed this up as it never changes each build- See internal buildUsageCompile - Extract and build the bin/build/documentation/ cache (source)
-
buildUsageCompileoptimizations - Added some profiling tools in the identical directory:
profileFunctionHeadprofileFunctionMarkerprofileFunctionMarkerOthersandprofileFunctionTail- expects two local variables$flagand$flagsto trigger the profiler - Fixed an issue in
consoleLineFill; had a bug where it would prevent exiting if the internal function was interrupted - Moved
daemontoolsservice template files intobin/build/identicalto keep code spacebin/build/toolsclean of non-running code - Console output is now cached in
bin/build/documentationfor help files BUILD_DEBUGforusage-profileadded to speed upusageDocument- Changed the semantic of
--tokeninidenticalCheck- you can now pass tokens as arguments without the--token bashSanitizenow uses ignore paths fordebuggingcheck exclusion as well- Looked at building all of Zesk Build into a single
.shfile for core source with supporting code loaded to see if it speeds up the load time. - Reorganized the decoration functions internally to separate different concerns in the code
decorate eachnow supports aCommaDelimitedListfor style, sodecorate each BOLD,blueworks.styleis expanded into command line arguments to each style command separated by commas.- Removed
applicationFilefrom function source extraction, addedsourceHashto hopefully avoid regeneration of compiled usage templates when modification dates change --valuecan be blank forbuildEnvironmentAddcharacterClassesnow supports taking a character argument, andcharacterClassReportis now much fasterassertfunctions now available without callingtestToolsandtestToolsis deprecated; now uses the same loading mechanism as the rest of Zesk Build__testLoaderfor the internal nerd.outputTriggernow outputs the file as-is, and without--verbosedoes not output an errorbashSanitizeis much better about filtering filessourcedeclareandechonow return 0 when passed toisExecutableisExecutablenow useswhichinstead ofcommand -vdue to issues identifying binaries vs. functions- Within a hook call the environment variable
HOOK_NAMEis set to the current hook code name, soHOOK_NAME=test-failwhen the scriptbin/hooks/test-fail.shis run, for example. This makes it easier to run--nexthooks without copy/paste errors. - Internally,
__functionLoadernow excludeshooksdirectories to allow us to add in hooks forjunitandtaptest error handling, etc. Basically any directory inbin/build/toolswhich is namedhooksis ignored when loaded as a subdirectory during dynamic code loading. Not super important to most but just noted here for posterity. testSuitenow supportsjunitoutput as well as running tests after failures- Using
IDENTICAL hookRunOptionalNext - Added
muzzleReturnutility - Added
printfOutputEmptyutility - Heyyyyy ...
diffreturns non-zero when files do not match so when outputting differences make sure to catch that error code. Wink. Maybe add a utility for this asdiffdiffers between platforms. (GNU vs. non-GNU I assume.) - Updated all occurrences of
diffanddiff -uand replaced with newfilesAreIdenticalwhere appropriate; otherwise standardize ondiff -U0for most diffs anddiff -U3for showing context. (May change.) - Assertion counts are now output
- Semantics of
decorate each code a b c -- danddecorate quote -- --now work properly. - Adding
--index-filetobuildTestSuiteto speed up tests testSuiterun cleanup was improved (deletes temp files), and error output to test failures should be more verbose.__usageDocumentCachedwas not outputting error messages, it now does- Split off
__usageMessageand__usageMessageStylefor usage outputs