Marco Ricci commited on 2025-02-08 19:58:45
Zeige 1 geänderte Dateien mit 116 Einfügungen und 1 Löschungen.
Prepare and configure the use of `bump-my-version` to automate keeping version numbers synchronized everywhere. From a cursory search, this appears to be the most mature and actively developed tool of this kind with support for `pyproject.toml` and multiple files with file-specific replacements. Some minor warts remain (non-recursive globbing, duplication of the version number, incorrect calculation of the next release due to missing true support for pre-release segments), but they can be worked around, for now.
| ... | ... |
@@ -6,7 +6,7 @@ build-backend = "hatchling.build" |
| 6 | 6 |
name = "derivepassphrase" |
| 7 | 7 |
description = "An almost faithful Python reimplementation of James Coglan's vault." |
| 8 | 8 |
readme = "README.md" |
| 9 |
-version = "0.5a1.dev1" |
|
| 9 |
+version = '0.5a1.dev1' |
|
| 10 | 10 |
requires-python = ">= 3.9" |
| 11 | 11 |
license = { text = "zlib/libpng" }
|
| 12 | 12 |
keywords = [] |
| ... | ... |
@@ -78,6 +78,121 @@ Documentation = "https://the13thletter.info/derivepassphrase/" |
| 78 | 78 |
Issues = "https://github.com/the-13th-letter/derivepassphrase/issues" |
| 79 | 79 |
Source = "https://github.com/the-13th-letter/derivepassphrase" |
| 80 | 80 |
|
| 81 |
+[tool.bumpversion] |
|
| 82 |
+current_version = '0.5a1.dev1' |
|
| 83 |
+# As of bump-my-version 0.32.0, version components are strictly |
|
| 84 |
+# hierarchical in the order of occurrence, and there is no support for |
|
| 85 |
+# pre-release markers. The documentation suggests a fake "dev/rc/final" |
|
| 86 |
+# marker, with "final" being suppressed on output; effectively, it's |
|
| 87 |
+# major.minor.patch-n.m, where -n.m is suppressed if n is some maximum |
|
| 88 |
+# value and m is zero. This sort of scales to multiple levels of pre- |
|
| 89 |
+# oder development releases (e.g. distinguished alpha versions and |
|
| 90 |
+# development versions in between alpha versions) if you manually |
|
| 91 |
+# increment the lower markers manually, in descending order, while no |
|
| 92 |
+# committing the result... but at that point you're not really gaining |
|
| 93 |
+# that much over calculating the new version number yourself and forcing |
|
| 94 |
+# that. |
|
| 95 |
+# |
|
| 96 |
+# The primary reason to still fill out these templates is to ensure that |
|
| 97 |
+# the version number correctly round-trips within bump-my-version. |
|
| 98 |
+parse = '''(?x) |
|
| 99 |
+ (?P<major>\d+) |
|
| 100 |
+ \.(?P<minor>\d+) |
|
| 101 |
+ (?:\.(?P<patch>\d+))? |
|
| 102 |
+ (?: |
|
| 103 |
+ (?P<pre_l>-dev|a|b|rc|) |
|
| 104 |
+ (?P<pre_n>[1-9][0-9]*) |
|
| 105 |
+ )? |
|
| 106 |
+ (?: |
|
| 107 |
+ [-.] |
|
| 108 |
+ (?P<dev_t>dev|final) |
|
| 109 |
+ (?P<dev_n>[1-9][0-9]*) |
|
| 110 |
+ )? |
|
| 111 |
+''' |
|
| 112 |
+serialize = [ |
|
| 113 |
+ '{major}.{minor}.{patch}{pre_l}{pre_n}-{dev_t}{dev_n}',
|
|
| 114 |
+ '{major}.{minor}.{patch}{pre_l}{pre_n}',
|
|
| 115 |
+ '{major}.{minor}.{patch}',
|
|
| 116 |
+ '{major}.{minor}{pre_l}{pre_n}-{dev_t}{dev_n}',
|
|
| 117 |
+ '{major}.{minor}{pre_l}{pre_n}',
|
|
| 118 |
+ '{major}.{minor}',
|
|
| 119 |
+] |
|
| 120 |
+search = '{current_version}'
|
|
| 121 |
+replace = '{new_version}'
|
|
| 122 |
+regex = false |
|
| 123 |
+ignore_missing_version = false |
|
| 124 |
+ignore_missing_files = false |
|
| 125 |
+tag = true |
|
| 126 |
+sign_tags = false |
|
| 127 |
+tag_name = '{new_version}'
|
|
| 128 |
+tag_message = 'Release derivepassphrase v{new_version}'
|
|
| 129 |
+allow_dirty = true |
|
| 130 |
+commit = true |
|
| 131 |
+message = 'Release {new_version}'
|
|
| 132 |
+moveable_tags = [] |
|
| 133 |
+commit_args = "" |
|
| 134 |
+setup_hooks = [] |
|
| 135 |
+pre_commit_hooks = [] |
|
| 136 |
+post_commit_hooks = [] |
|
| 137 |
+ |
|
| 138 |
+[tool.bumpversion.parts.dev_t] |
|
| 139 |
+values = ['dev', ''] |
|
| 140 |
+optional_value = '' |
|
| 141 |
+ |
|
| 142 |
+[tool.bumpversion.parts.dev_n] |
|
| 143 |
+values = [] |
|
| 144 |
+first_value = '1' |
|
| 145 |
+ |
|
| 146 |
+[tool.bumpversion.parts.pre_l] |
|
| 147 |
+values = ['-dev', 'a', 'b', 'rc', ''] |
|
| 148 |
+optional_value = '' |
|
| 149 |
+ |
|
| 150 |
+[tool.bumpversion.parts.pre_n] |
|
| 151 |
+values = [] |
|
| 152 |
+first_value = '1' |
|
| 153 |
+ |
|
| 154 |
+[[tool.bumpversion.files]] |
|
| 155 |
+glob = 'src/derivepassphrase/*.py' |
|
| 156 |
+search = '# SPDX-FileCopyrightText: \d\d\d\d' |
|
| 157 |
+replace = '# SPDX-FileCopyrightText: {now:%Y}'
|
|
| 158 |
+regex = true |
|
| 159 |
+ |
|
| 160 |
+[[tool.bumpversion.files]] |
|
| 161 |
+glob = 'src/derivepassphrase/*/*.py' |
|
| 162 |
+search = '# SPDX-FileCopyrightText: \d\d\d\d' |
|
| 163 |
+replace = '# SPDX-FileCopyrightText: {now:%Y}'
|
|
| 164 |
+regex = true |
|
| 165 |
+ |
|
| 166 |
+[[tool.bumpversion.files]] |
|
| 167 |
+glob = 'tests/*.py' |
|
| 168 |
+search = '# SPDX-FileCopyrightText: \d\d\d\d' |
|
| 169 |
+replace = '# SPDX-FileCopyrightText: {now:%Y}'
|
|
| 170 |
+regex = true |
|
| 171 |
+ |
|
| 172 |
+[[tool.bumpversion.files]] |
|
| 173 |
+filename = 'pyproject.toml' |
|
| 174 |
+search = "version = '{current_version}'"
|
|
| 175 |
+replace = "version = '{new_version}'"
|
|
| 176 |
+regex = true |
|
| 177 |
+ |
|
| 178 |
+[[tool.bumpversion.files]] |
|
| 179 |
+filename = 'pyproject.toml' |
|
| 180 |
+search = "current_version = '{current_version}'"
|
|
| 181 |
+replace = "current_version = '{new_version}'"
|
|
| 182 |
+regex = true |
|
| 183 |
+ |
|
| 184 |
+[[tool.bumpversion.files]] |
|
| 185 |
+glob = 'man/derivepassphrase*.1' |
|
| 186 |
+regex = true |
|
| 187 |
+search = '^\.Dd \d\d\d\d-\d\d-\d\d' |
|
| 188 |
+replace = '.Dd {now:%Y-%m-%d}'
|
|
| 189 |
+ |
|
| 190 |
+[[tool.bumpversion.files]] |
|
| 191 |
+glob = 'man/derivepassphrase*.1' |
|
| 192 |
+regex = true |
|
| 193 |
+search = '^\.Os derivepassphrase {current_version}'
|
|
| 194 |
+replace = '\.Os derivepassphrase {new_version}'
|
|
| 195 |
+ |
|
| 81 | 196 |
[tool.coverage.html] |
| 82 | 197 |
directory = "html/coverage" |
| 83 | 198 |
|
| 84 | 199 |