Commit Graph
39 Commits
Author SHA1 Message Date
lukaszraczylo e90191de4c feat(matching): add an opt-in regex keyword matching mode
Fuzzy matching compares each keyword with every word of the commit
message. A word matches if it contains the keyword's letters in order.
Thus "feat" matches "fix(delegation):" and "major" matches
"deps(majors):", which gives false minor and major versions.

The new top-level config key "matching" accepts "fuzzy" (the default)
or "regex". In regex mode every wording keyword is a Go regular
expression. The tool compiles all of them when it loads the config and
runs them against the full commit message, so "(?m)^" anchors a
pattern to the start of a line. An invalid value, an invalid pattern,
or any other config parse error in regex mode stops the tool with a
non-zero exit code. It never falls back to fuzzy matching.

Fuzzy mode does not change. The blacklist check moves into one helper
that both modes use. A replay of 15 repositories gives the same
versions as before. This change improves version precision for the
repositories that opt in.

Claude-Session: https://claude.ai/code/session_01Qq1gbqQek1Zjtofo4VDRdW
2026-09-25 19:35:48 +01:00
lukaszraczylo dfeb03b8bb fix(semver): skip non-semver tags when picking latest existing tag
Rolling tags like 'v1' (and any other tag that doesn't parse as x.y.z
after prefix stripping) used to enter the latest-tag candidate set in
CalculateSemver. When such a tag shared a commit with a real semver tag
(e.g. v1 and v1.16.3 both pointing at the same release commit), go-git's
alphabetical tag iteration made 'v1' win, ParseExistingSemver bailed out
because '1' has only one component, and the calculator silently reset
the baseline to 0.0.0 — producing nonsense like 0.0.5 on this branch.

ListExistingTags now filters tags through a new IsParseableSemverTag
helper before recording them, so non-semver tags never participate in
latest-tag selection. The behavior change is invisible for repos that
only use proper vX.Y.Z tags, and it's covered by a new test table.
2026-05-22 00:39:59 +01:00
lukaszraczylo 3a48a67c75 Improve calculation logic, add ability to strip prefixes. 2025-12-10 14:37:38 +00:00
lukaszraczylo be189187ba Move updater to REST api. 2025-12-07 15:28:37 +00:00
lukaszraczylo 942e648d56 Refactor the code to use more modular and testable approach. 2025-02-25 19:11:19 +00:00
lukaszraczylo 5964da3cef Fix debug output for logging. 2025-02-17 09:34:05 +00:00
lukaszraczylo a999dcc328 Improve test coverage. 2025-02-08 02:06:12 +00:00
lukaszraczylo 38b1869177 Add support for the blacklisting 2025-02-08 01:55:10 +00:00
lukaszraczylo 925c4f5abe Change priority of the commit messages to follow the order:
Major version changes (breaking changes)
Minor version changes (features)
Release candidate changes
Patch version changes (fixes)
2025-02-08 01:51:48 +00:00
lukaszraczylo 2771fb826b Fix static checks. 2025-02-07 09:24:43 +00:00
lukaszraczylo f51cb018cf Update dependencies. 2024-07-23 12:14:17 +01:00
lukaszraczylo 6c1281a87b Update dependencies. 2024-05-04 21:21:57 +01:00
lukaszraczylo ca3d1b6da0 Use well tested logging sub-library. 2023-10-20 10:15:26 +01:00
username-dorf ac953ab411 Add branch selection for remote repo 2023-05-05 15:12:21 +03:00
lukaszraczylo a73dd78bd5 Decrease memory footprint by realigning struct members. 2023-03-31 15:34:49 +01:00
lukaszraczylo b20a9f8eb7 fixup! fixup! fixup! fixup! Switch to goreleaser. 2023-01-16 17:36:05 +00:00
lukaszraczylo 746defdaa2 Switch to goreleaser. 2023-01-16 17:03:59 +00:00
lukaszraczylo 957f17f0a5 fixup! Update code constraints. 2022-12-10 13:30:57 +00:00
lukaszraczylo 4451f4b9b5 Allow semver generator to run without configuration file present. 2022-03-10 00:22:19 +00:00
lukaszraczylo 5878e650f7 Add missing interpretation of strict parameter from config file. 2022-02-10 16:22:13 +00:00
lukaszraczylo 559ed4ff59 Resolve issue with not parsing strict ( issue#13 ) 2022-02-10 16:01:30 +00:00
lukaszraczylo b3a41d4737 Skip version increase on prior semver tag detected. 2022-02-10 14:40:09 +00:00
lukaszraczylo c2a30fb868 Additional testing 2022-02-10 14:40:08 +00:00
lukaszraczylo a0fa4ee4cd Add option to respect existing tags and adjust calculations using them. 2022-02-10 14:40:08 +00:00
lukaszraczylo e32b4b9544 Fixes the bug when multiple criteria could be used to increment multiple counters.
After the change semver calculator will proceed to the next commit on the first hit.

Also: Update to GraphQL library
2022-02-10 14:40:08 +00:00
lukaszraczylo d4443075f2 Fixes bug where commit hash was not respected. 2021-08-02 16:17:39 +01:00
lukaszraczylo c621cdf9e5 Add the release candidate to versioning. 2021-07-27 10:22:55 +01:00
lukaszraczylo e4007deecd Improve testing across the board. 2021-07-27 10:22:55 +01:00
lukaszraczylo 9c0e4171ae Add strict matching which disables automatic incrementation of the patch until the trigger word is found. 2021-07-27 10:22:54 +01:00
lukaszraczylo 29ad85b62a Add binary autoupdate. 2021-07-27 10:22:54 +01:00
lukaszraczylo 2a869e95fa Version checking against the current release and github graphql api. 2021-07-27 10:22:53 +01:00
lukaszraczylo 195192e6d1 Add version checking. 2021-07-27 10:22:53 +01:00
lukaszraczylo b8a15788ee General improvements
* Fix calculations as per https://github.com/lukaszraczylo/semver-generator/issues/8
* Change name of default config file as per https://github.com/lukaszraczylo/semver-generator/issues/2
* Add access to private repositories as per https://github.com/lukaszraczylo/semver-generator/issues/3
* Update documentation
2021-07-27 10:22:05 +01:00
lukaszraczylo 6507c43648 Fixup: Wrong assumption, wrong calculation. 2021-07-27 10:22:04 +01:00
lukaszraczylo af71c23260 Fix: Issue with sorting commits after specifying hash. 2021-07-27 10:22:03 +01:00
lukaszraczylo 1b2292f6cb Add ability to start from user specified hash.
This feature can be useful for repositories with already established versioning, but
having hundreds of commits which could potentially produce really weird results due
to lack of previous rules on wording.
2021-07-27 10:22:02 +01:00
lukaszraczylo cbe73e16db Add -v / --version command and appropriate build flags. 2021-05-09 11:40:36 +01:00
lukaszraczylo 8bbde1f600 Console friendly switches and documentation
+ Add ARM64 binary release
+ Draft for github actions.
2021-05-09 11:11:57 +01:00
lukaszraczylo e4eb72fd13 Ready for release. 2021-05-09 02:47:33 +01:00