Check PyPI Version #270
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Check PyPI Version | |
| on: | |
| schedule: | |
| # Run once a day at midnight UTC | |
| - cron: '0 0 * * *' | |
| workflow_dispatch: # Allows manual triggering | |
| jobs: | |
| check_version: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ["3.14", "3.13", "3.12", "3.11", "3.10"] | |
| steps: | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install aider-ce | |
| run: pip install aider-ce | |
| - name: Get installed cecli version | |
| id: installed_version | |
| run: | | |
| set -x # Enable debugging output | |
| cecli_version_output=$(aider-ce --version) | |
| if [ $? -ne 0 ]; then | |
| echo "Error: 'cecli --version' command failed." | |
| exit 1 | |
| fi | |
| echo "Raw cecli --version output: $cecli_version_output" | |
| # Extract version number (format X.Y.Z) | |
| version_num=$(echo "$cecli_version_output" | grep -oP '\d+\.\d+\.\d+') | |
| # Check if grep found anything | |
| if [ -z "$version_num" ]; then | |
| echo "Error: Could not extract version number using grep -oP '\d+\.\d+\.\d+' from output: $cecli_version_output" | |
| exit 1 | |
| fi | |
| echo "Extracted version number: $version_num" | |
| echo "version=$version_num" >> $GITHUB_OUTPUT | |
| - name: Check out code | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 # Fetch all history for all tags | |
| - name: Get latest tag | |
| id: latest_tag | |
| run: | | |
| set -x # Enable debugging output | |
| # Fetch all tags from remote just in case | |
| git fetch --tags origin main | |
| # Get the latest tag that strictly matches vX.Y.Z (no suffixes like .dev) | |
| # List all tags, sort by version descending, filter for exact pattern, take the first one | |
| latest_tag=$(git tag --sort=-v:refname | grep -P '^v\d+\.\d+\.\d+$' | head -n 1) | |
| if [ -z "$latest_tag" ]; then | |
| echo "Error: Could not find any tags matching the pattern '^v\d+\.\d+\.\d+$'" | |
| exit 1 | |
| fi | |
| echo "Latest non-dev tag: $latest_tag" | |
| # Remove 'v' prefix for comparison | |
| tag_num=${latest_tag#v} | |
| echo "Extracted tag number: $tag_num" | |
| echo "tag=$tag_num" >> $GITHUB_OUTPUT | |
| - name: Compare versions | |
| run: | | |
| echo "Installed version: ${{ steps.installed_version.outputs.version }}" | |
| echo "Latest tag version: ${{ steps.latest_tag.outputs.tag }}" | |
| if [ "${{ steps.installed_version.outputs.version }}" != "${{ steps.latest_tag.outputs.tag }}" ]; then | |
| echo "Error: Installed cecli version (${{ steps.installed_version.outputs.version }}) does not match the latest tag (${{ steps.latest_tag.outputs.tag }})." | |
| exit 1 | |
| fi | |
| echo "Versions match." |