Add CLAUDE.md for project guidance and development instructions
This commit is contained in:
parent
220818c8d1
commit
14d7553674
1 changed files with 87 additions and 0 deletions
87
CLAUDE.md
Normal file
87
CLAUDE.md
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
# CLAUDE.md
|
||||||
|
|
||||||
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||||
|
|
||||||
|
## Project Overview
|
||||||
|
|
||||||
|
This is a Python TUI (Terminal User Interface) application for managing `/etc/hosts` files. The application provides a two-pane interface built with Textual, allowing users to view, edit, activate/deactivate, and reorder hostname entries in their system's hosts file with proper sudo permission handling.
|
||||||
|
|
||||||
|
## Development Commands
|
||||||
|
|
||||||
|
### Package Management (uv)
|
||||||
|
- `uv sync` - Update project environment and install dependencies
|
||||||
|
- `uv add <package>` - Add new dependency to project
|
||||||
|
- `uv run <command>` - Run commands in the project environment
|
||||||
|
|
||||||
|
### Running the Application
|
||||||
|
- `uv run hosts` - Launch the TUI application (main entry point)
|
||||||
|
- `uv run python -m hosts.main` - Alternative way to run the application
|
||||||
|
|
||||||
|
### Testing
|
||||||
|
- `uv run pytest` - Run all tests
|
||||||
|
- `uv run pytest tests/test_<module>.py` - Run specific test module
|
||||||
|
- `uv run pytest -k <test_name>` - Run tests matching pattern
|
||||||
|
|
||||||
|
### Code Quality
|
||||||
|
- `uv run ruff check` - Run linter checks
|
||||||
|
- `uv run ruff check --fix` - Auto-fix linting issues
|
||||||
|
- `uv run ruff format` - Format code
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
### Core Structure
|
||||||
|
The application follows a modular architecture with clear separation of concerns:
|
||||||
|
|
||||||
|
```
|
||||||
|
src/hosts/
|
||||||
|
├── core/ # Core business logic
|
||||||
|
│ ├── config.py # Configuration management
|
||||||
|
│ ├── manager.py # HostsManager with sudo permission handling
|
||||||
|
│ ├── models.py # Data models (HostEntry, HostsFile)
|
||||||
|
│ └── parser.py # Hosts file parsing/serialization
|
||||||
|
├── tui/ # Textual UI components
|
||||||
|
│ ├── app.py # Main application class (HostsManagerApp)
|
||||||
|
│ └── ... # Various handlers and modals
|
||||||
|
└── main.py # Entry point
|
||||||
|
```
|
||||||
|
|
||||||
|
### Key Components
|
||||||
|
|
||||||
|
**HostsManager** (`src/hosts/core/manager.py:106`): Central component that handles all edit operations with proper sudo permission management. Key features:
|
||||||
|
- Permission management through PermissionManager class
|
||||||
|
- Edit mode with backup creation and restoration
|
||||||
|
- Safe file operations with validation
|
||||||
|
- Entry manipulation (toggle, move, update)
|
||||||
|
|
||||||
|
**HostsParser** (`src/hosts/core/parser.py`): Handles reading/writing hosts files and maintains original formatting.
|
||||||
|
|
||||||
|
**HostsManagerApp** (`src/hosts/tui/app.py:26`): Main Textual application providing the two-pane interface with reactive state management.
|
||||||
|
|
||||||
|
### Permission Model
|
||||||
|
The application operates in two modes:
|
||||||
|
- **Read-only mode** (default): Safe browsing of hosts file entries
|
||||||
|
- **Edit mode**: Requires sudo permissions for modifications, includes automatic backup creation
|
||||||
|
|
||||||
|
### Memory Bank Integration
|
||||||
|
This project uses Cline's Memory Bank system (see `.clinerules`) for maintaining project context across sessions. Key files are in `memory-bank/` directory.
|
||||||
|
|
||||||
|
## Development Guidelines
|
||||||
|
|
||||||
|
### Testing Approach
|
||||||
|
- Tests are located in `tests/` directory
|
||||||
|
- Uses pytest framework
|
||||||
|
- Test individual modules with `uv run pytest tests/test_<module>.py`
|
||||||
|
|
||||||
|
### Code Style
|
||||||
|
- Uses ruff for both linting and formatting
|
||||||
|
- Configuration is embedded in `pyproject.toml`
|
||||||
|
- Run `uv run ruff check --fix && uv run ruff format` before committing
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
- **Textual**: TUI framework for the interface
|
||||||
|
- **pytest**: Testing framework
|
||||||
|
- **ruff**: Linting and code formatting
|
||||||
|
- Managed via uv with dependencies declared in `pyproject.toml`
|
||||||
|
|
||||||
|
### File Permissions
|
||||||
|
When working on permission-related code, be aware that the application needs to handle sudo operations safely. The PermissionManager class in `src/hosts/core/manager.py:17` manages this complexity.
|
Loading…
Add table
Add a link
Reference in a new issue