release-tracker

๐Ÿ” Watchers Guide

Release Tracker supports 12 different watchers to track releases across various platforms and package managers.

๐Ÿ“Š Available Watchers

๐Ÿ™ GitHub

Track releases from GitHub repositories.

Type: github Repo Format: owner/repository

watchers:
  github:
    type: github
    config:
      token: "${GH_TOKEN}"  # Optional but recommended for rate limits

repos:
  - name: "Docker"
    repo: "moby/moby"
    watcher: github

๐ŸฆŠ GitLab

Track releases from GitLab repositories.

Type: gitlab Repo Format: namespace/project

watchers:
  gitlab:
    type: gitlab
    config:
      token: "${GITLAB_TOKEN}"  # Optional
      base_url: "https://gitlab.com/api/v4"  # Optional, for self-hosted

repos:
  - name: "GitLab CE"
    repo: "gitlab-org/gitlab-foss"
    watcher: gitlab

๐Ÿ PyPI

Track Python packages from the Python Package Index.

Type: pypi Repo Format: package-name

watchers:
  pypi:
    type: pypi
    config: {}

repos:
  - name: "Django"
    repo: "django"
    watcher: pypi
  - name: "Requests"
    repo: "requests"
    watcher: pypi

๐Ÿณ Docker Hub

Track container images from Docker Hub.

Type: dockerhub Repo Format: namespace/repository or library/repository (official images)

watchers:
  dockerhub:
    type: dockerhub
    config:
      token: "${DOCKER_TOKEN}"  # Optional

repos:
  - name: "Nginx"
    repo: "library/nginx"  # Official image
    watcher: dockerhub
  - name: "Custom App"
    repo: "mycompany/myapp"  # Custom image
    watcher: dockerhub

๐Ÿ“ฆ NPM

Track Node.js packages from the NPM registry.

Type: npm Repo Format: package-name or @scope/package-name

watchers:
  npm:
    type: npm
    config:
      registry_url: "https://registry.npmjs.org"  # Optional

repos:
  - name: "Express"
    repo: "express"
    watcher: npm
  - name: "TypeScript Types"
    repo: "@types/node"  # Scoped package
    watcher: npm

โ˜• Maven Central

Track Java/JVM libraries from Maven Central.

Type: maven Repo Format: groupId:artifactId

watchers:
  maven:
    type: maven
    config:
      base_url: "https://search.maven.org"  # Optional

repos:
  - name: "Spring Boot"
    repo: "org.springframework.boot:spring-boot-starter"
    watcher: maven
  - name: "Jackson Core"
    repo: "com.fasterxml.jackson.core:jackson-core"
    watcher: maven

๐Ÿบ Homebrew

Track macOS packages from Homebrew.

Type: homebrew Repo Format: formula-name or homebrew/cask/app-name

watchers:
  homebrew:
    type: homebrew
    config:
      api_url: "https://formulae.brew.sh/api"  # Optional

repos:
  - name: "Git"
    repo: "git"  # Formula
    watcher: homebrew
  - name: "Docker Desktop"
    repo: "homebrew/cask/docker"  # Cask
    watcher: homebrew

๐Ÿ“ฑ APKMirror

Track Android APKs from APKMirror.

Type: apkmirror Repo Format: package.name

watchers:
  apkmirror:
    type: apkmirror
    config:
      auth_token: "YXBpLWFwa3VwZGF0ZXI6cm01cmNmcnVVakt5MDRzTXB5TVBKWFc4"
      user_agent: "release-tracker"
      api_url: "https://www.apkmirror.com/wp-json/apkm/v1/app_exists/"

repos:
  - name: "WhatsApp"
    repo: "com.whatsapp"
    watcher: apkmirror

๐Ÿ“ฑ APKPure

Track Android APKs from APKPure.

Type: apkpure Repo Format: package.name

watchers:
  apkpure:
    type: apkpure
    config:
      user_agent: "release-tracker"

repos:
  - name: "Signal"
    repo: "org.thoughtcrime.securesms"
    watcher: apkpure

๐Ÿ“ฑ F-Droid

Track open-source Android apps from F-Droid.

Type: fdroid Repo Format: package.name

watchers:
  fdroid:
    type: fdroid
    config:
      base_url: "https://f-droid.org/en/packages/"  # Optional
      repo_url: "https://f-droid.org/repo/"  # Optional

repos:
  - name: "Termux"
    repo: "com.termux"
    watcher: fdroid

๐ŸŽฏ Complete Example Configuration

watchers:
  github:
    type: github
    config:
      token: "${GH_TOKEN}"

  dockerhub:
    type: dockerhub
    config:
      token: "${DOCKER_TOKEN}"

  npm:
    type: npm
    config: {}

  maven:
    type: maven
    config: {}

  pypi:
    type: pypi
    config: {}

repos:
  # Source code repositories
  - name: "Kubernetes"
    repo: "kubernetes/kubernetes"
    watcher: github
    config:
      upload_assets: false

  # Container images
  - name: "Redis"
    repo: "library/redis"
    watcher: dockerhub
    config:
      upload_assets: false

  # Package managers
  - name: "React"
    repo: "react"
    watcher: npm
    config:
      upload_assets: false

  - name: "Spring Framework"
    repo: "org.springframework:spring-core"
    watcher: maven
    config:
      upload_assets: false

  - name: "Flask"
    repo: "flask"
    watcher: pypi
    config:
      upload_assets: true

persistence:
  type: redis
  config:
    host: "localhost"
    port: 6379
    db: 0

notifiers:
  - type: apprise
    config:
      url: "${APPRISE_URL}"

๐Ÿ”ง Watcher Configuration Options

Common Configuration

Platform-Specific Options

GitLab

NPM

Maven Central

Homebrew

APKMirror

F-Droid

๐Ÿš€ Usage Tips

Rate Limiting

Asset Management

Repository Naming

Platform Coverage

With these 12 watchers, you can track releases across:

๐Ÿ”ฎ Future Watchers

Potential watchers that could be added:

๐Ÿ“ Contributing New Watchers

To add a new watcher:

  1. Create a new file in watcher/ directory
  2. Inherit from Watcher base class
  3. Implement fetch_latest_release() method
  4. Add to utils.py in build_watcher() function
  5. Update documentation

Example skeleton:

from watcher.base import ReleaseAsset, ReleaseInfo, Watcher

class NewPlatformWatcher(Watcher):
    def fetch_latest_release(self, repo: str) -> ReleaseInfo:
        # Implement API call and parsing logic
        return ReleaseInfo(tag=version, assets=assets)