Instead of a CLI for editing plist arguments programmatically, the edit
command now opens the plist file directly in the user's $EDITOR (falls
back to vi). This provides more flexibility for editing any plist field.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Provides build/test commands, architecture overview, and development
workflow notes including green-red-green testing cycle.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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>
Set up pre-commit with basic hooks (trailing whitespace, end-of-file,
large files) and ty for type checking via uvx. Fix type error in test
where root.find() could return None.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add TestArgumentSeparator class with 8 tests verifying that script
arguments must come after '--' separator
- Update create and edit command docstrings with examples showing
correct usage of '--' separator
- Update argument help text to indicate "(must come after '--')"
- Add "Passing Arguments to Your Script" section to README
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Set up mcquack as a proper uv package with flat layout (no src/ directory).
Uses hatchling build backend to support single-file module structure.
Added pytest as dev dependency with fixtures for testing against
temporary directories instead of actual macOS LaunchAgent paths.
- Rename list() to list_agents() to avoid shadowing builtin (Python 3.14 compat)
- Add mock_dirs fixture that monkeypatches LAUNCH_AGENTS_DIR and LOGS_DIR
- Add mock_script and mock_launchctl fixtures
- 26 tests covering list, create, edit, show, delete commands
- Parameterized tests for argument handling
- XML validation tests independent of plistlib
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>