bijux-cli 0.1.1__tar.gz → 0.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {bijux_cli-0.1.1 → bijux_cli-0.1.2}/.gitignore +4 -0
- {bijux_cli-0.1.1 → bijux_cli-0.1.2}/CHANGELOG.md +31 -0
- {bijux_cli-0.1.1 → bijux_cli-0.1.2}/PKG-INFO +52 -10
- {bijux_cli-0.1.1 → bijux_cli-0.1.2}/README.md +12 -2
- {bijux_cli-0.1.1 → bijux_cli-0.1.2}/pyproject.toml +8 -7
- bijux_cli-0.1.1/scripts/README.md +0 -196
- {bijux_cli-0.1.1 → bijux_cli-0.1.2}/CITATION.cff +0 -0
- {bijux_cli-0.1.1 → bijux_cli-0.1.2}/LICENSES/CC0-1.0.txt +0 -0
- {bijux_cli-0.1.1 → bijux_cli-0.1.2}/LICENSES/MIT.txt +0 -0
- {bijux_cli-0.1.1 → bijux_cli-0.1.2}/REUSE.toml +0 -0
- {bijux_cli-0.1.1 → bijux_cli-0.1.2}/config/README.md +0 -0
- {bijux_cli-0.1.1 → bijux_cli-0.1.2}/plugin_template/README.md +0 -0
- {bijux_cli-0.1.1 → bijux_cli-0.1.2}/src/bijux_cli/py.typed +0 -0
|
@@ -23,7 +23,37 @@ This project adheres to [Semantic Versioning](https://semver.org) and the
|
|
|
23
23
|
|
|
24
24
|
<!-- towncrier start -->
|
|
25
25
|
|
|
26
|
+
<a id="v0-1-2"></a>
|
|
27
|
+
## [0.1.2] – 2025-08-17
|
|
28
|
+
|
|
29
|
+
### Added
|
|
30
|
+
* **New Documentation Engine:** Introduced a new modular documentation builder in `scripts/docs_builder/` that replaces the previous helper script.
|
|
31
|
+
* **CI Artifact Pages:** The documentation site now automatically generates detailed pages for all CI artifacts, including tests, linting, code quality, security, API tests, SBOMs, and citation files.
|
|
32
|
+
* **Release Evidence:** The `publish` workflow now downloads all artifacts from the `CI` run, packages them as `evidence/*.tar.gz` bundles, and attaches them to the GitHub Release for traceability.
|
|
33
|
+
* **Build Hygiene:** Makefiles now enforce a "hygienic" build process, ensuring all temporary files, caches, and build outputs are stored under the `artifacts/` directory to prevent root directory pollution.
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
* **CI/CD Overhaul:**
|
|
37
|
+
* The `ci.yml` workflow now uploads each category of artifact separately for better organization and downstream consumption.
|
|
38
|
+
* The `docs.yml` workflow now waits for the main `CI` run to complete, downloads all artifacts, and uses them to build a data-rich documentation site.
|
|
39
|
+
* The `publish.yml` workflow has been streamlined and made more robust, removing the optional "wait for docs" step and improving tag detection.
|
|
40
|
+
* **Documentation Content:** All top-level Markdown documents (`README.md`, `USAGE.md`, `TESTS.md`, `TOOLING.md`, `CONTRIBUTING.md`, etc.) have been significantly rewritten and expanded with tables of contents, `back-to-top` links, and cross-references to the new artifact pages.
|
|
41
|
+
* **Build System:**
|
|
42
|
+
* All `Makefile` modules have been refactored to use the new hygienic `artifacts/` directory structure for outputs and caches.
|
|
43
|
+
* `tox.ini` has been updated to align with the new Makefile targets and to run a comprehensive suite of checks for the `py311` environment, mirroring the full CI validation process.
|
|
44
|
+
* **API Schema:** The OpenAPI `schema.yaml` has been improved with stricter validation (`additionalProperties: false`), better descriptions, response links, and more detailed examples.
|
|
45
|
+
* **Source Code:** Refactored async handling in `src/bijux_cli/api.py` and improved type safety across multiple modules by removing `pyright: ignore` comments and adding explicit `cast` calls where necessary.
|
|
46
|
+
|
|
47
|
+
### Fixed
|
|
48
|
+
* **Type Safety:** Resolved numerous previously ignored type errors throughout the codebase and test suite.
|
|
49
|
+
* **API Endpoint Logic:** Corrected the item update logic in `src/bijux_cli/httpapi.py` by removing a faulty check for duplicate names that was causing incorrect 409 Conflict errors.
|
|
50
|
+
* **Test Suite:** Improved the stability and correctness of E2E tests by enhancing golden file comparisons and fixing brittle assertions.
|
|
51
|
+
|
|
52
|
+
[Back to top](#top)
|
|
53
|
+
|
|
54
|
+
|
|
26
55
|
<a id="v0-1-1"></a>
|
|
56
|
+
|
|
27
57
|
## [0.1.1] – 2025-08-14
|
|
28
58
|
|
|
29
59
|
### Added
|
|
@@ -62,6 +92,7 @@ This project adheres to [Semantic Versioning](https://semver.org) and the
|
|
|
62
92
|
---
|
|
63
93
|
|
|
64
94
|
<a id="v0-1-0"></a>
|
|
95
|
+
|
|
65
96
|
## [0.1.0] – 2025-08-12
|
|
66
97
|
|
|
67
98
|
### Added
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bijux-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Lean, plug-in-driven CLI kernel
|
|
5
5
|
Project-URL: Homepage, https://github.com/bijux/bijux-cli
|
|
6
6
|
Project-URL: Repository, https://github.com/bijux/bijux-cli.git
|
|
7
7
|
Project-URL: Bug Tracker, https://github.com/bijux/bijux-cli/issues
|
|
8
8
|
Project-URL: Documentation, https://bijux.github.io/bijux-cli/
|
|
9
|
-
Project-URL: Changelog, https://bijux.github.io/bijux-cli/changelog
|
|
9
|
+
Project-URL: Changelog, https://bijux.github.io/bijux-cli/changelog
|
|
10
10
|
Project-URL: Discussions, https://github.com/bijux/bijux-cli/discussions
|
|
11
11
|
Author-email: Bijan Mousavi <mousavi.bijan@gmail.com>
|
|
12
12
|
License: MIT License
|
|
@@ -72,7 +72,7 @@ Requires-Dist: anyio<5.0,>=4.4.0; extra == 'dev'
|
|
|
72
72
|
Requires-Dist: bandit<2.0,>=1.7.10; extra == 'dev'
|
|
73
73
|
Requires-Dist: build<2.0,>=1.0.3; extra == 'dev'
|
|
74
74
|
Requires-Dist: codespell<3.0,>=2.3.0; extra == 'dev'
|
|
75
|
-
Requires-Dist: commitizen<
|
|
75
|
+
Requires-Dist: commitizen<5.0,>=4.0.0; extra == 'dev'
|
|
76
76
|
Requires-Dist: cosmic-ray>=4.0.0; extra == 'dev'
|
|
77
77
|
Requires-Dist: deptry<1.0,>=0.10.0; extra == 'dev'
|
|
78
78
|
Requires-Dist: hypothesis-jsonschema<1.0,>=0.23.0; extra == 'dev'
|
|
@@ -89,13 +89,13 @@ Requires-Dist: mkdocs-minify-plugin<1.0,>=0.7; extra == 'dev'
|
|
|
89
89
|
Requires-Dist: mkdocs-redirects<2.0,>=1.2; extra == 'dev'
|
|
90
90
|
Requires-Dist: mkdocs<2.0,>=1.6.1; extra == 'dev'
|
|
91
91
|
Requires-Dist: mkdocstrings[python]<1.0,>=0.26.1; extra == 'dev'
|
|
92
|
-
Requires-Dist: mutmut
|
|
92
|
+
Requires-Dist: mutmut>=3.0; extra == 'dev'
|
|
93
93
|
Requires-Dist: mypy<2.0,>=1.11.2; extra == 'dev'
|
|
94
94
|
Requires-Dist: openapi-spec-validator<1.0,>=0.7.1; extra == 'dev'
|
|
95
95
|
Requires-Dist: pexpect<5.0,>=4.8.0; extra == 'dev'
|
|
96
96
|
Requires-Dist: pip-audit<3.0,>=2.7.3; extra == 'dev'
|
|
97
|
-
Requires-Dist: prance
|
|
98
|
-
Requires-Dist: pre-commit
|
|
97
|
+
Requires-Dist: prance>=25.4.0.0; extra == 'dev'
|
|
98
|
+
Requires-Dist: pre-commit>=4.0; extra == 'dev'
|
|
99
99
|
Requires-Dist: pydocstyle<7.0,>=6.2.1; extra == 'dev'
|
|
100
100
|
Requires-Dist: pyright<2.0,>=1.1.320; extra == 'dev'
|
|
101
101
|
Requires-Dist: pytest-asyncio<2.0,>=1.0.0; extra == 'dev'
|
|
@@ -105,14 +105,15 @@ Requires-Dist: pytest-rerunfailures<14.0,>=13.0; extra == 'dev'
|
|
|
105
105
|
Requires-Dist: pytest-timeout<3.0,>=2.4.0; extra == 'dev'
|
|
106
106
|
Requires-Dist: pytest<9.0,>=8.4.1; extra == 'dev'
|
|
107
107
|
Requires-Dist: pytype>=2024.10.11; extra == 'dev'
|
|
108
|
-
Requires-Dist: radon
|
|
108
|
+
Requires-Dist: radon>=6.0.0; extra == 'dev'
|
|
109
109
|
Requires-Dist: reuse<6.0.0,>=4.0.0; extra == 'dev'
|
|
110
110
|
Requires-Dist: ruff<1.0,>=0.6.8; extra == 'dev'
|
|
111
|
-
Requires-Dist: schemathesis<
|
|
111
|
+
Requires-Dist: schemathesis<5.0,>=4.0; extra == 'dev'
|
|
112
112
|
Requires-Dist: towncrier<25.0,>=23.0; extra == 'dev'
|
|
113
113
|
Requires-Dist: twine<7.0,>=6.1.0; extra == 'dev'
|
|
114
114
|
Requires-Dist: types-colorama<1.0,>=0.0.14; extra == 'dev'
|
|
115
115
|
Requires-Dist: types-orjson<4.0,>=3.6.0; extra == 'dev'
|
|
116
|
+
Requires-Dist: types-pexpect<5.0,>4.9.0; extra == 'dev'
|
|
116
117
|
Requires-Dist: types-psutil<7.0,>=6.0.0; extra == 'dev'
|
|
117
118
|
Requires-Dist: types-pyyaml<7.0,>=6.0.12; extra == 'dev'
|
|
118
119
|
Requires-Dist: typing-extensions<5.0,>=4.5.0; extra == 'dev'
|
|
@@ -132,8 +133,10 @@ Description-Content-Type: text/markdown
|
|
|
132
133
|
[](https://github.com/bijux/bijux-cli/actions)
|
|
133
134
|
|
|
134
135
|
> **At a glance:** Plugin-driven • deterministic flags • DI for testability • REPL • structured JSON/YAML
|
|
135
|
-
> **Quality:** **2,600+ tests** across layers with **98%+ coverage
|
|
136
|
-
|
|
136
|
+
> **Quality:** **2,600+ tests** across layers with **98%+ coverage** (see
|
|
137
|
+
> [Test Artifacts](artifacts/test.md) and
|
|
138
|
+
> <a href="artifacts/test/htmlcov/index.html" target="_blank" rel="noopener">HTML coverage</a>).
|
|
139
|
+
> Multi-version CI. Docs build enforced. No telemetry.
|
|
137
140
|
---
|
|
138
141
|
|
|
139
142
|
## Table of Contents
|
|
@@ -430,6 +433,11 @@ make test-unit # unit tests only
|
|
|
430
433
|
make test-e2e # end-to-end tests only
|
|
431
434
|
```
|
|
432
435
|
|
|
436
|
+
**Artifacts:** [Test Artifacts](artifacts/test.md) ·
|
|
437
|
+
[JUnit report](artifacts/test.md#junit-xml) ·
|
|
438
|
+
<a href="artifacts/test/htmlcov/index.html" target="_blank" rel="noopener">HTML coverage report</a>
|
|
439
|
+
|
|
440
|
+
|
|
433
441
|
[Back to top](#top)
|
|
434
442
|
|
|
435
443
|
---
|
|
@@ -482,6 +490,9 @@ Track progress and suggest features via [Issues](https://github.com/bijux/bijux-
|
|
|
482
490
|
* **Security** (private reports): [https://github.com/bijux/bijux-cli/security/advisories/new](https://github.com/bijux/bijux-cli/security/advisories/new)
|
|
483
491
|
* **Tests:** See **[TESTS.md](TESTS.md)**
|
|
484
492
|
* **Project Tree:** See **[PROJECT\_TREE.md](PROJECT_TREE.md)**
|
|
493
|
+
* **Artifacts:** Browse all reports & logs — [index](artifacts/index.md)
|
|
494
|
+
· [Tests](artifacts/test.md) · [Lint](artifacts/lint.md) · [Quality](artifacts/quality.md)
|
|
495
|
+
· [Security](artifacts/security.md) · [SBOM](artifacts/sbom.md) · [API](artifacts/api.md) · [Citation](artifacts/citation.md)
|
|
485
496
|
|
|
486
497
|
*When filing issues, include `--debug` output where possible.*
|
|
487
498
|
|
|
@@ -544,7 +555,37 @@ This project adheres to [Semantic Versioning](https://semver.org) and the
|
|
|
544
555
|
|
|
545
556
|
<!-- towncrier start -->
|
|
546
557
|
|
|
558
|
+
<a id="v0-1-2"></a>
|
|
559
|
+
## [0.1.2] – 2025-08-17
|
|
560
|
+
|
|
561
|
+
### Added
|
|
562
|
+
* **New Documentation Engine:** Introduced a new modular documentation builder in `scripts/docs_builder/` that replaces the previous helper script.
|
|
563
|
+
* **CI Artifact Pages:** The documentation site now automatically generates detailed pages for all CI artifacts, including tests, linting, code quality, security, API tests, SBOMs, and citation files.
|
|
564
|
+
* **Release Evidence:** The `publish` workflow now downloads all artifacts from the `CI` run, packages them as `evidence/*.tar.gz` bundles, and attaches them to the GitHub Release for traceability.
|
|
565
|
+
* **Build Hygiene:** Makefiles now enforce a "hygienic" build process, ensuring all temporary files, caches, and build outputs are stored under the `artifacts/` directory to prevent root directory pollution.
|
|
566
|
+
|
|
567
|
+
### Changed
|
|
568
|
+
* **CI/CD Overhaul:**
|
|
569
|
+
* The `ci.yml` workflow now uploads each category of artifact separately for better organization and downstream consumption.
|
|
570
|
+
* The `docs.yml` workflow now waits for the main `CI` run to complete, downloads all artifacts, and uses them to build a data-rich documentation site.
|
|
571
|
+
* The `publish.yml` workflow has been streamlined and made more robust, removing the optional "wait for docs" step and improving tag detection.
|
|
572
|
+
* **Documentation Content:** All top-level Markdown documents (`README.md`, `USAGE.md`, `TESTS.md`, `TOOLING.md`, `CONTRIBUTING.md`, etc.) have been significantly rewritten and expanded with tables of contents, `back-to-top` links, and cross-references to the new artifact pages.
|
|
573
|
+
* **Build System:**
|
|
574
|
+
* All `Makefile` modules have been refactored to use the new hygienic `artifacts/` directory structure for outputs and caches.
|
|
575
|
+
* `tox.ini` has been updated to align with the new Makefile targets and to run a comprehensive suite of checks for the `py311` environment, mirroring the full CI validation process.
|
|
576
|
+
* **API Schema:** The OpenAPI `schema.yaml` has been improved with stricter validation (`additionalProperties: false`), better descriptions, response links, and more detailed examples.
|
|
577
|
+
* **Source Code:** Refactored async handling in `src/bijux_cli/api.py` and improved type safety across multiple modules by removing `pyright: ignore` comments and adding explicit `cast` calls where necessary.
|
|
578
|
+
|
|
579
|
+
### Fixed
|
|
580
|
+
* **Type Safety:** Resolved numerous previously ignored type errors throughout the codebase and test suite.
|
|
581
|
+
* **API Endpoint Logic:** Corrected the item update logic in `src/bijux_cli/httpapi.py` by removing a faulty check for duplicate names that was causing incorrect 409 Conflict errors.
|
|
582
|
+
* **Test Suite:** Improved the stability and correctness of E2E tests by enhancing golden file comparisons and fixing brittle assertions.
|
|
583
|
+
|
|
584
|
+
[Back to top](#top)
|
|
585
|
+
|
|
586
|
+
|
|
547
587
|
<a id="v0-1-1"></a>
|
|
588
|
+
|
|
548
589
|
## [0.1.1] – 2025-08-14
|
|
549
590
|
|
|
550
591
|
### Added
|
|
@@ -583,6 +624,7 @@ This project adheres to [Semantic Versioning](https://semver.org) and the
|
|
|
583
624
|
---
|
|
584
625
|
|
|
585
626
|
<a id="v0-1-0"></a>
|
|
627
|
+
|
|
586
628
|
## [0.1.0] – 2025-08-12
|
|
587
629
|
|
|
588
630
|
### Added
|
|
@@ -10,8 +10,10 @@
|
|
|
10
10
|
[](https://github.com/bijux/bijux-cli/actions)
|
|
11
11
|
|
|
12
12
|
> **At a glance:** Plugin-driven • deterministic flags • DI for testability • REPL • structured JSON/YAML
|
|
13
|
-
> **Quality:** **2,600+ tests** across layers with **98%+ coverage
|
|
14
|
-
|
|
13
|
+
> **Quality:** **2,600+ tests** across layers with **98%+ coverage** (see
|
|
14
|
+
> [Test Artifacts](artifacts/test.md) and
|
|
15
|
+
> <a href="artifacts/test/htmlcov/index.html" target="_blank" rel="noopener">HTML coverage</a>).
|
|
16
|
+
> Multi-version CI. Docs build enforced. No telemetry.
|
|
15
17
|
---
|
|
16
18
|
|
|
17
19
|
## Table of Contents
|
|
@@ -308,6 +310,11 @@ make test-unit # unit tests only
|
|
|
308
310
|
make test-e2e # end-to-end tests only
|
|
309
311
|
```
|
|
310
312
|
|
|
313
|
+
**Artifacts:** [Test Artifacts](artifacts/test.md) ·
|
|
314
|
+
[JUnit report](artifacts/test.md#junit-xml) ·
|
|
315
|
+
<a href="artifacts/test/htmlcov/index.html" target="_blank" rel="noopener">HTML coverage report</a>
|
|
316
|
+
|
|
317
|
+
|
|
311
318
|
[Back to top](#top)
|
|
312
319
|
|
|
313
320
|
---
|
|
@@ -360,6 +367,9 @@ Track progress and suggest features via [Issues](https://github.com/bijux/bijux-
|
|
|
360
367
|
* **Security** (private reports): [https://github.com/bijux/bijux-cli/security/advisories/new](https://github.com/bijux/bijux-cli/security/advisories/new)
|
|
361
368
|
* **Tests:** See **[TESTS.md](TESTS.md)**
|
|
362
369
|
* **Project Tree:** See **[PROJECT\_TREE.md](PROJECT_TREE.md)**
|
|
370
|
+
* **Artifacts:** Browse all reports & logs — [index](artifacts/index.md)
|
|
371
|
+
· [Tests](artifacts/test.md) · [Lint](artifacts/lint.md) · [Quality](artifacts/quality.md)
|
|
372
|
+
· [Security](artifacts/security.md) · [SBOM](artifacts/sbom.md) · [API](artifacts/api.md) · [Citation](artifacts/citation.md)
|
|
363
373
|
|
|
364
374
|
*When filing issues, include `--debug` output where possible.*
|
|
365
375
|
|
|
@@ -66,6 +66,7 @@ dev = [
|
|
|
66
66
|
"types-colorama>=0.0.14,<1.0",
|
|
67
67
|
"types-psutil>=6.0.0,<7.0",
|
|
68
68
|
"typing-extensions>=4.5.0,<5.0",
|
|
69
|
+
"types-pexpect>4.9.0,<5.0",
|
|
69
70
|
|
|
70
71
|
"pytest>=8.4.1,<9.0",
|
|
71
72
|
"pytest-cov>=6.2.1,<7.0",
|
|
@@ -83,7 +84,7 @@ dev = [
|
|
|
83
84
|
"codespell>=2.3.0,<3.0",
|
|
84
85
|
"pyright>=1.1.320,<2.0",
|
|
85
86
|
"pydocstyle>=6.2.1,<7.0",
|
|
86
|
-
"radon>=
|
|
87
|
+
"radon>=6.0.0",
|
|
87
88
|
|
|
88
89
|
"vulture>=2.7,<3.0",
|
|
89
90
|
"deptry>=0.10.0,<1.0",
|
|
@@ -92,7 +93,7 @@ dev = [
|
|
|
92
93
|
"build>=1.0.3,<2.0",
|
|
93
94
|
"bandit>=1.7.10,<2.0",
|
|
94
95
|
"pip-audit>=2.7.3,<3.0",
|
|
95
|
-
"commitizen>=
|
|
96
|
+
"commitizen>=4.0.0,<5.0",
|
|
96
97
|
|
|
97
98
|
"interrogate>=1.7.0,<2.0",
|
|
98
99
|
"mkdocs>=1.6.1,<2.0",
|
|
@@ -107,17 +108,17 @@ dev = [
|
|
|
107
108
|
"mkdocs-glightbox>=0.3,<1.0",
|
|
108
109
|
"mkdocs-material[imaging]>=9.5.39,<10.0",
|
|
109
110
|
|
|
110
|
-
"prance>=
|
|
111
|
+
"prance>=25.4.0.0",
|
|
111
112
|
"openapi-spec-validator>=0.7.1,<1.0",
|
|
112
|
-
"schemathesis>=
|
|
113
|
+
"schemathesis>=4.0,<5.0",
|
|
113
114
|
"anyio>=4.4.0,<5.0",
|
|
114
115
|
"uvicorn>=0.30.1,<1.0",
|
|
115
116
|
|
|
116
|
-
"pre-commit>=
|
|
117
|
+
"pre-commit>=4.0",
|
|
117
118
|
"twine>=6.1.0,<7.0",
|
|
118
119
|
"towncrier>=23.0,<25.0",
|
|
119
120
|
|
|
120
|
-
"mutmut>=
|
|
121
|
+
"mutmut>=3.0",
|
|
121
122
|
"cosmic-ray>=4.0.0",
|
|
122
123
|
]
|
|
123
124
|
|
|
@@ -129,7 +130,7 @@ bijux = "bijux_cli.__main__:main"
|
|
|
129
130
|
"Repository" = "https://github.com/bijux/bijux-cli.git"
|
|
130
131
|
"Bug Tracker" = "https://github.com/bijux/bijux-cli/issues"
|
|
131
132
|
"Documentation" = "https://bijux.github.io/bijux-cli/"
|
|
132
|
-
"Changelog" = "https://bijux.github.io/bijux-cli/changelog
|
|
133
|
+
"Changelog" = "https://bijux.github.io/bijux-cli/changelog"
|
|
133
134
|
"Discussions" = "https://github.com/bijux/bijux-cli/discussions"
|
|
134
135
|
|
|
135
136
|
# --8<-- [start:bijux]
|
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
# Scripts
|
|
2
|
-
<a id="top"></a>
|
|
3
|
-
|
|
4
|
-
A small collection of **purpose-built developer utilities** for code hygiene, documentation automation, and release workflow integration.
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## Table of Contents
|
|
9
|
-
|
|
10
|
-
- [Directory](#directory)
|
|
11
|
-
- [Comment Harvester (`helper_comments.py`)](#comment-harvester)
|
|
12
|
-
- [MkDocs API & Navigation Generator (`helper_mkdocs.py`)](#mkdocs-api--navigation-generator)
|
|
13
|
-
- [Commit Hook – Changelog Fragment Generator (`git-hooks/prepare-commit-msg`)](#commit-hook--changelog-fragment-generator)
|
|
14
|
-
- [Towncrier Guard (`check-towncrier-fragment.sh`)](#towncrier-guard)
|
|
15
|
-
- [Workflow Philosophy](#workflow-philosophy)
|
|
16
|
-
|
|
17
|
-
[Back to top](#top)
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
<a id="directory"></a>
|
|
22
|
-
|
|
23
|
-
## Directory
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
scripts/
|
|
28
|
-
├── README.md
|
|
29
|
-
├── check-towncrier-fragment.sh
|
|
30
|
-
├── git-hooks/
|
|
31
|
-
│ └── prepare-commit-msg
|
|
32
|
-
├── helper\_comments.py
|
|
33
|
-
└── helper\_mkdocs.py
|
|
34
|
-
|
|
35
|
-
````
|
|
36
|
-
|
|
37
|
-
[Back to top](#top)
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
<a id="comment-harvester"></a>
|
|
42
|
-
|
|
43
|
-
## Comment Harvester (`helper_comments.py`)
|
|
44
|
-
|
|
45
|
-
Scans a codebase for **all lines containing `#`** (including `# noqa`, `# type: ignore`, and TODO/FIXME notes).
|
|
46
|
-
|
|
47
|
-
**Why?**
|
|
48
|
-
Build a **baseline** for linter/typing ignore rules and periodically triage technical debt.
|
|
49
|
-
|
|
50
|
-
**Usage**
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
python scripts/helper_comments.py src -o comments.txt -e .py .pyi
|
|
54
|
-
````
|
|
55
|
-
|
|
56
|
-
**Sample output**
|
|
57
|
-
|
|
58
|
-
```
|
|
59
|
-
src/example.py
|
|
60
|
-
12: def foo(): # noqa: E999
|
|
61
|
-
47: # TODO: refactor
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
**Notes**
|
|
65
|
-
|
|
66
|
-
* Any `#` is treated as a comment (includes shebangs and inline `#` inside strings).
|
|
67
|
-
* Skips unreadable files.
|
|
68
|
-
* Respects `--ext` filter.
|
|
69
|
-
* Prints a summary path: `Violation lines written to <output>`.
|
|
70
|
-
|
|
71
|
-
[Back to top](#top)
|
|
72
|
-
|
|
73
|
-
---
|
|
74
|
-
|
|
75
|
-
<a id="mkdocs-api--navigation-generator"></a>
|
|
76
|
-
|
|
77
|
-
## MkDocs API & Navigation Generator (`helper_mkdocs.py`)
|
|
78
|
-
|
|
79
|
-
Runs via **mkdocs-gen-files** during MkDocs builds to keep docs in sync.
|
|
80
|
-
|
|
81
|
-
**What it does**
|
|
82
|
-
|
|
83
|
-
1. Copies root docs into the site with safe link rewrites:
|
|
84
|
-
|
|
85
|
-
* `README.md` → `docs/index.md`
|
|
86
|
-
* `USAGE.md` → `docs/usage.md`
|
|
87
|
-
* `TESTS.md` → `docs/tests.md`
|
|
88
|
-
* `PROJECT_TREE.md` → `docs/project_tree.md`
|
|
89
|
-
2. Ensures a hidden top anchor on copied pages.
|
|
90
|
-
3. Generates **API reference** pages for `src/bijux_cli/**.py` (mkdocstrings).
|
|
91
|
-
4. Creates per-package `reference/**/index.md`.
|
|
92
|
-
5. Builds `nav.md` with **Home / User Guide / Project Tree / Tests / API / Changelog / ADRs / Community**.
|
|
93
|
-
|
|
94
|
-
**MkDocs config snippet**
|
|
95
|
-
|
|
96
|
-
```yaml
|
|
97
|
-
plugins:
|
|
98
|
-
- gen-files:
|
|
99
|
-
scripts:
|
|
100
|
-
- scripts/helper_mkdocs.py
|
|
101
|
-
- literate-nav
|
|
102
|
-
- mkdocstrings
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
**Local preview**
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
mkdocs serve # preview
|
|
109
|
-
mkdocs build # static site
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
[Back to top](#top)
|
|
113
|
-
|
|
114
|
-
---
|
|
115
|
-
|
|
116
|
-
<a id="commit-hook--changelog-fragment-generator"></a>
|
|
117
|
-
|
|
118
|
-
## Commit Hook – Changelog Fragment Generator (`git-hooks/prepare-commit-msg`)
|
|
119
|
-
|
|
120
|
-
A **Git `prepare-commit-msg` hook** that auto-creates a Towncrier fragment from a **Conventional Commit** subject.
|
|
121
|
-
|
|
122
|
-
**Example**
|
|
123
|
-
|
|
124
|
-
```
|
|
125
|
-
feat(api): add streaming support
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
Produces (timestamped):
|
|
129
|
-
|
|
130
|
-
```
|
|
131
|
-
changelog.d/1691940245.feature.md
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
**Type mapping**
|
|
135
|
-
|
|
136
|
-
* `feat` → `feature`
|
|
137
|
-
* `fix` → `bugfix`
|
|
138
|
-
* `refactor`/`docs`/`style`/`chore` → `misc`
|
|
139
|
-
* others → `misc`
|
|
140
|
-
|
|
141
|
-
**Install**
|
|
142
|
-
|
|
143
|
-
```bash
|
|
144
|
-
# from repo root
|
|
145
|
-
chmod +x scripts/git-hooks/prepare-commit-msg
|
|
146
|
-
ln -sf ../../scripts/git-hooks/prepare-commit-msg .git/hooks/prepare-commit-msg
|
|
147
|
-
make bootstrap # installs hooks idempotently
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
[Back to top](#top)
|
|
151
|
-
|
|
152
|
-
---
|
|
153
|
-
|
|
154
|
-
<a id="towncrier-guard"></a>
|
|
155
|
-
|
|
156
|
-
## Towncrier Guard (`check-towncrier-fragment.sh`)
|
|
157
|
-
|
|
158
|
-
Blocks commits of types that **should** have a Towncrier fragment if none is staged.
|
|
159
|
-
|
|
160
|
-
**Behavior**
|
|
161
|
-
|
|
162
|
-
* Skips `Merge`, `Revert`, `fixup!`, `squash!`, and `chore: release` subjects.
|
|
163
|
-
* Looks for staged `changelog.d/*.md`.
|
|
164
|
-
* Enforces for common types: `feat`, `fix`, `refactor`, `perf`, `docs`.
|
|
165
|
-
* Allow override with `TOWNCRIER_ALLOW_SKIP=1`.
|
|
166
|
-
|
|
167
|
-
**Wire it up (pre-commit, commit-msg stage)**
|
|
168
|
-
|
|
169
|
-
```yaml
|
|
170
|
-
# .pre-commit-config.yaml
|
|
171
|
-
repos:
|
|
172
|
-
- repo: local
|
|
173
|
-
hooks:
|
|
174
|
-
- id: towncrier-guard
|
|
175
|
-
name: Towncrier fragment required
|
|
176
|
-
entry: scripts/check-towncrier-fragment.sh
|
|
177
|
-
language: system
|
|
178
|
-
stages: [commit-msg]
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
Alternatively, call it in CI before merge.
|
|
182
|
-
|
|
183
|
-
[Back to top](#top)
|
|
184
|
-
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
<a id="workflow-philosophy"></a>
|
|
188
|
-
|
|
189
|
-
## Workflow Philosophy
|
|
190
|
-
|
|
191
|
-
* **Automation first** — anything repetitive belongs in a script or hook.
|
|
192
|
-
* **Debt visibility** — helper comments are tracked, triaged, and expire.
|
|
193
|
-
* **Docs in sync** — API/navigation are regenerated automatically at build time.
|
|
194
|
-
* **Release-ready commits** — hooks ensure changelog accuracy.
|
|
195
|
-
|
|
196
|
-
[Back to top](#top)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|