tinty 0.31.0

Change the theme of your terminal, text editor and anything else with one command!
name: Create Release-Commit Git Tag
on:
  workflow_call:
    secrets:
      RELEASE:
        description: Release token
        required: true
    inputs:
      ref:
        type: string
        required: true
    outputs:
      git_tag_name:
        description: "Git release tag name"
        value: ${{ jobs.create-release-git-tag.outputs.git_tag_name }}

jobs:
  create-release-git-tag:
    runs-on: ubuntu-latest
    outputs:
      git_tag_name: ${{ steps.git_tag_name.outputs.value }}
    steps:
      - name: Checkout code
        uses: actions/checkout@v4
        with:
          token: ${{ secrets.RELEASE }}
          ref: ${{ inputs.ref }}
          fetch-depth: 0
          fetch-tags: true

      - name: Get git_tag_name from latest Cargo.toml version
        id: git_tag_name
        run: |
          VERSION=$(cargo read-manifest | jq -r ".version")
          echo "value=v$VERSION" >> $GITHUB_OUTPUT

      - name: Ensure the release tag does not exist
        run: |
          version="${{ steps.git_tag_name.outputs.value }}"
          if git rev-parse "$version" >/dev/null 2>&1; then
            echo "This git tag already exists: $version"
            exit 1
          fi

      - name: Ensure crate version doesn't already exist
        run: |
          crate_name="tinty"
          version="${{ steps.git_tag_name.outputs.value }}"
          response=$(curl -s "https://crates.io/api/v1/crates/$crate_name")
          if echo "$response" | grep -q "\"num\":\"$version\""; then
            echo "Version $version of $crate_name already exists."
            exit 1
          fi

      - name: Log sha and tag
        run: |
          echo "Git tag: ${{ steps.git_tag_name.outputs.value }}"
          echo "Commit sha: ${{ inputs.ref }}"

      - name: Add git tag to release
        run: |
          git tag ${{ steps.git_tag_name.outputs.value }} ${{ inputs.ref }}
          git push origin "refs/tags/${{ steps.git_tag_name.outputs.value }}"