tauri-plugin-ota-self-update 0.2.1

Self-hosted OTA updates for Tauri v2 web assets.
Documentation
name: "Tauri OTA Publisher"
description: "Universal self-hosted OTA artifact publishing for Tauri apps (GitHub Releases, Bitbucket Downloads, S3, custom server)."
author: "s00d"
branding:
  icon: "upload-cloud"
  color: "blue"

inputs:
  mode:
    description: "Publish mode: github | bitbucket | s3 | server"
    required: true
  channel:
    description: "OTA update channel name (for example: stable, beta)"
    required: false
    default: "stable"
  version:
    description: "OTA version string used in archive naming"
    required: true
  dist_dir:
    description: "Directory containing built frontend artifacts"
    required: false
    default: "dist"
  out_dir:
    description: "Temporary output directory for manifest/archive"
    required: false
    default: ".ota-out"
  base_url:
    description: "Base URL for generated archive URL and server mode upload target"
    required: false
    default: ""
  notes:
    description: "Release notes text saved in generated manifest"
    required: false
    default: ""
  target_repo:
    description: "Target repository in owner/repo format (for github mode)"
    required: false
    default: ""
  release_tag:
    description: "Release tag to create/upload (github mode). Default: ota-<version>"
    required: false
    default: ""
  github_token:
    description: "GitHub token with releases write scope (github mode)"
    required: false
    default: ""
  bitbucket_repo:
    description: "Bitbucket repository in workspace/repo format (bitbucket mode)"
    required: false
    default: ""
  bitbucket_token:
    description: "Bitbucket bearer token (bitbucket mode, optional alternative to username/app password)"
    required: false
    default: ""
  bitbucket_username:
    description: "Bitbucket username (bitbucket mode, used with bitbucket_app_password)"
    required: false
    default: ""
  bitbucket_app_password:
    description: "Bitbucket app password (bitbucket mode, used with bitbucket_username)"
    required: false
    default: ""
  s3_bucket:
    description: "S3 bucket name (s3 mode)"
    required: false
    default: ""
  server_token:
    description: "Bearer token used in server mode"
    required: false
    default: ""
  manifest_signature:
    description: "Base64 minisign signature for manifest bytes"
    required: false
    default: ""
  archive_signature:
    description: "Base64 minisign signature for archive bytes"
    required: false
    default: ""
  dry_run:
    description: "If true, prints commands without executing uploads"
    required: false
    default: "false"
  release_status:
    description: "Release status in index: released | draft | revoked"
    required: false
    default: "released"

runs:
  using: "composite"
  steps:
    - name: Publish OTA artifacts
      shell: bash
      env:
        OTA_PUBLISH_MODE: ${{ inputs.mode }}
        OTA_CHANNEL: ${{ inputs.channel }}
        OTA_VERSION: ${{ inputs.version }}
        OTA_DIST_DIR: ${{ inputs.dist_dir }}
        OTA_OUT_DIR: ${{ inputs.out_dir }}
        OTA_BASE_URL: ${{ inputs.base_url }}
        OTA_NOTES: ${{ inputs.notes }}
        OTA_TARGET_REPO: ${{ inputs.target_repo }}
        OTA_RELEASE_TAG: ${{ inputs.release_tag }}
        OTA_GITHUB_TOKEN: ${{ inputs.github_token }}
        OTA_BITBUCKET_REPO: ${{ inputs.bitbucket_repo }}
        OTA_BITBUCKET_TOKEN: ${{ inputs.bitbucket_token }}
        OTA_BITBUCKET_USERNAME: ${{ inputs.bitbucket_username }}
        OTA_BITBUCKET_APP_PASSWORD: ${{ inputs.bitbucket_app_password }}
        OTA_S3_BUCKET: ${{ inputs.s3_bucket }}
        OTA_SERVER_TOKEN: ${{ inputs.server_token }}
        OTA_MANIFEST_SIGNATURE: ${{ inputs.manifest_signature }}
        OTA_ARCHIVE_SIGNATURE: ${{ inputs.archive_signature }}
        OTA_DRY_RUN: ${{ inputs.dry_run }}
        OTA_RELEASE_STATUS: ${{ inputs.release_status }}
      run: node "${{ github.action_path }}/scripts/ota-publish.cjs"