Metadata-Version: 2.4
Name: cullen
Version: 0.1.0
Author: Igor Djachenko
License-Expression: MIT
Project-URL: Homepage, https://github.com/djachenko/cullen-cli
Project-URL: Source, https://github.com/djachenko/cullen-cli
Project-URL: Documentation, https://github.com/djachenko/cullen-cli#readme
Project-URL: Issues, https://github.com/djachenko/cullen-cli/issues
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: justin_utils
Requires-Dist: typer
Requires-Dist: rich
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: ruff<0.16,>=0.15; extra == "test"
Requires-Dist: mypy; extra == "test"
Provides-Extra: release
Requires-Dist: build>=1.5; extra == "release"
Requires-Dist: python-semantic-release>=10.6; extra == "release"

# cullen-cli

Applies photo culling decisions made in the Cullen iOS app to the source files on disk.

## Install

```
pipx install cullen   # command
pip install cullen    # library: from cullen import DecisionsFile, load
```

## Commands

```
cullen cull [PATHS...] [--file culled.json]   # sort sources into category folders
cullen flop PATH [FILE] [--dry-run]           # move category folders back up
cullen relocate PATH [ROOT]                   # find exported decision files and put them into their photosets
```

## `culled.json`

The contract between the app and the CLI. Lives in the photoset root.

```json
{
  "name": "26.03.22.fen_init_lab",
  "decisions": {
    "good": ["ZSC_2541", "ZSC_2542"],
    "bad": ["ZSC_2543"]
  }
}
```

Categories are arbitrary keys; values are file stems. Every file whose stem is listed moves into the folder named after its category, next to where it was found.
