cli + tui to publish to leaflet (wip) & manage tasks, notes & watch/read lists 馃崈
charm leaflet readability golang
29
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 331 lines 4.5 kB view raw view rendered
1--- 2title: Task Automation 3sidebar_label: Taskfile 4sidebar_position: 3 5description: Using Taskfile for development workflows. 6--- 7 8# Task Automation 9 10Noteleaf uses [Task](https://taskfile.dev) to automate common development workflows. 11 12## Installation 13 14### macOS 15 16```sh 17brew install go-task/tap/go-task 18``` 19 20### Linux 21 22```sh 23sh -c "$(curl -fsSL https://taskfile.dev/install.sh)" 24``` 25 26### Go Install 27 28```sh 29go install github.com/go-task/task/v3/cmd/task@latest 30``` 31 32## Available Tasks 33 34View all tasks: 35 36```sh 37task 38# or 39task --list 40``` 41 42## Common Tasks 43 44### Build Commands 45 46**task build** - Quick development build 47 48```sh 49task build 50``` 51 52Output: `./tmp/noteleaf` 53 54**task build:dev** - Build with version information 55 56```sh 57task build:dev 58``` 59 60Includes git commit hash and build date. 61 62**task build:rc** - Release candidate build 63 64```sh 65git tag v1.0.0-rc1 66task build:rc 67``` 68 69Requires git tag with `-rc` suffix. 70 71**task build:prod** - Production build 72 73```sh 74git tag v1.0.0 75task build:prod 76``` 77 78Requires clean semver tag and no uncommitted changes. 79 80### Testing Commands 81 82**task test** - Run all tests 83 84```sh 85task test 86``` 87 88**task coverage** - Generate HTML coverage report 89 90```sh 91task coverage 92open coverage.html # View report 93``` 94 95**task cov** - Terminal coverage summary 96 97```sh 98task cov 99``` 100 101**task check** - Lint and coverage 102 103```sh 104task check 105``` 106 107Runs linters and generates coverage report. 108 109### Development Commands 110 111**task dev** - Full development workflow 112 113```sh 114task dev 115``` 116 117Runs: 118 1191. `task clean` 1202. `task lint` 1213. `task test` 1224. `task build` 123 124**task lint** - Run linters 125 126```sh 127task lint 128``` 129 130Runs `go vet` and `go fmt`. 131 132**task run** - Build and run 133 134```sh 135task run 136``` 137 138Builds then executes the binary. 139 140### Maintenance Commands 141 142**task clean** - Remove build artifacts 143 144```sh 145task clean 146``` 147 148Removes: 149 150- `./tmp/` directory 151- Coverage files 152 153**task deps** - Download and tidy dependencies 154 155```sh 156task deps 157``` 158 159Runs `go mod download` and `go mod tidy`. 160 161### Documentation Commands 162 163**task docs:generate** - Generate all documentation 164 165```sh 166task docs:generate 167``` 168 169Generates: 170 171- Docusaurus docs (website/docs/manual) 172- Man pages (docs/manual) 173 174**task docs:man** - Generate man pages 175 176```sh 177task docs:man 178``` 179 180**task docs:serve** - Start documentation server 181 182```sh 183task docs:serve 184``` 185 186Starts Docusaurus development server at <http://localhost:3000>. 187 188### Version Commands 189 190**task version:show** - Display version info 191 192```sh 193task version:show 194``` 195 196Shows: 197 198- Git tag 199- Git commit 200- Git describe output 201- Build date 202 203**task version:validate** - Validate git tag 204 205```sh 206task version:validate 207``` 208 209Checks tag format for releases. 210 211### Utility Commands 212 213**task status** - Show Go environment 214 215```sh 216task status 217``` 218 219Displays: 220 221- Go version 222- Module information 223- Dependencies 224 225## Taskfile Variables 226 227Variables injected during build: 228 229```yaml 230BINARY_NAME: noteleaf 231BUILD_DIR: ./tmp 232VERSION_PKG: github.com/stormlightlabs/noteleaf/internal/version 233GIT_COMMIT: $(git rev-parse --short HEAD) 234GIT_TAG: $(git describe --tags --exact-match) 235BUILD_DATE: $(date -u +"%Y-%m-%dT%H:%M:%SZ") 236``` 237 238## Task Dependencies 239 240Some tasks automatically trigger others: 241 242```sh 243task run 244# Automatically runs: task build 245``` 246 247```sh 248task dev 249# Runs in sequence: 250# 1. task clean 251# 2. task lint 252# 3. task test 253# 4. task build 254``` 255 256## Custom Workflows 257 258### Pre-commit Workflow 259 260```sh 261task lint && task test 262``` 263 264### Release Preparation 265 266```sh 267task check && \ 268git tag v1.0.0 && \ 269task build:prod && \ 270./tmp/noteleaf version 271``` 272 273### Documentation Preview 274 275```sh 276task docs:generate 277task docs:serve 278``` 279 280### Full CI Simulation 281 282```sh 283task clean && \ 284task deps && \ 285task lint && \ 286task test && \ 287task coverage && \ 288task build:dev 289``` 290 291## Taskfile Structure 292 293Location: `Taskfile.yml` (project root) 294 295Key sections: 296 297- **vars**: Build variables and git information 298- **tasks**: Command definitions with descriptions 299- **deps**: Task dependencies 300- **preconditions**: Validation before execution 301 302## Configuration 303 304Customize via `Taskfile.yml` or environment variables: 305 306```yaml 307vars: 308 BINARY_NAME: noteleaf 309 BUILD_DIR: ./tmp 310``` 311 312Override at runtime: 313 314```sh 315BINARY_NAME=custom-noteleaf task build 316``` 317 318## Why Task Over Make? 319 320- Cross-platform (Windows, macOS, Linux) 321- YAML syntax (more readable than Makefile) 322- Built-in variable interpolation 323- Better dependency management 324- Precondition validation 325- Native Go integration 326 327## Further Reading 328 329- [Task Documentation](https://taskfile.dev) 330- [Taskfile Schema](https://taskfile.dev/api/) 331- Project Taskfile: `Taskfile.yml`