Add quack easter egg and development docs
Add a hidden 'quack' command that displays DuckTales ASCII art of Launchpad McQuack. Also document the development workflow in README, including how to run tests with uv and the optional venv setup. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
aaaf9dac20
commit
34e63c41c4
2 changed files with 75 additions and 0 deletions
32
README.md
32
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.<scriptname>.{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
|
||||
|
|
|
|||
43
mcquack.py
43
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<nxnav(,:" .
|
||||
;/Zj, ::'::[trcx(i<-" `i``umv~'
|
||||
[do| .":]z]<<[; :fzLwddmw_
|
||||
cWr xxdvzr\fr\_:-~' "QOL0b\;
|
||||
X*> `!>~1cXUXvcLbccL_{1! . +YM)
|
||||
:U1. <fUmpZUxXmphkqwv-]?+ .i~-}>.
|
||||
";|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. <n,.
|
||||
`/\. ;{+
|
||||
<{~ ![}[i:"^`^`
|
||||
'"I+}}[I .-{}}}}[[[}-`
|
||||
;--][[}{}}}l 'i][}}}[]]+^
|
||||
;[[[}}}}[_, .";II" .
|
||||
.```:!!;^
|
||||
|
||||
"If we're not back by dawn... call the press!"
|
||||
- Launchpad McQuack
|
||||
"""
|
||||
typer.echo(art)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue