Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ensure README is synched with code #43

Merged
merged 12 commits into from
Oct 10, 2023
8 changes: 8 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,11 @@ repos:
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]

- repo: local
hooks:
- id: readme.py
name: readme.py
language: system
entry: python .tools/readme.py
files: "README.md|src/changelist/default_config.toml|.tools/readme.py"
32 changes: 32 additions & 0 deletions .tools/readme.py
lagru marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
"""Update README.md, used by pre-commit."""

import re
lagru marked this conversation as resolved.
Show resolved Hide resolved
from pathlib import Path

PROJECT_ROOT = Path(__file__).parent.parent


def main():
with open(PROJECT_ROOT / "README.md") as fh:
readme = fh.read()

with open(PROJECT_ROOT / "src/changelist/default_config.toml") as fh:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nitpick: does windows like this? Or we shouldn't be bothered anyway?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you mean the "/" vs "\" thing? I think abstracting that away is one of the ideas behind pathlib but I haven't used in much on a Windows system to be honest.

default_config = fh.read()

config_begin = r"<!--- begin default_config.toml --->\n"
config_end = r"<!--- end default_config.toml --->\n"
config_section = (
config_begin + r"\n````toml\n" + default_config + r"````\n\n" + config_end
)

rx = re.compile(config_begin + ".*?" + config_end, re.DOTALL)
# Regex substitution replaces r"\\" with to r"\", compensate
config_section = config_section.replace(r"\\", r"\\\\")
readme = rx.sub(config_section, readme)

with open(PROJECT_ROOT / "README.md", "w") as fh:
fh.write(readme)


if __name__ == "__main__":
main()
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ changelist can be configured from two sources, in order of precedence:
If a configuration option is not specified in either file above, changelist
falls back to the following configuration:

<!--- Changes to the following block are overridden by a pre-commit hook! --->
<!--- begin default_config.toml --->
jarrodmillman marked this conversation as resolved.
Show resolved Hide resolved

````toml
# Default changelist configuration as supported in pyproject.toml
[tool.changelist]
Expand Down Expand Up @@ -109,6 +112,8 @@ pr_summary_regex = "^```release-note\\s*(?P<summary>[\\s\\S]*?\\w[\\s\\S]*?)\\s*
".*Maintenance.*" = "Maintenance"
````

<!--- end default_config.toml --->

## Set up your repository

To categorize merged PRs in the changelist with the default configuration, each
Expand Down