name: "update-tags-action"
description: "Easily create/update one or more tags in a GitHub repository."
author: "jimeh"

branding:
  icon: "tag"
  color: "blue"

inputs:
  tags:
    description: >-
      List/CSV of tags to create/update. Supports per-tag ref and annotation
      overrides using the format 'tag:ref:annotation'. Use 'tag::annotation' to
      specify an annotation with the default ref.
    required: false
  derive_from:
    description: >-
      Semver version string to derive tags from (e.g., 'v1.2.3'). When provided,
      generates tags using `derive_from_template` input. Default template will
      produce major and minor tags. (e.g., 'v1', 'v1.2')
    required: false
  derive_from_template:
    description: >-
      Handlebars template for deriving tags from the `derive_from` input. Uses
      the same format as the `tags` input, and supports the following handlebars
      placeholders: `{{prefix}}`, `{{major}}`, `{{minor}}`, `{{patch}}`,
      `{{prerelease}}`, `{{build}}`, `{{version}}`.
    required: false
    default: "{{prefix}}{{major}},{{prefix}}{{major}}.{{minor}}"
  ref:
    description: "The SHA or ref to tag. Defaults to SHA of current commit."
    required: false
    default: "${{ github.sha }}"
  when_exists:
    description: >-
      What to do if the tag already exists. Must be one of 'update', 'skip', or
      'fail'.
    required: false
    default: "update"
  annotation:
    description: >-
      Optional default annotation message for tags. If provided, creates
      annotated tags. If empty, creates lightweight tags. Can be overridden
      per-tag using the 'tag:ref:annotation' syntax in the tags input.
    required: false
    default: ""
  dry_run:
    description: >-
      If true, logs planned operations without executing them.
    required: false
    default: "false"
  github_token:
    description: "The GitHub token to use for authentication."
    required: false
    default: ${{ github.token }}

outputs:
  tags:
    description: "List of tags that were created/updated."
  created:
    description: "List of tags that were created."
  updated:
    description: "List of tags that were updated."
  skipped:
    description: "List of tags that were skipped."

runs:
  using: node24
  main: dist/index.js
