Thank you for your interest in contributing to Presto! This document provides guidelines and instructions for contributing.
Be respectful, inclusive, and professional in all interactions.
- Check if the bug has already been reported in Issues
- If not, create a new issue with:
- Clear title and description
- Steps to reproduce
- Expected vs actual behavior
- Your environment (OS, Go version, Presto version)
- Relevant logs or error messages
- Check Discussions for similar ideas
- Create a new discussion or issue explaining:
- The problem you're trying to solve
- Your proposed solution
- Why it would benefit Presto users
-
Fork the repository
git clone https://github.com/aras/presto.git cd presto -
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
- Write clear, documented code
- Follow Go best practices
- Add tests for new functionality
- Update documentation as needed
-
Test your changes
make test make build -
Commit with clear messages
git commit -m "feat: add awesome new feature"Use conventional commits:
feat:- New featurefix:- Bug fixdocs:- Documentation changesrefactor:- Code refactoringtest:- Adding testschore:- Maintenance tasks
-
Push and create PR
git push origin feature/your-feature-name
- Go 1.21 or higher
- Make
- Git
# Clone the repository
git clone https://github.com/aras/presto.git
cd presto
# Install dependencies
make deps
# Build
make build
# Run tests
make test
# Run Presto
./bin/presto --versionpresto/
├── cmd/presto/ # CLI entry point
├── internal/
│ ├── parser/ # composer.json/lock parser
│ ├── packagist/ # Packagist API client
│ ├── resolver/ # Dependency resolution
│ ├── downloader/ # Parallel package downloader
│ ├── autoload/ # Autoload file generator
│ └── security/ # Security vulnerability scanner
├── examples/ # Example projects
├── .github/ # GitHub Actions workflows
└── Makefile # Build commands
- Follow Effective Go
- Use
gofmtfor formatting - Run
golangci-lintbefore committing - Write clear comments for exported functions
- Keep functions small and focused
- Write unit tests for new code
- Aim for >80% code coverage
- Test edge cases and error conditions
- Use table-driven tests where appropriate
- Update README.md for user-facing changes
- Add godoc comments for exported functions
- Update CHANGELOG.md for notable changes
Releases are automated via GitHub Actions:
- Update version in
cmd/presto/main.go - Update CHANGELOG.md
- Create and push a tag:
git tag -a v0.2.0 -m "Release v0.2.0" git push origin v0.2.0 - GitHub Actions will build and create the release
- Open a Discussion
- Join our community chat
- Email: presto@example.com
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to Presto! 🎵⚡