Metadata-Version: 2.4
Name: esys-gitlog
Version: 0.1.0
Summary: Python implementation of git elog
Author: Project maintainers
License-Expression: MIT
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: typer>=0.12
Requires-Dist: rich>=13.0
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: pytest-cov>=5.0; extra == "dev"
Requires-Dist: ruff>=0.8; extra == "dev"
Requires-Dist: build>=1.0; extra == "dev"
Requires-Dist: twine>=5.0; extra == "dev"
Requires-Dist: pre-commit>=3.0; extra == "dev"
Provides-Extra: standalone
Requires-Dist: pyinstaller>=6.0; extra == "standalone"
Dynamic: license-file

# esys-gitlog

Python implementation of `git elog`. The distribution name is `esys-gitlog`. The import package is `esys_gitlog`. The installed command is `git-elog`, so Git can run `git elog`.

The shared contract lives in `esys-gitlog-spec`. This repository carries that contract in Python. It does not define a second one.

## Smoke

```bash
pip install .
git elog --help
git elog --json
```

`--json` writes one QA report document to stdout. The first skeleton returns an empty `commits` array.

## Release / publish

Tag-driven CI publishes to GitLab Package Registry, TestPyPI, then PyPI (Deckicorn-style ADR-0009 flow). See [docs/release-pipeline.md](docs/release-pipeline.md).

```bash
python scripts/publish_release.py --dry-run --bump patch
python scripts/build_package.py
python scripts/smoke_install_package.py --dist dist --expected-version 0.1.0
```

## Preferences and profiles

Layered tool preferences (user → `.tools/esys/esys-gitlog/` → `.tools_local/…`)
and named profiles follow root SADR-0009 / SADR-0010 and contract CADR-0012.

```bash
git-elog --preferences path.json   # preference overlay
git-elog --profile acme            # built-in or profiles/acme.json
git-elog --config path/profile.json  # one-off profile file
git-elog preferences detect        # probe jira/gh/glab/git remote; write missing user keys
```

## Standalone binary (optional)

The primary install remains the wheel + `git-elog` console script. For a
frozen one-file binary (for example Cursor `esysGitlog.executablePath` without
a Python env on PATH):

```bash
python scripts/build_standalone.py
```

Output: `dist/git-elog.exe` (Windows) or `dist/git-elog` (Linux/macOS). Build on
the OS you need — this does not cross-compile.

- [Architecture](docs/architecture/overview.md)
- [ADRs](docs/adr/INDEX.md)
- [ASRs](docs/asr/INDEX.md)
- [Implementation plan](plans/implementation.md)
