closes #130 - CHANGELOG.md file for people who can view changelog from github --- `iris changelog` command: `iris changelog [version]` (e.g. iris changelog v0.5.1) `iris changelog -n 3` (see changelog of 3 latest releaseas) => `iris changelog` looks just like CHANGELOG.md, grouped headers and all. It only stops looking that way if we personally overwrite that release's description with something else => With 1-hour local cache (invalidated on updater-channel change), `--refresh` flag to bypass, graceful fallback to stale cache on GitHub rate-limiting --- - New auto update config ```toml # 0 = off (default, notify only), 1 = auto-install, 2 = always confirm first auto-update = 1 ``` - New just debug-changelog and just debug-autoupdate recipes (fully offline, mocked HTTP servers, no real network/config touched)
51 lines
1.2 KiB
Markdown
51 lines
1.2 KiB
Markdown
# Development guide
|
|
|
|
This document outlines the development workflow, build system, and coding conventions for contributors working on the Iris codebase.
|
|
|
|
## Environment setup
|
|
|
|
Clone the repository and sync dependencies:
|
|
|
|
```bash
|
|
git clone https://github.com/versenilvis/iris.git
|
|
cd iris
|
|
go mod tidy
|
|
```
|
|
|
|
## Modular `just` command runner
|
|
|
|
We use `just` as our primary command runner. Recipes are organized into modular files under `justfiles/`:
|
|
|
|
- `justfiles/build.just` (`[build]` group): `build`, `optimized-build`, `build-release <version>`
|
|
- `justfiles/dev.just` (`[dev]` group): `run`, `config-init`, `reload`, `copy`
|
|
- `justfiles/test.just` (`[test]` group): `test`, `lint`, `analyze` (alias `ana`)
|
|
- `justfiles/gen.just` (`[gen]` group): `gen-docs`
|
|
- `justfiles/pkg.just` (`[pkg]` group): `pkg`
|
|
- `justfiles/debug.just` (`[debug]` group): `debug`, `debug-update`, `debug-changelog`, `debug-notify`, `debug-install`, `debug-autoupdate`
|
|
|
|
Run `just -l` to quickly view all available recipes organized by group.
|
|
|
|
## Building and testing
|
|
|
|
### Rapid hot-reload
|
|
|
|
```bash
|
|
just reload
|
|
```
|
|
|
|
### Running unit tests
|
|
|
|
```bash
|
|
just test
|
|
# OR
|
|
go test -v ./...
|
|
```
|
|
|
|
### Running linter
|
|
|
|
```bash
|
|
just lint
|
|
# OR
|
|
golangci-lint run ./...
|
|
```
|