Skip to content

Latest commit

 

History

History
122 lines (93 loc) · 3.32 KB

File metadata and controls

122 lines (93 loc) · 3.32 KB

Contributing

Thanks for your interest in contributing to asc cli!

Development Setup

Requirements:

  • Go 1.26+

Clone and build:

git clone https://github.com/rudrankriyam/App-Store-Connect-CLI.git
cd App-Store-Connect-CLI
make build

Run tests:

go test ./...

Optional tooling:

make tools   # installs gofumpt + golangci-lint
make lint    # uses golangci-lint if installed, else go vet
make format  # gofmt + gofumpt (requires gofumpt; install with make tools)

Integration Tests (Opt-in)

Integration tests hit the real App Store Connect API and are skipped by default. Set credentials in your environment and run:

export ASC_KEY_ID="YOUR_KEY_ID"
export ASC_ISSUER_ID="YOUR_ISSUER_ID"
export ASC_PRIVATE_KEY_PATH="/path/to/AuthKey.p8"
export ASC_APP_ID="YOUR_APP_ID"

make test-integration

Headless alternative (write the key to a temp file at runtime):

export ASC_PRIVATE_KEY_B64="BASE64_KEY"

Local API Testing (Optional)

If you have App Store Connect API credentials, you can run real API calls locally:

export ASC_KEY_ID="YOUR_KEY_ID"
export ASC_ISSUER_ID="YOUR_ISSUER_ID"
export ASC_PRIVATE_KEY_PATH="/path/to/AuthKey.p8"
export ASC_APP_ID="YOUR_APP_ID"

asc feedback --app "$ASC_APP_ID"
asc crashes --app "$ASC_APP_ID"
asc reviews --app "$ASC_APP_ID"

Credentials are stored in the system keychain when available, with a config fallback at ~/.asc/config.json (restricted permissions). A repo-local ./.asc/config.json is also supported. Do not commit secrets.

Local Validation

Run this checklist before opening a PR:

make tools               # Install gofumpt + golangci-lint
make format              # Format code
make lint                # Lint code
make check-command-docs  # Verify command docs are up to date
ASC_BYPASS_KEYCHAIN=1 make test  # Run tests (bypasses keychain)
make build               # Build binary
./asc --help             # Smoke-test the binary

Pull Request Guidelines

  • Keep PRs small and focused.
  • Add or update tests for new behavior.
  • Update README.md if behavior or scope changes.
  • Avoid committing any credentials or .p8 files.

Security

If you find a security issue, please report it responsibly by opening a private issue or contacting the maintainer directly.

Wall of Apps

Wall content is generated by make update-wall-of-apps (Go tool at tools/update-wall-of-apps). The generator reads docs/wall-of-apps.json and updates the Wall snippet in README.md.

To add your app:

  1. Fork the repo
  2. Run: make generate app APP="Your App Name" LINK="https://apps.apple.com/app/id1234567890" CREATOR="your-github-handle" PLATFORM="iOS,macOS" (this updates docs/wall-of-apps.json and syncs README.md in one step)
  3. Optional manual path: edit docs/wall-of-apps.json directly, then run make update-wall-of-apps
  4. Commit all generated changes:
    • docs/wall-of-apps.json
    • README.md
  5. Open a PR

Format:

{
  "app": "Your App Name",
  "link": "https://apps.apple.com/app/id1234567890",
  "creator": "your-github-handle",
  "platform": ["iOS"]
}

Platform values are free-form labels (for example: iOS, macOS, watchOS, tvOS, visionOS, Android, Web). If you only change the Wall table in README.md without updating docs/wall-of-apps.json, CI will fail the Wall generation check.