https://github.com/notgnoshi/herostratus
An ancient Greek known for seeking fame through crime and destruction. Also a Git repository achievements engine.
https://github.com/notgnoshi/herostratus
achievements git git-achievements measure-what-matters sarcasm
Last synced: 2 months ago
JSON representation
An ancient Greek known for seeking fame through crime and destruction. Also a Git repository achievements engine.
- Host: GitHub
- URL: https://github.com/notgnoshi/herostratus
- Owner: Notgnoshi
- License: mit
- Created: 2024-03-09T14:51:38.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2026-04-27T23:51:56.000Z (2 months ago)
- Last Synced: 2026-04-28T01:24:25.894Z (2 months ago)
- Topics: achievements, git, git-achievements, measure-what-matters, sarcasm
- Language: Rust
- Homepage:
- Size: 893 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Herostratus



**Herostratus** _n._ **1.** An [ancient Greek](https://en.wikipedia.org/wiki/Herostratus) known for
seeking fame through crime and destruction. **2.** A Git repository achievements engine.
Inspired by .
## Usage
### Trying it out
```sh
git clone git@github.com:Notgnoshi/herostratus.git
cd herostratus
cargo run --release -- check .
cargo run --release -- check . origin/test/fixup
```
The `check` subcommand is stateless. It reads/writes no configuration, and can not fetch from the
upstream remote. Read on for stateful configuration that enables running and re-running Herostratus
on a group of repositories.
> [!TIP]
>
> `--release` builds are recommended for significantly better performance!
### Setting it up
The following example configures Herostratus to run on its own
[test/simple](https://github.com/Notgnoshi/herostratus/tree/test/simple) and
[test/fixup](https://github.com/Notgnoshi/herostratus/tree/test/fixup) branches.
```sh
# Configure Herostratus to track two branches of its own repository
$ herostratus add git@github.com:Notgnoshi/herostratus.git test/simple
$ herostratus add git@github.com:Notgnoshi/herostratus.git test/fixup
# Check all configured branches for achievements
$ herostratus check-all
# Generate a static HTML site with the granted achievements
$ herostratus render
$ xdg-open ./public/index.html
```
These commands write their configuration and clone Git repositories to `~/.local/share/herostratus/`
by default. See `herostratus --help` for more options.
### What achievements are there?
See [RULES.md](RULES.md) for a list of achievements.
## Development
See [CONTRIBUTING.md](CONTRIBUTING.md) and [quickstart.md](docs/developer/quickstart.md), as well as
the [ARCHITECTURE.md](ARCHITECTURE.md).
## Benchmarks
| Name | # Commits | # Achievements | Time | Time per commit |
| ----------- | --------- | -------------- | ------- | --------------- |
| git | 80667 | 413 | 36.71s | 455.07µs |
| herostratus | 492 | 4 | 81.67ms | 165.99µs |