Metadata-Version: 2.3
Name: esdbcat
Version: 0.1.1
Summary: EventStore CLI tool for reading and following streams
Project-URL: Homepage, https://github.com/funkwerk-mobility/esdbcat
Project-URL: Documentation, https://github.com/funkwerk-mobility/esdbcat#readme
Project-URL: Repository, https://github.com/funkwerk-mobility/esdbcat.git
Author-email: Mathis Beer <mathis_beer@funkwerk.com>
License: BSL-1.0
Keywords: cli,events,eventstore,streaming
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Boost Software License 1.0 (BSL-1.0)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Database
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Utilities
Requires-Python: >=3.8
Requires-Dist: click>=8.0.0
Requires-Dist: esdbclient>=0.4.0
Requires-Dist: protobuf>=5.0.0
Provides-Extra: test
Requires-Dist: pytest>=7.0.0; extra == 'test'
Requires-Dist: testcontainers>=3.7.0; extra == 'test'
Provides-Extra: validate
Requires-Dist: build>=1.0.0; extra == 'validate'
Requires-Dist: check-wheel-contents>=0.4.0; extra == 'validate'
Requires-Dist: mypy>=1.9.0; extra == 'validate'
Requires-Dist: ruff>=0.3.0; extra == 'validate'
Requires-Dist: twine>=4.0.0; extra == 'validate'
Description-Content-Type: text/markdown

# esdbcat

[![PyPI version](https://badge.fury.io/py/esdbcat.svg)](https://badge.fury.io/py/esdbcat)
[![License](https://img.shields.io/badge/License-BSL--1.0-blue.svg)](https://opensource.org/licenses/BSL-1.0)
[![Python Versions](https://img.shields.io/pypi/pyversions/esdbcat.svg)](https://pypi.org/project/esdbcat/)

A command-line tool for reading EventStore streams, inspired by kafkacat.

## AI Code Notice

This repository was near-entirely created by Claude 3.5 Sonnet. Good job Sonnet!

## Installation

```bash
pip install esdbcat
```

## Usage

Read all events from a stream:
```bash
esdbcat my-stream
```

The output will be JSON lines with event data and metadata (by default):
```json
{
  "data": {
    "message": "Hello World"
  },
  "metadata": {
    "id": "1234-5678-90ab-cdef",
    "type": "TestEvent",
    "stream": "my-stream"
  }
}
```

Follow a stream for new events:
```bash
esdbcat -f my-stream
```

Start reading from the end of the stream:
```bash
esdbcat -o end -f my-stream
```

Read only the last event:
```bash
esdbcat -o last my-stream
```

Exit after consuming 10 events:
```bash
esdbcat -c 10 my-stream
```

Read the special $all stream:
```bash
esdbcat $all
```

Quiet mode (suppress informational messages):
```bash
esdbcat -q my-stream
```

Verbose mode for debugging:
```bash
esdbcat -v my-stream
```

Connect to a specific EventStore instance:
```bash
esdbcat --host eventstore.example.com:2113 my-stream
```

Or use a full connection URL:
```bash
esdbcat --url "esdb://eventstore.example.com:2113?tls=false" my-stream
```

Read events without metadata:
```bash
esdbcat --no-metadata my-stream
```

Connect with authentication:
```bash
esdbcat --url "esdb://admin:changeit@localhost:2113?tls=false" my-stream
```
