diff --git a/README.md b/README.md index 6e90576..d71a06a 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,38 @@ The generated plist configures the script to: - Keep alive (restart if it exits) - Log stdout/stderr to `~/Library/Logs/mcquack..{out,err}.log` +## Development + +mcquack uses [uv](https://github.com/astral-sh/uv) for dependency management. Thanks to the +uv shebang at the top of `mcquack.py`, you can always run the script directly without any +setup: + +```bash +./mcquack.py list +``` + +This works for users and developers alike—no virtual environment activation or `python` +command needed. uv handles everything automatically. + +### Running Tests + +```bash +uv run pytest +``` + +### Virtual Environment (Optional) + +If you prefer working in a virtual environment (e.g., for IDE support or running +`python mcquack.py` directly), you can create and activate one: + +```bash +uv venv +source .venv/bin/activate +``` + +After activation, `python mcquack.py` will work as expected. But again, `./mcquack.py` +always works without this step. + ## License MIT diff --git a/mcquack.py b/mcquack.py index 76bf347..dd7c48b 100755 --- a/mcquack.py +++ b/mcquack.py @@ -272,5 +272,48 @@ def delete( typer.echo(f"Deleted: {plist_path}") +@app.command(hidden=True) +def quack() -> None: + """Quack!""" + art = r""" + ___ _ _____ _ +| \ _ _ __| |_|_ _|_ _| |___ ___ +| |) | || / _| / / | |/ _` | / -_|_-< +|___/ \_,_\__|_\_\ |_|\__,_|_\___/__/ + + '' .``,l" + "[}ll1)f/1I + !__YpQm+:]", + ~>. ,i,i `!>~1cXUXvcLbccL_{1! . +YM) + :U1. . + ";|XmkodUf{?_?{xCCZw\[{[~>">{}{]{i + `>]11[][[)UmYrz+fx1}{{}<_]{{{{{?. + "I<___]+^Qo**h)}}]}{{}1+}1{}{{{< + `+}{{{{}]<|8Mkou?{{{{{}1?,~][[[?l + ;{{}}}[[]?v0r?|{{{{{{{1?` `^` + ![}{{}[]i .?{{[]}}~' + .,;;,` i]_fC|> + "{vxfXQcv{, + .>/zJJJCUXXXJz] + '?vYCCUXcvvvcXJJU> + !XJJYv\?>l::,I[Yu' + )C/l.