name: Release

on:
  workflow_dispatch:
    inputs:
      version:
        description: 'Version'
        required: true

jobs:
  release-freezegun:
    runs-on: ubuntu-latest
    name: Release FreezeGun
    permissions:
      contents: write
      id-token: write
    env:
      VERSION: 0.0.0
    steps:
    - name: Set Env
      run: |
        echo "VERSION=${{ github.event.inputs.version }}" >> $GITHUB_ENV
    - uses: actions/checkout@v4
      with:
        fetch-depth: 0
    - name: Set up Python 3.10
      uses: actions/setup-python@v4
      with:
        python-version: "3.10"
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install wheel setuptools packaging twine build --upgrade
    - name: Verify Tag does not exist
      run: |
        ! git rev-parse ${{ env.VERSION }} || { echo "Ensure that no tag exists for ${{ env.VERSION }}" ; exit 1; }
    - name: Set version number
      run: sed -i "s/__version__ =.*/__version__ = '${{ env.VERSION }}'/g" freezegun/__init__.py
    - name: Increase patch version number
      run: |
        git config --local user.email "6058517+bblommers@users.noreply.github.com"
        git config --local user.name "FreezeGun Admin"
        git add freezegun/__init__.py
        git commit -m "Increase version number" || echo "Nothing to commit"
        git push || echo "Nothing to push"
    - name: Build Python
      run: python -m build
    - name: Publish to PyPI
      uses: pypa/gh-action-pypi-publish@release/v1
    - name: Tag version on Github
      run: |
        git tag ${{ env.VERSION }}
        git push origin ${{ env.VERSION }}
    - name: Create GitHub release
      uses: softprops/action-gh-release@v1
      with:
        name: ${{ env.VERSION }}
        tag_name: ${{ env.VERSION }}
        files: dist/*
