Initial implementation of pluginctl CLI tool

- Add comprehensive info command with plugin manifest parsing -
Implement global --plugin-path flag and PLUGINCTL_PLUGIN_PATH env var -
Add full test suite with fixtures for various plugin configurations -
Set up build system with Makefile, goreleaser, and golangci-lint -
Include development tools with pinned versions for reproducible builds

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Felipe M 2025-07-07 13:01:26 +02:00
commit fd6e4a4513
No known key found for this signature in database
GPG key ID: 52E5D65FCF99808A
21 changed files with 4949 additions and 0 deletions

129
.goreleaser.yml Normal file
View file

@ -0,0 +1,129 @@
# .goreleaser.yml
# GoReleaser configuration for pluginctl
version: 2
# Project information
project_name: pluginctl
# Before hooks
before:
hooks:
- go mod tidy
- go generate ./...
# Build configuration
builds:
- id: pluginctl
binary: pluginctl
main: ./cmd/pluginctl
env:
- CGO_ENABLED=0
goos:
- linux
- windows
- darwin
goarch:
- amd64
- arm64
- "386"
goarm:
- "6"
- "7"
ignore:
- goos: windows
goarch: "386"
- goos: windows
goarch: arm64
ldflags:
- -s -w
flags:
- -trimpath
# Archive configuration
archives:
- id: pluginctl
name_template: "{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}"
files:
- README.md
- LICENSE
# Checksums
checksum:
name_template: "checksums.txt"
algorithm: sha256
# Snapshot configuration
snapshot:
version_template: "{{ incpatch .Version }}-next"
# Changelog configuration
changelog:
sort: asc
use: github
filters:
exclude:
- "^docs:"
- "^test:"
- "^ci:"
- "^build:"
- "^style:"
- "^refactor:"
- "^chore:"
- "merge conflict"
- "Merge pull request"
- "Merge remote-tracking branch"
- "Merge branch"
groups:
- title: "New Features"
regexp: "^.*feat[(\\w)]*:+.*$"
order: 0
- title: "Bug Fixes"
regexp: "^.*fix[(\\w)]*:+.*$"
order: 1
- title: "Documentation"
regexp: "^.*docs[(\\w)]*:+.*$"
order: 2
- title: "Other Changes"
order: 999
# Release configuration
release:
github:
owner: mattermost
name: pluginctl
draft: false
prerelease: auto
name_template: "v{{ .Version }}"
header: |
## pluginctl {{ .Version }}
Welcome to this new release of pluginctl! 🎉
### What's new
footer: |
## Installation
### Binary Installation
Download the appropriate binary for your platform from the assets below.
### Package Managers
```bash
# Using go install
go install github.com/mattermost/pluginctl/cmd/pluginctl@{{ .Tag }}
```
### From Source
```bash
git clone https://github.com/mattermost/pluginctl.git
cd pluginctl
make install
```
**Full Changelog**: https://github.com/mattermost/pluginctl/compare/{{ .PreviousTag }}...{{ .Tag }}
# Announce configuration (optional)
announce:
slack:
enabled: false
discord:
enabled: false