=====================================================================
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
=====================================================================
--- Bug Fixes ----------------------------
- scwrypts now run when using --group and --type options without --name
- fixed spacing issues in scwrypts --help
- added missing = sign in config
--- New Features -------------------------
- zsh completion now loads with scwrypts.plugin.zsh (requires compdef)
=====================================================================
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
=====================================================================
--- Changes ------------------------------
- updated python scwrypts API to use latest pattern established in the
nodejs library
- SCWRYPTS_ROOT__scwrypts is now supports loading with each run and
detects managed installations vs manual installations; this now means
SCWRYPTS_ROOT can no longer be injected to scwrypts (this was a v2
legacy support thing and probably does not apply to you)
--- New Features -------------------------
- pypi/scwrypts )
added 'get_generator' API to testing utilities to provide a nice
way to include default generator options
--- Bug Fixes ----------------------------
- scwrypts groups which use a required environment name regex no longer
load specialized static files outside of the required environments.
=====================================================================
DEPRECATION REMINDER!
The following functions and APIS are no longer available:
- FZF_HEAD : use FZF as a drop-in replacement
- FZF_TAIL : use FZF as a drop-in replacement
- SCWRYPTS__GET_RUNSTRING__zsh_v3 : upgrade to zsh/scwrypts v4
runstrings
--- Bug Fixes ----------------------------
- removed legacy INFO references in plugins/kubectl
- the zsh-builder plugin (CTRL+Y) now show clean helpdocs (no more
visual terminal artifacts)
--- New Features -------------------------
- differentiate manual / managed versions of scwrypts in versioning;
this will prevent 'scwrypts --update' from operating against managed
installations
- created SCWRYPTS__GET_RUNSTRING__zsh__generic to provide an easy way
to write custom runstrings; this will do all the nice things default
zsh/scwrypts v4 do (multiflag separation, help flag injection, USAGE
definitions, and required MAIN() {} wrapper).
=====================================================================
--- Bug Fixes ----------------------------
- resolved a typo when running in prod environments
=====================================================================
Reminder of the deprecation notices for FZF_(HEAD|TAIL) and v3
runstrings! These will be removed in 4.2 (the next minor release!)
--- Changes ------------------------------
- removed executable "run" in favor of single "scwrypts" entrypoint (this
used to make more sense when running from the executable in the
repository directly, but now scwrypts is primarily interfaced through
the application itself)
- EKS commands will now attempt cluster login if the kubectl context is not
detected on your machine
- improved warning messages for when scwrypts is out-of-date in API / CI
contexts
--- Bug Fixes ----------------------------
- zsh/utils/io print functions will now always print if no
SCWRYPTS_LOG_LEVEL is defined
=====================================================================
--- New Scripts --------------------------
zsh )
database backup/restore
- db/postgres/pg_dump
- db/postgres/pg_restore
- aws/rds/create-backup
- aws/rds/load-backup
redis-cached curl commands
- redis/curl
youtube download
- youtube/download
- youtube/get-audio-clip
--- Changes ------------------------------
- 'scwrypts' executable now reloads upon execution to prevent staleness
- added various options to improve api/cli; see 'scwrypts --help' for more
--- Bug Fixes ----------------------------
- fixed an issue with .config settings' visibility to non-zsh scripts
- fixed an issue with command arguments globbing too early
=====================================================================
--- Changes ------------------------------
- improved colors readability by naming color variables in zsh/utils
--- Bug Fixes ----------------------------
- aws/efs/mount wouldn't mount if the previous session was not
explicitly unmounted. now it does :)
=====================================================================
--- Bug Fixes ----------------------------
- rogue source on empty variable in main executable
=====================================================================
Subscwrypts + Environment Inheritance
--- Release Notes ------------------------
- added support for environment inheritance
- added support for arbitrarily nested scripts (subscwrypts)
- added support for CI mode
- improved modularity of zsh/utils module
- refactored to move some data from ~/.config/scwrypts to ~/.local/share/scwrypts
- refactored various scripts to use new subscwrypt api
--- New Scripts --------------------------
zsh )
- db/interactive/postgres
- aws/rds/interactive-login
=====================================================================
Finally decided to port personal scripts into a standalone library.
--- Release Notes ------------------------
- added support for python, zsh, and zx scripts
- added support for "interactive" scripts which drop the user to a REPL
- added support for passing arguments to commands
- added support for python/node virtualenv management through scwrypts
- added contributing and usage docs
- updated zsh plugin to write commands to history
- licensed under GPLv3
--- New Scripts --------------------------
zsh/scwrypts )
- configure
- environment/copy
- environment/delete
- environment/edit
- environment/synchronize
- logs/clear
- logs/view
zsh )
- aws/ecr/login
- aws/efs/mount
- aws/efs/unmount
- aws/route53/backup
- aws/s3/media-sync/pull
- aws/s3/media-sync/push
python )
- redis/interactive