71 lines
1.8 KiB
Markdown
71 lines
1.8 KiB
Markdown
## Contributing
|
|
|
|
Thanks for helping improve Cameradar.
|
|
Please keep changes focused and aligned with the project goals.
|
|
|
|
## Development setup
|
|
|
|
- Go 1.25 or later
|
|
- Docker (optional, for container testing)
|
|
|
|
Clone the repo and install dependencies using Go modules.
|
|
|
|
```bash
|
|
go mod download
|
|
```
|
|
|
|
## Run tests
|
|
|
|
```bash
|
|
make test
|
|
```
|
|
|
|
## Formatting and linting
|
|
|
|
Keep code idiomatic and consistent with existing style.
|
|
By default, follow the [Uber Go Style Guide](https://github.com/uber-go/guide) and the guidelines from [Effective Go](https://go.dev/doc/effective_go).
|
|
|
|
```bash
|
|
make fmt
|
|
```
|
|
|
|
### Dependency for linting
|
|
|
|
* golangci-lint
|
|
* see current version defined in `.github/workflows/test.yaml` at `jobs.tests.steps.["Run linter"]`
|
|
* configured in `.golangci.yml`
|
|
|
|
```bash
|
|
make lint
|
|
```
|
|
|
|
## Commit messages and PR titles
|
|
|
|
Use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) for commit messages and pull request titles.
|
|
|
|
- Use the format: `type: subject`
|
|
- Write the subject in imperative mood: `add`, `update`, `remove`, `fix`, `refactor`
|
|
- Do not use gerunds in subjects: avoid `adding`, `updating`, `removing`
|
|
|
|
Examples:
|
|
|
|
- `feat: add RTSP timeout flag`
|
|
- `fix: remove duplicate progress line`
|
|
- `docs: update commit message guidelines`
|
|
|
|
## Reporting issues
|
|
|
|
Use the issue template in [.github/ISSUE_TEMPLATE.md](.github/ISSUE_TEMPLATE.md).
|
|
Include the version, environment, and repro steps.
|
|
Only scan authorized targets.
|
|
|
|
## Pull requests
|
|
|
|
1. Create a feature branch from `master`.
|
|
2. Keep PRs focused and small.
|
|
3. Update documentation when behavior changes.
|
|
4. Add or update tests when possible.
|
|
5. Ensure `make test` passes.
|
|
6. Try to bring as much test coverage as possible with your changes.
|
|
7. Use a Conventional Commit-style PR title with an imperative subject.
|