-
Go 1.25.5+ from go.dev
-
GitHub Token with
reposcopeexport GITHUB_TOKEN=your_token_here
git clone https://github.com/ochairo/potions.git
cd potions
go build -o bin/potions ./cmd/potions
./bin/potions --versionCreate recipes/myapp.yml:
name: myapp
version_source:
type: github_release
repository: owner/myapp
download_url: "https://github.com/owner/myapp/releases/download/{version}/myapp-{version}{suffix}"
platforms:
darwin-x86_64:
suffix: "-darwin-x86_64.tar.gz"
binary_path: "myapp"
# ... other platformsTest:
./bin/potions validate recipes/myapp.yml
./bin/potions monitor myapp
./bin/potions build myappRequired:
name- Unique identifierversion_source-github_release,github_tag,rss, orurldownload_url- Template with{version},{os},{arch},{suffix}platforms-darwin-x86_64,darwin-arm64,linux-amd64,linux-arm64suffix- Appended to download URLbinary_path- Path to binary in archive
Optional:
description,homepage,build_commands
# GitHub Release
version_source:
type: github_release
repository: owner/repo
# GitHub Tag
version_source:
type: github_tag
repository: owner/repo
tag_pattern: "^v?[0-9]+\\.[0-9]+\\.[0-9]+$"
# RSS/URL
version_source:
type: rss
url: "https://example.com/releases.xml"
version_pattern: "Version ([0-9.]+)"See recipes/kubectl.yml, recipes/terraform.yml for reference.
- Version prefix: Don't hardcode
vindownload_url, letversion_sourcehandle it - Binary path: Extract archive locally to verify exact path
- Suffix: Match exact filename from releases page
# Unit tests
go test ./...
# Recipe testing
./bin/potions validate recipes/myapp.yml
./bin/potions monitor myapp
./bin/potions build myapp# Linting
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
golangci-lint run
# Formatting
gofmt -w .git checkout -b add-myapp
git add recipes/myapp.yml
git commit -m "Add myapp recipe"
git push origin add-myappOpen PR with:
- Recipe validation evidence
- Test results
- Platform-specific notes
- GitHub Discussions
- GitHub Issues
- Browse
recipes/for examples