* feat: support generating change log for different branches
* check if the head commit is also a tag commit
* simplify implementation without requiring a branch
* remove unused import
* update test-topo-order fixture
* add comment for should_include_tag
* fix typo
* rename variable
* generate fixture considering timezone difference
* make --use-branch-tags optional for backward compatibility
* add missing field
* refactor: polish implementation
---------
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
* fix: reorder execution to have context poplulated before parsing/pruning
* feat: allow field to read from context object
* fix: add tests
* fix: add legacy fix for body field
* test: add fixture
* docs: update documentation
* refactor: clean up implementation
---------
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
* feat: support bump a specific version type
* let --bump accept optional enum
* doc: update document for --bump
* test: add bump version fixtures tests
* refactor: polish implementation
* refactor: fix typo
---------
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
* feat: support performance profiling via pprof
This adds support for performance profiling that allows for finding the bottlenecks and performance optimizations.
It can be enabled via `profiler` feature and the `bench` build profile.
```shell
cargo build --profile=bench --features=profiler
```
* refactor(profiling): clean up implementation
* feat(ci): run profiler
* fix(ci): fetch all the history for profiler
* docs(website): add profiling docs
---------
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
Gitlab requires that the project path be fully encoded. See the docs for
details. https://docs.gitlab.com/ee/api/rest/#namespaced-path-encoding
Pulls in the urlencoding crate here. Might not be needed when you have
the choice to just update the documentation. I don't think the end user
should be required to url encode their own strings. It might be nicer to
just add the subgroup paradigm to the gitlab config in general for the
future. This will fix the problem for now.
* feat: add tag message to release context
- add to the release context the tag's message if it exists
- add message to the default config
* feat(args): add `--with-tag-message` argument
to allow setting the message of the last release in the context
* docs: update args
* docs: add adding-tag-messages
* refactor: polish implementation
* tests(test-tag-message): fix the template
---------
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
* feat(changelog): make changelog.header a template (#697)
* refactor: clean up implementation
* docs: update the description of header field
---------
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
* feat: Enable footer-based commit parsing
Enable defining parsers for a commit's footer, similar to the already-
present commit parsers for a commit's message or body.
For example:
```toml
commit_parsers = [
{ footer = "changelog: ignore", skip = true },
]
```
Due to an inconsistency between the conventional commits specification
and its reference parser, footers are currently interpreted as
`key:value` instead of the (correct) `key: value`. See
https://github.com/conventional-commits/parser/issues/47 for details.
As a future-proof workaround, you can use `key: ?value` in the regex.
* chore: fix typo
---------
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
* fix(args): -o and -p are not allowed together
setting prepend and output together will ignore the prepend flag
Signed-off-by: Anton Engelhardt <antoncengelhardt@icloud.com>
* docs(examples): add note about incompatibility with output to prepend arg
Signed-off-by: Anton Engelhardt <antoncengelhardt@icloud.com>
* fix(args): prepend and output only compatible if paths are different
Signed-off-by: Anton Engelhardt <antoncengelhardt@icloud.com>
---------
Signed-off-by: Anton Engelhardt <antoncengelhardt@icloud.com>
* feat(gitlab): Add gitlab support
Signed-off-by: dark0dave <dark0dave@mykolab.com>
* refactor: simplify contains variable function
* refactor: move github and gitlab to remote module
* fix: fix gitlab API url
* refactor: move common constants and trait to remote module
* refactor: use common type for contributor and release metadata
* refactor: use generic types for remote commits and pull requests
* refactor: move template variables to designated module
* refactor: abstract away the remote
* docs: improve documentation of remote module
* fix: fix feature segregation related bugs
* fix: fix double print bug
* chore: update fixtures for remote integration
* fix: fix test case for non-default features
* chore(build): bump MSRV to 1.75.0
* docs: update the documentation of remote module
* fix: hide arguments if feature is not enabled
* docs: add documentation
* chore(github): update issue template
---------
Signed-off-by: dark0dave <dark0dave@mykolab.com>
Co-authored-by: dark0dave <dark0dave@mykolab.com>
* docs: fix the documentation for `--include-path`
Related to #48
* style: update styling
---------
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>
* feat: add programmatic api
* fix: return the execa result from the programmatic API instead of exiting the process
* feat: make it possible to customize execa when using the programmatic api
* fix: fixed dev script
* refactor: remove unnecessary await
* chore: update lockfile and let yarn resort dependencies
* style: formatting in tsup config
* chore(npm): log the error in case of exe path is not found
---------
Co-authored-by: Orhun Parmaksız <orhunparmaksiz@gmail.com>