feat(plugins): implement plugin system with lifecycle hooks #286
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves #285
Pr on top of #284
This pull request introduces a plugin system for
changelogen
, enabling users to extend and customize the changelog generation process. Key changes include updates to the configuration structure, the addition of a plugin manager, hooks for plugin interaction, and enhancements to commit and markdown processing. These changes aim to make the tool more flexible and extensible.Plugin System Implementation:
docs/plugins.md
detailing plugin capabilities, lifecycle hooks, configuration, and examples, including a Jira integration plugin.README.md
with an overview, examples, and available hooks for plugin development.Codebase Updates for Plugin Support:
PluginManager
into the main flow insrc/commands/default.ts
. Added lifecycle hooks (beforeCommitParsing
,afterCommitParsing
, etc.) to allow plugins to modify commits, versions, and markdown during changelog generation. [1] [2] [3] [4]ChangelogConfig
insrc/config.ts
to include aplugins
field for plugin configuration. Ensured default values and proper resolution of plugin settings. [1] [2] [3] [4]Commit and Markdown Processing Enhancements:
RawGitCommit
insrc/git.ts
to includefullHash
and madeReference
types extensible for custom plugin-defined references. Updated commit parsing to support Azure-specific hashes. [1] [2] [3]formatReferences
insrc/markdown.ts
to handle custom references (e.g., Jira tickets) with optional URLs.Miscellaneous:
src/index.ts
andsrc/plugins/index.ts
. [1] [2]