=====================================================================
A follow-up to V5 focused on hardening the environment system and
expanding the ZSH logging/caching toolkit. No migration required from
v5.0.x, though note the log-level reorganization below may quiet some
messages at lower verbosities.
--- New Features -------------------------
- persistent cross-runtime cache for ZSH-type scwrypts; extends the
v5.0 runtime speedup cache to survive between runs with automatic
hash-based invalidation (toggle via SCWRYPTS__ZSH_CACHE_ENABLED)
- new 'trace' log level (5) and echo.trace, plus '-v VARNAME' state
injection for echo.debug / echo.trace to surface variable values
inline
- additional scwrypts output formats: 'raw' and 'logfmt'
(alongside pretty and json)
- normalize.boolean utility for consistent truthy/falsey handling
across ZSH-type scwrypts
- utils.fzf.file-select for directory-scoped file selection prompts
- automatic dependency wrappers providing default arguments, GNU
coreutil resolution, and scwrypts trace on wrapped commands
--- Changes ------------------------------
- log levels reorganized; success / status / reminder messages now
emit at level 3, so lower verbosities will show fewer of these
- environment library restructured around get-user-json as the single
source of truth (replaces the previous user module and cache-output)
- utility renames for consistency: user.Yn / user.yN (from utils.*)
- utils.fail and utils.abort deprecated in favor of echo.error and
echo.error.user-abort
--- Bug Fixes ----------------------------
- CI runs now resolve config lookup-paths (.dotted.path) to their
environment variable before reading, fixing false "not set" reports
and invalid-export errors for lookup-path checks in CI
- hardened environment type detection so array-valued configs reprint
correctly after their first check
- corrected exit-code capture in the cache layer (now reflects the
cached command, not the downstream output filter)
- scwrypt exit code now survives the logging pipeline
- assorted script fixes (efs unmount file listing, postgres run-sql
file discovery)
=====================================================================
Excited to bring V5 to life. This includes some BREAKING CHANGES to
several aspects of ZSH-type scwrypts. Please refer to the readme
for upgrade details (specifically docs/upgrade/v4-to-v5.md)
--- New Features -------------------------
- ZSH testing library with basic mock capabilities
- new scwrypts environment file format includes metadata and more
advanced features like optional parent env overrides, selection
inheritence, and improved structurual flexibility
- speedup cache for non-CI runs of ZSH-type scwrypts
- ${scwryptsmodule} syntax now allows a consistent unique-naming
scheme for functions in ZSH-type scwrypts while providing better
insight into origin of API calls in other modules
- reusable, case-statement-driven argument parsers in ZSH-type scwrypts
--- Changes ------------------------------
- several utility function renames in ZSH-type scwrypts to improve
consistency
- documentation comments included in ZSH libraries
- ZSH-type scwrypts now allow library modules to live alongside
executables
(zsh/lib still supported; autodetection determines default)
--- Bug Fixes ----------------------------
- hardened environment checking for REQUIRED_ENV variables; this removes
the ability to overwrite variables in local function contexts
=====================================================================
Increased non-scwrypts-runtime compatibility and improved clarity
in user environments after sourcing the scwrypts.plugin.zsh.
--- New Features -------------------------
- added experimental support for --output json
- added 'scwrypts --list-groups' to output the SCWRYPTS_GROUPS value
- added 'scwrypts --config' to be `eval`-ed in non-scwrypts-runtime zsh
--- Changes ------------------------------
- removed config variables which pertained to old scwrypts
- removed deprecated --no-log
- cleaned up environment requirements and improved import saftey for
scwrypts.plugin.zsh; scwrypts is now *required* on $PATH in order to work
- refactored group configuration to match external group configuration
(configuration now in scwrypts.scwrypts.zsh rather than zsh/lib/config.group.zsh)
- plugins/kubectl now forces an unalias of `f` (for fluxcd) on load
- the 'use' command now supports the '-c' short flag for ease of quick
use
- upgraded max supported python version to 3.12; dropped support for
python 3.9 (>3.10 required)
- remove old references to SCWRYPTS_ROOT in favour of SCWRYPTS_ROOT__scwrypts
- SCWRYPTS_LOG_LEVEL setting is now forwarded when using the SCWRYPTS__RUN
meta execution function