Commit Graph
56 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 21b87300cc Fix the commit annotation tags. 2025-12-15 13:51:26 +00:00
lukaszraczylo 3e0a7239c4 Fix ignoring strict.force and strict.commit. 2025-12-15 13:37:07 +00:00
lukaszraczylo 3a48a67c75 Improve calculation logic, add ability to strip prefixes. 2025-12-10 14:37:38 +00:00
lukaszraczylo 0bc848f6f4 fixup! fixup! Update binary confusion. 2025-12-07 16:29:21 +00:00
lukaszraczylo f4285403f7 Update binary confusion. 2025-12-07 16:27:04 +00:00
lukaszraczylo be189187ba Move updater to REST api. 2025-12-07 15:28:37 +00:00
lukaszraczylo 3a528b83d9 Enhance the codebase and test coverage. 2025-02-25 19:56:28 +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 ebcffd219f Set respect existing tags default to true. 2025-02-08 01:48:17 +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
lukaszraczylo 76fdbd6f50 fixup! Merge pull request #22 from lukaszraczylo/add-branch-support 2023-05-09 13:57:57 +01:00
lukaszraczylo 1bf33c3a65 Modify tests to reflect addition of the branch flag. 2023-05-09 12:14:49 +01:00
username-dorf ac953ab411 Add branch selection for remote repo 2023-05-05 15:12:21 +03:00
lukaszraczylo 0fa3b15a5c Update dependencies, move gjson -> ask 2023-04-08 01:42:01 +01: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 be885367df Increase test coverage. 2022-10-17 15:30:21 +01: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 93ea4e6365 Remove unnecessary print from ./semver-gen command 2022-02-10 15:15:36 +00:00
lukaszraczylo 960207e467 Skip update test in CI. 2022-02-10 15:06:35 +00:00
lukaszraczylo 385b5b5e97 Update dependencies and release process. 2022-02-10 14:40:09 +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 be00398a17 Enable update testing on the CI platform. 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 a9949ee255 Add dummy autoupdater. 2021-07-27 10:22:54 +01:00
lukaszraczylo 29ad85b62a Add binary autoupdate. 2021-07-27 10:22:54 +01:00
lukaszraczylo d0924c948d Improve test coverage. 2021-07-27 10:22:54 +01:00
lukaszraczylo 941784a3ae Fix leftover from the testing, use GITHUB_TOKEN. 2021-07-27 10:22:53 +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