Skip to content

Commit 60f9ea6

Browse files
committed
Add repo markdown rendering
1 parent bc6feb4 commit 60f9ea6

5 files changed

Lines changed: 66 additions & 5 deletions

File tree

.flake8

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ extend-ignore=
1010
extend-exclude=
1111
.venv,
1212
per-file-ignores =
13-
tests/test_*.py:E501,
13+
tests/test_*.py:E501,W291,

.pre-commit-config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ repos:
2828
- id: end-of-file-fixer
2929
- id: mixed-line-ending
3030
- id: trailing-whitespace
31+
exclude: "test_render.py"
3132
- repo: https://github.com/pre-commit/pygrep-hooks
3233
rev: v1.10.0
3334
hooks:

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# readme-rel
2-
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
3-
[![Code style: black](https://img.shields.io/badge/code%20style-black-black)](https://github.com/psf/black)
2+
[![Python Version from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2Fsco1%2Freadme-rel%2Frefs%2Fheads%2Fmain%2Fpyproject.toml&logo=python&logoColor=FFD43B)](https://github.com/sco1/readme-rel/blob/main/pyproject.toml)
3+
[![GitHub License](https://img.shields.io/github/license/sco1/readme-rel?color=magenta)](https://github.com/sco1/readme-rel/blob/main/LICENSE)
4+
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/sco1/readme-rel/main.svg)](https://results.pre-commit.ci/latest/github/sco1/readme-rel/main)
45

56
Bump recent releases in my [personal README](https://github.com/sco1/sco1/blob/master/README.md)
67

readme_rel/main.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import datetime as dt
44
import operator
55
import os
6+
from collections import abc
67
from dataclasses import dataclass
78

89
from gql import Client, gql
@@ -172,5 +173,16 @@ def n_recent_releases(n: int = 5) -> list[Repository]:
172173
return repositories[:n]
173174

174175

175-
if __name__ == "__main__":
176-
n_recent_releases()
176+
def render_repos(repos: abc.Iterable[Repository]) -> str:
177+
repo_strings = []
178+
for r in repos:
179+
repo_url = f"[`{r.name}`]({r.url})"
180+
tree_url = f"[Tree]({r.url}/tree/{r.last_release.tag_name})"
181+
changelog_url = f"[Changelog]({r.last_release.url})"
182+
publish_str = r.last_release.published.strftime(r"%Y-%m-%d")
183+
184+
# fmt: off
185+
repo_strings.append(f"* {publish_str}: {repo_url} `{r.last_release.tag_name}` ({changelog_url}, {tree_url}) ") # noqa: E501
186+
# fmt: on
187+
188+
return "\n".join(repo_strings)

tests/test_render.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import datetime as dt
2+
3+
from readme_rel.main import Release, Repository, render_repos
4+
5+
SAMPLE_REPOS = [
6+
Repository( # Page 1
7+
name="xbmini-py",
8+
url="https://github.com/sco1/xbmini-py",
9+
n_releases=5,
10+
last_release=Release(
11+
tag_name="v0.5.0",
12+
published=dt.datetime.fromisoformat("2025-01-06T20:44:16Z"),
13+
url="https://github.com/sco1/xbmini-py/releases/tag/v0.5.0",
14+
),
15+
),
16+
Repository( # Page 2
17+
name="matplotlib-window",
18+
url="https://github.com/sco1/matplotlib-window",
19+
n_releases=3,
20+
last_release=Release(
21+
tag_name="v1.1.0",
22+
published=dt.datetime.fromisoformat("2024-12-31T01:26:50Z"),
23+
url="https://github.com/sco1/matplotlib-window/releases/tag/v1.1.0",
24+
),
25+
),
26+
Repository( # Page 1
27+
name="pyflysight",
28+
url="https://github.com/sco1/pyflysight",
29+
n_releases=9,
30+
last_release=Release(
31+
tag_name="v0.9.0",
32+
published=dt.datetime.fromisoformat("2024-11-27T17:52:24Z"),
33+
url="https://github.com/sco1/pyflysight/releases/tag/v0.9.0",
34+
),
35+
),
36+
]
37+
38+
# fmt: off
39+
TRUTH_RENDERED = """\
40+
* 2025-01-06: [`xbmini-py`](https://github.com/sco1/xbmini-py) `v0.5.0` ([Changelog](https://github.com/sco1/xbmini-py/releases/tag/v0.5.0), [Tree](https://github.com/sco1/xbmini-py/tree/v0.5.0))
41+
* 2024-12-31: [`matplotlib-window`](https://github.com/sco1/matplotlib-window) `v1.1.0` ([Changelog](https://github.com/sco1/matplotlib-window/releases/tag/v1.1.0), [Tree](https://github.com/sco1/matplotlib-window/tree/v1.1.0))
42+
* 2024-11-27: [`pyflysight`](https://github.com/sco1/pyflysight) `v0.9.0` ([Changelog](https://github.com/sco1/pyflysight/releases/tag/v0.9.0), [Tree](https://github.com/sco1/pyflysight/tree/v0.9.0)) """
43+
# fmt: on
44+
45+
46+
def test_render_repos() -> None:
47+
assert render_repos(SAMPLE_REPOS) == TRUTH_RENDERED

0 commit comments

Comments
 (0)