Provide a way to substitute pipeline stage implementations
Currently to replace a stage in the pipeline you need to:
- replace the site-generator-default.
- deal with possible direct calls to the stage from other stages.
This, especially the second, is something of a burden and obstacle to flexibility.
This issue proposes to use configuration to replace stages in the default pipeline, so you only need to reimplement the stage and say to use it.
One possible implementation:
- The user will provide a map of stage to implementation, either in the playbook or if you are replacing the playbook-builder in an alternate file.
- The pipeline will require the specified modules from the list or the default implementations, forming a map of stage to code.
- The pipeline will configure each stage with this map, so direct calls to other stages can go to the current implementation.
Although I've generally found typescript interface specifications extremely annoying as I can never figure out how to get to the implementation, it might possibly be worth supplying these for each stage to make clear what you need to implement to replace one.