Skip to content

feat: Add Taskfile, CI workflows, and filtered contact generation#1

Merged
dbehnke merged 7 commits intomainfrom
feature/qualityfixes
Mar 9, 2026
Merged

feat: Add Taskfile, CI workflows, and filtered contact generation#1
dbehnke merged 7 commits intomainfrom
feature/qualityfixes

Conversation

@dbehnke
Copy link
Copy Markdown
Owner

@dbehnke dbehnke commented Mar 8, 2026

Summary

This PR adds comprehensive CI/CD infrastructure using go-task (Taskfile) and automated filtered contact list generation.

Changes

Build System

  • Taskfile.yml: Modern task runner with 17+ tasks
    • task build - Build with frontend
    • task fast-build - Quick build without frontend
    • task test - Run all tests
    • task ci - Run all CI checks (fmt, vet, lint, test)
    • task generate-contacts - Generate filtered contact lists

CI/CD Workflows

  • test.yml: Runs on PRs and pushes to main

    • Matrix testing across Go 1.21 and 1.22
    • Frontend build verification
    • Code quality checks (vet, fmt, lint)
  • release.yml: Triggered on version tags (v*)

    • Builds cross-platform binaries for Linux, macOS, Windows (AMD64/ARM64)
    • Creates GitHub release with artifacts and checksums
  • generate-contacts.yml: Automated contact filtering

    • Triggers on filter file changes in filters/ directory
    • Downloads RadioID.net contacts
    • Generates filtered lists and commits results

Contact Generation

New CLI flags for --generate-contacts:

./codeplugs --generate-contacts \
  --filter-file filters/my-contacts.csv \
  --source-file user.csv \
  --output-file contacts.csv \
  --contact-format dm32uv  # or radioid (default), at890

Supported formats:

  • radioid (default): RadioID.net format
  • dm32uv: Baofeng DM32UV format
  • at890: AnyTone 890 format (quoted fields, CRLF)

Documentation

  • Updated README with Taskfile usage
  • Added filters/README.md with filter file format details
  • Example filter file in filters/example-filter.csv

Testing

  • All existing tests pass
  • Manual verification of contact generation with all 3 formats
  • CI workflows validated with act (local GitHub Actions runner)

Migration Notes

Makefile is still present for backward compatibility but marked as deprecated. Users should migrate to task commands.

dbehnke added 7 commits March 8, 2026 17:34
This commit adds comprehensive CI/CD infrastructure and contact list automation:

Build System:
- Add Taskfile.yml with 17+ tasks (build, test, lint, ci, generate-contacts)
- Modern go-task setup with smart caching and cross-platform support

CI/CD Workflows:
- test.yml: Run tests on Go 1.21/1.22, frontend build, code quality checks
- release.yml: Build cross-platform binaries (Linux, macOS, Windows, AMD64/ARM64)
- generate-contacts.yml: Automated contact filtering on filter file changes

Contact Generation:
- New CLI: --generate-contacts with --filter-file, --source-file, --output-file
- Support for 3 output formats:
  - radioid (default): RadioID.net format
  - dm32uv: Baofeng DM32UV format
  - at890: AnyTone 890 format (quoted fields)
- Taskfile task: task generate-contacts (with FORMAT= env var)

Documentation:
- Updated README with Taskfile usage and contact generation examples
- Added filters/ directory with README and example filter CSV

Closes #<issue-number>
- Update go.mod to Go 1.26.1
- Update CI workflows to use Go 1.26.1
- Add .golangci.yml with comprehensive linter configuration
- Fix unchecked errors in cmd/generate_contacts.go
- All tests pass, linting clean
- Add pre-commit hook that runs golangci-lint before each commit
- Add scripts/install-hooks.sh for easy installation
- Update README with git hooks documentation
- Hook can be bypassed with --no-verify in emergencies
- Add comprehensive project structure overview
- Document all supported radios (DB25-D, DM32UV, AnyTone 890)
- Document Taskfile workflow and available tasks
- Document CI/CD workflows and release process
- Document contact generation with all 3 formats
- Document git hooks and code quality requirements
- Update Go version to 1.26.1
- Add CLI examples for common operations
- Add brandmeister-automation.yml workflow for auto-generating contacts
- Add .goreleaser.yml for cross-platform binary releases
- Update release.yml to use GoReleaser
- Add release tasks to Taskfile
- Update documentation
- Add MIT LICENSE file required for goreleaser
- Remove SBOM generation (requires syft which isn't in CI by default)
The Go tests were failing because main.go embeds frontend/dist but
that directory wasn't being built in the test-go job. Added Bun setup
and frontend-build step before running Go tests.
@dbehnke dbehnke merged commit 226b300 into main Mar 9, 2026
3 checks passed
@dbehnke dbehnke deleted the feature/qualityfixes branch March 9, 2026 00:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant