and template
Implements the finalize stage infrastructure for HoneyBiscuitWorkshop:
- New finalize module with config, error, event, plugin, stage, and
template submodules
- Plugin system supporting internal (webhook, mail, satori, in-site) and
external plugins
- FinalizeConfig schema with version validation for finalize.yml
- Add glob, duration-str, lettre dependencies to workshop-baker
- Expand project documentation (clarification.md, description.md)
- Update .gitignore and fix bake.rs pipeline_functions access
BREAKING CHANGE: Not a buildable version!
generation and pipeline scheduling
- Add benchmark infrastructure (Criterion) for parser performance
testing
- Enhance decorator parsing with new types: Pipe, Parallel, Daemon,
Health, and Unknown
- Improve parser to track line numbers and handle nested braces
correctly
- Add implicit `@after` dependencies for pipeline functions in
topological sort
- Introduce `use_template` flag in builder to support trivial script
execution
- Update bake function signature to accept Cli parameters and privilege
detection
- Refactor error handling with structured `ScriptGenerationFailed`
variant
- Extend integration tests for privilege dropping, engine execution, and
bake phase
- Comment out daemon and apt modules temporarily for refactoring
handling
- Add new bake module with parser, scheduler, decorator, and builder
- Implement topological sorting for functions with @after dependencies
- Add error handling for circular dependencies and unknown dependencies
- Introduce constants module for shared path definitions
- Add BakeError type (renamed from BuilderError) with new variants
- Add PrebakeStage::Never variant for "never drop privileges"
- Simplify decorator parsing and clean up comments
- Remove RustyVault and rust-tongsuo submodules as they are unused
(temporarily)
- Update .gitignore to include .ruff_cache
- Document prebake.rs, bootstrap.rs, and hook.rs with module-level and
function-level docs
- Rename parse_prebake_config to parse for conciseness
- Change bootstrap() return type from ExecutionResult to ()
- Add dry-run support to bootstrap stage
- Improve test robustness with Docker availability check and unique
container names
script generation
The bootstrap stage now reads configuration from prebake.yml to
dynamically generate bootstrap scripts for user creation, workspace
setup, and privilege executor configuration.
Adds the `which` crate for binary detection.
workflow
- Rename crate/library/binary from workshop-executor to workshop-baker
- Remove unused modules (decorator, parser, schedule, variable) from lib
- Implement stage-based privilege dropping with prebake_drop_privilege()
- Add dry-run support in executor and CLI
- Add bootstrap.sh template script for user/workspace setup
- Add PrebakeStage::from_str() and Default impl
- Add get_drop_after() function for security config
- Fix version matching to handle "1.0" format variants
- Fix UPM all_managers() to return custom::Custom
- Add Python integration tests with Docker
- Simplify examples/prebake.yml to match template
Signed-off-by: Catty Steve <4795515+Catty2014@user.noreply.gitee.com>
Workshop-pipeline is a crate for parsing prebake/bake/finalize config.
Not finished yet, further testing required.