🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
141 lines
No EOL
3.5 KiB
Markdown
141 lines
No EOL
3.5 KiB
Markdown
# pluginctl
|
|
|
|
A command-line interface tool for Mattermost plugin development. `pluginctl` provides utilities to manage, inspect, and work with Mattermost plugins from the command line.
|
|
|
|
## Installation
|
|
|
|
### From Source
|
|
|
|
```bash
|
|
git clone https://github.com/mattermost/pluginctl.git
|
|
cd pluginctl
|
|
make build
|
|
```
|
|
|
|
### Binary Installation
|
|
|
|
Download the latest binary from the [releases page](https://github.com/mattermost/pluginctl/releases).
|
|
|
|
### Package Managers
|
|
|
|
```bash
|
|
# Using go install
|
|
go install github.com/mattermost/pluginctl/cmd/pluginctl@latest
|
|
|
|
# Using Homebrew (if available)
|
|
brew install mattermost/tap/pluginctl
|
|
|
|
# Using Scoop on Windows (if available)
|
|
scoop bucket add mattermost https://github.com/mattermost/scoop-bucket.git
|
|
scoop install pluginctl
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Basic Commands
|
|
|
|
```bash
|
|
# Display plugin information
|
|
pluginctl info
|
|
|
|
# Show help and available commands
|
|
pluginctl --help
|
|
|
|
# Show version
|
|
pluginctl --version
|
|
```
|
|
|
|
### Plugin Path Configuration
|
|
|
|
`pluginctl` supports multiple ways to specify the plugin directory:
|
|
|
|
1. **Command-line flag** (highest priority):
|
|
```bash
|
|
pluginctl --plugin-path /path/to/plugin info
|
|
```
|
|
|
|
2. **Environment variable**:
|
|
```bash
|
|
export PLUGINCTL_PLUGIN_PATH=/path/to/plugin
|
|
pluginctl info
|
|
```
|
|
|
|
3. **Current directory** (default):
|
|
```bash
|
|
cd /path/to/plugin
|
|
pluginctl info
|
|
```
|
|
|
|
### Available Commands
|
|
|
|
Run `pluginctl --help` to see all available commands and options.
|
|
|
|
## Requirements
|
|
|
|
- Go 1.24.3 or later (for building from source)
|
|
- Valid Mattermost plugin directory with `plugin.json` manifest file
|
|
|
|
## Development
|
|
|
|
### Quick Start
|
|
|
|
```bash
|
|
# Set up development environment
|
|
make dev-setup
|
|
|
|
# Install dependencies
|
|
make deps
|
|
|
|
# Quick development build (format, lint, build)
|
|
make dev
|
|
|
|
# Run tests and checks before committing
|
|
make check-changes
|
|
```
|
|
|
|
### Key Make Targets
|
|
|
|
- `make dev` - Quick development build
|
|
- `make check-changes` - Validate changes (lint, security, test)
|
|
- `make test` - Run tests
|
|
- `make help` - Show all available targets
|
|
|
|
See `make help` for the complete list of available targets.
|
|
|
|
### Adding New Commands
|
|
|
|
1. Create a new command file (e.g., `build.go`) in the root directory
|
|
2. Implement the command following existing patterns
|
|
3. Register the command in `cmd/pluginctl/main.go`
|
|
4. Update the help text
|
|
|
|
See [CLAUDE.md](CLAUDE.md) for detailed architecture guidelines.
|
|
|
|
## Contributing
|
|
|
|
We welcome contributions to `pluginctl`! Please see the [CLAUDE.md](CLAUDE.md) file for architecture guidelines and development patterns.
|
|
|
|
### Code Style
|
|
|
|
- Follow Go best practices and conventions
|
|
- Use the official Mattermost model types from `github.com/mattermost/mattermost/server/public/model`
|
|
- Maintain separation between CLI framework and command implementation
|
|
- Include comprehensive error handling with descriptive messages
|
|
|
|
## License
|
|
|
|
This project is licensed under the Apache 2.0 License - see the [LICENSE](LICENSE) file for details.
|
|
|
|
## Related Projects
|
|
|
|
- [Mattermost Plugin Developer Documentation](https://developers.mattermost.com/integrate/plugins/)
|
|
- [Mattermost Plugin Starter Template](https://github.com/mattermost/mattermost-plugin-starter-template)
|
|
- [Mattermost Server](https://github.com/mattermost/mattermost-server)
|
|
|
|
## Support
|
|
|
|
For questions, issues, or feature requests, please:
|
|
|
|
1. Check the [issues](https://github.com/mattermost/pluginctl/issues) page
|
|
2. Create a new issue if your problem isn't already reported
|
|
3. Join the [Mattermost Community](https://community.mattermost.com/) for general discussion |