mirror of
https://github.com/tw93/Mole.git
synced 2026-02-04 19:09:43 +00:00
84 lines
1.8 KiB
Markdown
84 lines
1.8 KiB
Markdown
# Contributing to Mole
|
|
|
|
## Setup
|
|
|
|
```bash
|
|
# Install development tools
|
|
brew install shfmt shellcheck bats-core
|
|
```
|
|
|
|
## Development
|
|
|
|
Run all quality checks before committing:
|
|
|
|
```bash
|
|
./scripts/check.sh
|
|
```
|
|
|
|
This command runs:
|
|
|
|
- Code formatting check
|
|
- ShellCheck linting
|
|
- Unit tests
|
|
|
|
Individual commands:
|
|
|
|
```bash
|
|
# Format code
|
|
./scripts/format.sh
|
|
|
|
# Run tests only
|
|
./tests/run.sh
|
|
```
|
|
|
|
## Code Style
|
|
|
|
- Bash 3.2+ compatible
|
|
- 4 spaces indent
|
|
- Use `set -euo pipefail`
|
|
- Quote all variables
|
|
- BSD commands not GNU
|
|
|
|
Config: `.editorconfig` and `.shellcheckrc`
|
|
|
|
## Requirements
|
|
|
|
- macOS 10.14 or newer, works on Intel and Apple Silicon
|
|
- Default macOS Bash 3.2+ plus administrator privileges for cleanup tasks
|
|
- Install Command Line Tools with `xcode-select --install` for curl, tar, and related utilities
|
|
- Go 1.24+ required when building the `mo status` or `mo analyze` TUI binaries locally
|
|
|
|
## Go Components
|
|
|
|
`mo status` and `mo analyze` use Go with Bubble Tea for interactive dashboards.
|
|
|
|
**Code organization:**
|
|
|
|
- Each module split into focused files by responsibility
|
|
- `cmd/analyze/` - Disk analyzer with 7 files under 500 lines each
|
|
- `cmd/status/` - System monitor with metrics split into 11 domain files
|
|
|
|
**Development workflow:**
|
|
|
|
- Format code with `gofmt -w ./cmd/...`
|
|
- Run `go vet ./cmd/...` to check for issues
|
|
- Build with `go build ./...` to verify all packages compile
|
|
- Build universal binaries via `./scripts/build-status.sh` and `./scripts/build-analyze.sh`
|
|
|
|
**Guidelines:**
|
|
|
|
- Keep files focused on single responsibility
|
|
- Extract constants instead of magic numbers
|
|
- Use context for timeout control on external commands
|
|
- Add comments explaining why, not what
|
|
|
|
## Pull Requests
|
|
|
|
1. Fork and create branch
|
|
2. Make changes
|
|
3. Run checks: `./scripts/check.sh`
|
|
4. Commit and push
|
|
5. Open PR
|
|
|
|
CI will verify formatting, linting, and tests.
|