Thank you for your interest in contributing to gpd! This document provides guidelines and information about contributing.
Please be respectful and considerate in all interactions. We're all here to build something useful together.
Before submitting a bug report:
- Check existing issues to avoid duplicates
- Use the latest version of gpd
- Collect relevant information (version, OS, error messages)
When reporting bugs, include:
- gpd version (
gpd version --pretty) - Operating system and version
- Steps to reproduce the issue
- Expected vs actual behavior
- Any error messages (with sensitive data redacted)
Feature requests are welcome! Please:
- Check if the feature has already been requested
- Describe the use case and why it would be valuable
- Consider how it fits with the project's scope (Google Play Developer API automation)
- Fork and clone the repository
- Create a branch for your changes:
git checkout -b feature/my-feature - Make your changes following the code style guidelines
- Add tests for new functionality
- Run tests locally:
make test - Commit with clear, descriptive messages
- Push and create a pull request
- Follow standard Go conventions (
gofmt,go vet) - Use meaningful variable and function names
- Add comments for exported functions and complex logic
- Keep functions focused and reasonably sized
Use clear, descriptive commit messages:
feat: add support for custom tracksfix: handle rate limiting correctlydocs: update installation instructionstest: add tests for review filtering
- Write unit tests for new functionality
- Ensure existing tests pass
- Consider edge cases and error conditions
- Use table-driven tests where appropriate
- Go 1.24 or later
- Make (optional, for convenience)
# Clone the repository
git clone https://github.com/dl-alexandre/Google-Play-Developer-CLI.git
cd Google-Play-Developer-CLI
# Download dependencies
go mod download
# Build
make build
# Run tests
make test
# Run linter
make lintgpd/
├── cmd/gpd/ # Entry point
├── internal/ # Internal packages
│ ├── api/ # Google API clients
│ ├── auth/ # Authentication
│ ├── cli/ # CLI commands
│ ├── config/ # Configuration
│ ├── edits/ # Edit transaction management
│ ├── errors/ # Error types and codes
│ ├── logging/ # Logging with PII redaction
│ ├── output/ # Output formatting
│ └── storage/ # Secure credential storage
├── pkg/version/ # Version information
└── Makefile # Build automation
# Build and run
make run ARGS="version"
# Or directly
go run ./cmd/gpd versionFor integration testing, you'll need a Google Cloud service account:
- Create a service account in Google Cloud Console
- Enable the Google Play Android Publisher API
- Add the service account to your Play Console with appropriate permissions
- Download the JSON key file
export GPD_SERVICE_ACCOUNT_KEY="$(cat /path/to/key.json)"
gpd auth statusReleases are automated via GitHub Actions when tags are pushed:
git tag v0.1.0
git push origin v0.1.0GoReleaser handles:
- Cross-platform builds (archives named
gpd_<version>_<os>_<arch>.tar.gz/.zip) - SHA-256 checksums (
gpd_<version>_checksums.txt) forinstall.shverification - GitHub releases
- Homebrew formula updates
- Scoop bucket updates
install.sh downloads those archives and verifies SHA-256 against the checksums
asset (override with GPD_INSTALL_INSECURE=1 only when you must skip verification).
Smoke-test checksum/install logic without a real release:
make test-install-checksum- Open an issue for bugs or feature requests
- Start a discussion for questions or ideas
Thank you for contributing!